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

# 에이전트 단건 조회

> 에이전트 1건을 조회합니다. `version=current`는 수정 가능한 현재 상태를, `production`이나 `v{n}`은 저장된 스냅샷을 반환합니다.



## OpenAPI

````yaml /api-reference/v3/openapi.json get /agents/{agent_id}
openapi: 3.1.0
info:
  title: vox.ai API
  description: >
    vox.ai API v3


    ### v3 공개 계약 규칙


    - 인증은 `Authorization: Bearer <token>` 헤더를 사용합니다. 조직 API 키를 Bearer 토큰으로
    전달합니다.

    - 요청과 응답 필드는 기본적으로 `snake_case`를 사용합니다.

    - `agent.data`는 에이전트 레지스트리와 호환되어야 하므로 `callSettings`, `toolIds`,
    `builtInTools`, `presetDynamicVariables` 같은 camelCase 필드를 유지합니다.

    - `_at`으로 끝나는 타임스탬프는 unix milliseconds입니다. 일부 입력값은 호환성을 위해 10~11자리 unix
    seconds도 허용하고 milliseconds로 정규화합니다.

    - 캠페인 통화 가능 시간은 분 단위 정수(`start_min` / `end_min`)를 사용합니다. 알림 스케줄은 `HH:MM`
    문자열(`start_time` / `end_time`)을 사용합니다.

    - 응답 객체 자신의 식별자는 `id`입니다. 다른 리소스를 참조하는 필드와 path parameter는 `agent_id`,
    `call_id`, `telephone_line_id`처럼 명시적인 이름을 사용합니다.

    - 실패 응답은 `{ "error": { "code", "message", "details" } }` 형태입니다. 가능한 경우
    `details.field`, `details.reason`, `details.allowed_values`를 함께 제공합니다.
  version: 3.0.0
servers:
  - url: https://client-api.tryvox.co/v3
    description: 운영
security: []
paths:
  /agents/{agent_id}:
    get:
      tags:
        - Agents
      summary: 에이전트 단건 조회
      description: >-
        에이전트 1건을 조회합니다. `version=current`는 수정 가능한 현재 상태를, `production`이나 `v{n}`은
        저장된 스냅샷을 반환합니다.
      operationId: getAgent
      parameters:
        - name: agent_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            description: '`agent_id`로 반환되는 에이전트 UUID입니다.'
            title: Agent Id
          description: '`agent_id`로 반환되는 에이전트 UUID입니다.'
        - name: version
          in: query
          required: false
          schema:
            type: string
            pattern: ^(current|production|v[1-9][0-9]*)$
            description: 조회할 버전 selector. "current" (default) · "production" · "v{n}".
            default: current
            title: Version
          description: 조회할 버전 selector. "current" (default) · "production" · "v{n}".
      responses:
        '200':
          description: 성공 응답
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AgentResponse'
        '400':
          description: 요청 검증 오류
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                validationError:
                  summary: 요청 검증 오류
                  value:
                    error:
                      code: VALIDATION_ERROR
                      message: Request validation failed.
                      details:
                        field: name
                        reason: must not be blank
        '401':
          description: 인증이 필요합니다.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                unauthorized:
                  summary: Bearer 토큰 누락 또는 오류
                  value:
                    error:
                      code: UNAUTHORIZED
                      message: Authentication is required.
                      details: {}
        '403':
          description: 권한이 없습니다.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                forbidden:
                  summary: 권한이 없습니다.
                  value:
                    error:
                      code: FORBIDDEN
                      message: Permission denied.
                      details: {}
        '404':
          description: 리소스를 찾을 수 없습니다.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                notFound:
                  summary: 리소스를 찾을 수 없습니다.
                  value:
                    error:
                      code: RESOURCE_NOT_FOUND
                      message: Resource not found.
                      details:
                        resource: agent
        '409':
          description: 충돌이 발생했습니다.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                conflict:
                  summary: 상태 충돌이 발생했습니다.
                  value:
                    error:
                      code: CONFLICT
                      message: The requested operation conflicts with current state.
                      details:
                        current_status: draft
        '429':
          description: 요청 한도를 초과했습니다.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                rateLimited:
                  summary: 요청 한도를 초과했습니다.
                  value:
                    error:
                      code: RATE_LIMIT_EXCEEDED
                      message: Too many requests.
                      details:
                        limit: 5
                        window_seconds: 1
        '500':
          description: 서버 내부 오류가 발생했습니다.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                internalError:
                  summary: 서버 내부 오류가 발생했습니다.
                  value:
                    error:
                      code: INTERNAL_ERROR
                      message: Internal server error.
                      details: {}
        '503':
          description: 서비스를 일시적으로 사용할 수 없습니다.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                serviceUnavailable:
                  summary: 서비스를 일시적으로 사용할 수 없습니다.
                  value:
                    error:
                      code: SERVICE_UNAVAILABLE
                      message: Service temporarily unavailable.
                      details: {}
      security:
        - BearerAuth: []
components:
  schemas:
    AgentResponse:
      properties:
        agent_id:
          description: 에이전트 UUID입니다.
          format: uuid
          title: Agent Id
          type: string
        name:
          type: string
          title: Name
          description: 에이전트 이름입니다. 버전 스냅샷을 조회하더라도 현재 최상위 이름을 반환합니다.
        type:
          type: string
          enum:
            - single_prompt
            - flow
          title: Type
          description: 에이전트 유형입니다. `single_prompt` 또는 `flow` 값을 사용합니다.
        created_at:
          type: integer
          title: Created At
          description: 리소스 생성 시각입니다. unix milliseconds 형식입니다.
        updated_at:
          type: integer
          title: Updated At
          description: 리소스 마지막 수정 시각입니다. unix milliseconds 형식입니다.
        production_version:
          anyOf:
            - type: string
              pattern: ^v[1-9][0-9]*$
              examples:
                - v1
            - type: 'null'
          title: Production Version
          description: 현재 게시된 production 버전입니다. 없으면 null입니다.
        data:
          $ref: '#/components/schemas/AgentDataResponse'
          description: >-
            선택된 에이전트 설정 스냅샷입니다. 구조는 `agent-schema/agent-data-response`에 공개되어
            있습니다.
        flow_data:
          anyOf:
            - $ref: '#/components/schemas/FlowData'
            - type: 'null'
          description: >-
            지원 종료 예정 필드입니다. 에이전트의 플로우 그래프를 예전 형식으로 담고 있으며, 기존 호환을 위해 유지됩니다. 읽기
            전용이고, flow 에이전트에서는 값이 있고 single_prompt 에이전트에서는 null입니다. 새 통합은
            `flow`를 사용하세요. 이 필드는 지원 종료 기간 이후 제거됩니다.
          deprecated: true
        flow:
          anyOf:
            - $ref: '#/components/schemas/FlowOutput'
            - type: 'null'
          description: >-
            에이전트의 플로우 그래프입니다. `nodes`를 `edges`로 연결하고, 각 edge가 분기 조건을 가집니다. flow
            에이전트에서는 값이 있고 single_prompt 에이전트에서는 null입니다. 지원 종료 예정인 `flow_data`
            대신 이 필드를 사용하세요. 정확한 형태는 `flow-schema/flow-data` 스키마 엔드포인트에 공개됩니다.
        version:
          anyOf:
            - $ref: '#/components/schemas/AgentVersionMeta'
            - type: 'null'
          description: 스냅샷 조회 시에만 populated (version=v{n} 또는 production).
      type: object
      required:
        - agent_id
        - name
        - type
        - created_at
        - updated_at
      title: AgentResponse
      description: |-
        에이전트 단건 조회 응답. Summary + data·flow·flow_data·version.

        create/update 응답은 `AgentMutationResponse` (validator 메시지 포함).
    ErrorResponse:
      type: object
      required:
        - error
      title: ErrorResponse
      description: 모든 실패 응답에서 사용하는 v3 error envelope입니다.
      examples:
        - error:
            code: VALIDATION_ERROR
            message: Request validation failed.
            details:
              field: name
              reason: must not be blank
      properties:
        error:
          $ref: '#/components/schemas/ErrorDetail'
          description: 오류 payload입니다.
    AgentDataResponse:
      properties:
        prompt:
          anyOf:
            - $ref: '#/components/schemas/AgentPrompt'
            - type: 'null'
          description: 에이전트 프롬프트 설정입니다.
        stt:
          anyOf:
            - $ref: '#/components/schemas/AgentSTT'
            - type: 'null'
          description: 음성 인식 설정입니다.
        llm:
          anyOf:
            - $ref: '#/components/schemas/AgentLLM'
            - type: 'null'
          description: LLM 설정입니다.
        voice:
          anyOf:
            - $ref: '#/components/schemas/AgentVoice'
            - type: 'null'
          description: 음성 합성 설정입니다.
        speech:
          anyOf:
            - $ref: '#/components/schemas/AgentSpeech'
            - type: 'null'
          description: 에이전트 발화 동작 설정입니다.
        callSettings:
          anyOf:
            - $ref: '#/components/schemas/AgentCallSettings'
            - type: 'null'
          description: 통화 동작 설정입니다. 호환성을 위해 camelCase를 유지합니다.
        postCall:
          anyOf:
            - $ref: '#/components/schemas/AgentPostCall'
            - type: 'null'
          description: 통화 후 추출·액션 설정입니다. camelCase를 유지합니다.
        security:
          anyOf:
            - $ref: '#/components/schemas/AgentSecurity'
            - type: 'null'
          description: 에이전트 보안·개인정보 설정입니다.
        memory:
          anyOf:
            - $ref: '#/components/schemas/AgentMemory'
            - type: 'null'
          description: 에이전트 고객 메모리 설정입니다.
        webhookSettings:
          anyOf:
            - $ref: '#/components/schemas/AgentWebhookSettings'
            - type: 'null'
          description: 에이전트 웹훅 설정입니다. 호환성을 위해 camelCase를 유지합니다.
        knowledge:
          anyOf:
            - $ref: '#/components/schemas/AgentKnowledge'
            - type: 'null'
          description: 에이전트 knowledge base 설정입니다.
        presetDynamicVariables:
          additionalProperties:
            type: string
          type: object
          title: Preset dynamic variables
          description: 에이전트에서 사용할 수 있는 사전 정의 동적 변수입니다.
        toolIds:
          items:
            type: string
            format: uuid
          type: array
          title: Tool IDs
          description: 에이전트에 연결할 custom 도구 UUID입니다. 값은 `GET /v3/tools`에서 확인합니다.
        builtInTools:
          items:
            oneOf:
              - $ref: '#/components/schemas/EndCallTool'
              - $ref: '#/components/schemas/TransferCallTool'
              - $ref: '#/components/schemas/TransferAgentTool'
              - $ref: '#/components/schemas/SendSmsTool'
              - $ref: '#/components/schemas/SendDtmfTool'
              - $ref: '#/components/schemas/SkillTool-Output'
          type: array
          title: Built-in tools
          description: 에이전트에 연결된 built-in 도구입니다.
      type: object
      title: AgentDataResponse
      description: 조회 endpoint에서 반환되는 에이전트 설정입니다.
    FlowData:
      properties:
        nodes:
          items:
            $ref: '#/components/schemas/FlowDataNode'
          type: array
          title: Nodes
          description: >-
            Flow builder node 목록입니다. 각 node는 `id`, `type`, 필수 `position`(`{x,
            y}` 캔버스 좌표), camelCase `data`를 가집니다.
        edges:
          items:
            $ref: '#/components/schemas/FlowDataEdge'
          type: array
          title: Edges
          description: source와 target 노드 ID를 연결하는 flow builder edge 목록입니다.
      additionalProperties: true
      type: object
      title: FlowData
      description: flow 에이전트 그래프입니다. PATCH에서는 문서 전체가 교체됩니다.
    FlowOutput:
      properties:
        nodes:
          items:
            $ref: '#/components/schemas/FlowNode'
          type: array
          title: Nodes
          description: >-
            Flow builder node 목록입니다. 각 node는 `id`, `type`, 필수 `position`(`{x,
            y}` 캔버스 좌표), camelCase `data`를 가집니다.
        edges:
          items:
            $ref: '#/components/schemas/FlowEdgeOutput'
          type: array
          title: Edges
          description: source와 target 노드 ID를 연결하는 flow builder edge 목록입니다.
      additionalProperties: false
      type: object
      required:
        - nodes
        - edges
      title: Flow
      description: '`flow` 문서입니다: `{nodes, edges}`.'
    AgentVersionMeta:
      properties:
        version:
          type: string
          title: Version
          description: 버전 식별자입니다.
          pattern: ^v[1-9][0-9]*$
          examples:
            - v1
        description:
          anyOf:
            - type: string
            - type: 'null'
          title: Description
          description: 사람이 읽을 수 있는 설명입니다.
        is_production:
          type: boolean
          title: Is Production
          description: 이 에이전트 버전이 현재 production 버전으로 게시되어 있는지 여부입니다.
        created_at:
          type: integer
          title: Created At
          description: 리소스 생성 시각입니다. unix milliseconds 형식입니다.
      type: object
      required:
        - version
        - is_production
        - created_at
      title: AgentVersionMeta
      description: 버전 스냅샷 메타데이터. AgentResponse.version 서브 객체로 재사용.
    ErrorDetail:
      type: object
      required:
        - code
        - message
        - details
      title: ErrorDetail
      description: 기계가 읽을 수 있는 v3 오류 상세 정보입니다.
      examples:
        - code: VALIDATION_ERROR
          message: Request validation failed.
          details:
            field: name
            reason: must not be blank
      properties:
        code:
          type: string
          title: Code
          description: 기계가 읽을 수 있는 오류 code입니다. message parsing 대신 이 값을 사용합니다.
          examples:
            - VALIDATION_ERROR
        message:
          type: string
          title: Message
          description: 사용자에게 표시할 수 있는 오류 메시지입니다. 프로그램 처리는 `code`를 사용합니다.
          examples:
            - Request validation failed.
        details:
          type: object
          title: Details
          additionalProperties: true
          description: 구조화된 context입니다. 주로 `field`, `reason`, `allowed_values`를 포함합니다.
    AgentPrompt:
      properties:
        prompt:
          type: string
          title: Prompt
          description: 에이전트 시스템 프롬프트입니다.
          default: ''
        firstLine:
          type: string
          title: Firstline
          description: '`first_line_type=aiFirstStatic`일 때 말할 고정 첫 문장입니다.'
          default: ''
        firstLineType:
          type: string
          enum:
            - userFirst
            - aiFirstDynamic
            - aiFirstStatic
          title: Firstlinetype
          description: >-
            single_prompt 에이전트의 첫 발화 방식입니다. `userFirst`는 사용자를 기다리고,
            `aiFirstDynamic`은 첫 문장을 생성하며, `aiFirstStatic`은 `firstLine`을 말합니다.
          default: aiFirstDynamic
        pauseBeforeSpeakingSeconds:
          type: number
          maximum: 5
          minimum: 0
          title: Pausebeforespeakingseconds
          default: 0
          description: 에이전트가 첫 발화를 시작하기 전 대기 시간입니다. 단위는 초입니다.
        isFirstMessageInterruptible:
          type: boolean
          title: Isfirstmessageinterruptible
          default: true
          description: 사용자가 첫 에이전트 메시지를 끊고 말할 수 있는지 여부입니다.
      type: object
      title: AgentPrompt
      description: '레지스트리: voxai://agent-schema/prompt/v1'
    AgentSTT:
      properties:
        languages:
          items:
            type: string
          type: array
          minItems: 1
          title: Languages
          description: 음성 인식 언어 후보 또는 우선 언어입니다.
        speed:
          anyOf:
            - type: string
              enum:
                - low
                - medium
                - high
            - type: 'null'
          title: Speed
          default: high
          description: >-
            음성 속도 또는 음성 인식 속도 설정입니다. 음성의 허용 범위는 `GET /v3/models/voices`의
            capabilities를 확인합니다.
      type: object
      title: AgentSTT
      description: '레지스트리: voxai://agent-schema/stt/v2'
    AgentLLM:
      properties:
        model:
          type: string
          title: Model
          description: LLM 모델 ID입니다. `GET /v3/models/llms`가 반환한 `model` 값을 사용합니다.
        temperature:
          anyOf:
            - type: number
              maximum: 2
              minimum: 0
            - type: 'null'
          title: Temperature
          description: >-
            모델 또는 음성 샘플링 temperature입니다. 허용 범위는 `GET /v3/models/llms` 또는 `GET
            /v3/models/voices`의 capabilities를 확인합니다.
      type: object
      required:
        - model
      title: AgentLLM
      description: '레지스트리: voxai://agent-schema/llm/v2'
    AgentVoice:
      properties:
        id:
          type: string
          title: Id
          description: 음성 ID입니다. `GET /v3/models/voices`가 반환한 `id` 값을 사용합니다.
        provider:
          type: string
          title: Provider
          description: '`GET /v3/models/voices`가 반환한 TTS provider입니다.'
        model:
          anyOf:
            - type: string
            - type: 'null'
          title: Model
          description: >-
            provider 모델 식별자입니다. LLM은 `GET /v3/models/llms` 응답 값을, 음성은 voice
            model catalog 값을 사용합니다.
        speed:
          anyOf:
            - type: number
            - type: 'null'
          title: Speed
          description: >-
            음성 속도입니다. 음성별 min/max 범위는 `GET /v3/models/voices`의
            `capabilities.speed`에서 확인합니다.
          default: 1
        volume:
          anyOf:
            - type: number
            - type: 'null'
          title: Volume
          default: 1
          description: 음성 재생 볼륨입니다.
        language:
          anyOf:
            - type: string
            - type: 'null'
          title: Language
          description: provider가 지원하는 언어 code 또는 locale입니다.
        temperature:
          anyOf:
            - type: number
            - type: 'null'
          title: Temperature
          description: >-
            음성 temperature입니다. 음성별 min/max 범위는 `GET /v3/models/voices`의
            `capabilities.temperature`에서 확인합니다.
          default: 0.9
      type: object
      required:
        - id
        - provider
      title: AgentVoice
      description: '레지스트리: voxai://agent-schema/voice/v1'
    AgentSpeech:
      properties:
        responsiveness:
          type: number
          maximum: 1
          minimum: 0
          title: Responsiveness
          default: 1
          description: 사용자 발화 이후 에이전트가 응답을 시작하는 속도 설정입니다.
        boostedKeywords:
          anyOf:
            - type: string
            - type: 'null'
          title: Boostedkeywords
          description: 음성 인식에서 우선 인식하도록 보정할 단어 또는 문구입니다.
      type: object
      title: AgentSpeech
      description: '레지스트리: voxai://agent-schema/speech/v1 (v3 공개 2 필드).'
    AgentCallSettings:
      properties:
        backgroundMusic:
          type: string
          enum:
            - none
            - cafe
            - office
            - call_center
            - library
            - dial_tone
          title: Backgroundmusic
          default: none
          description: 통화 배경음악 preset입니다. 사용하지 않으면 null입니다.
        backgroundMusicVolume:
          type: number
          maximum: 1
          minimum: 0
          title: Backgroundmusicvolume
          default: 0.5
          description: 배경음악 볼륨입니다.
        noiseCancellation:
          type: string
          enum:
            - none
            - nc
            - bvc
          title: Noisecancellation
          default: bvc
          description: 통화 노이즈 캔슬링 설정입니다.
        activationThreshold:
          type: number
          maximum: 1
          minimum: 0
          title: Activationthreshold
          default: 0.55
          description: 음성 감지를 위한 오디오 활성화 임계값입니다.
        callTimeoutInSeconds:
          anyOf:
            - type: integer
            - type: 'null'
          title: Calltimeoutinseconds
          default: 900
          description: 통화 제한 시간입니다. 단위는 초입니다.
        silenceCallTimeoutInSeconds:
          anyOf:
            - type: integer
            - type: 'null'
          title: Silencecalltimeoutinseconds
          default: 30
          description: 무음 제한 시간입니다. 단위는 초입니다.
        ringDurationInSeconds:
          anyOf:
            - type: integer
            - type: 'null'
          title: Ringdurationinseconds
          default: 30
          description: 응답 없음으로 처리하기 전 최대 발신 대기 시간입니다. 단위는 초입니다.
        dtmfTerminationEnabled:
          type: boolean
          title: Dtmfterminationenabled
          default: false
          description: DTMF 키 입력으로 통화를 종료할지 여부입니다.
        dtmfTerminationKey:
          type: string
          enum:
            - '0'
            - '1'
            - '2'
            - '3'
            - '4'
            - '5'
            - '6'
            - '7'
            - '8'
            - '9'
            - '#'
            - '*'
          title: Dtmfterminationkey
          default: '#'
          description: DTMF 종료 기능이 켜져 있을 때 통화를 종료하는 DTMF 키입니다.
        dtmfTimeoutSeconds:
          type: integer
          exclusiveMinimum: 0
          title: Dtmftimeoutseconds
          default: 3
          description: DTMF 입력을 기다리는 시간입니다. 단위는 초입니다.
      type: object
      title: AgentCallSettings
      description: '레지스트리: voxai://agent-schema/call-settings/v1 (v3 공개 10 필드).'
    AgentPostCall:
      properties:
        actions:
          items:
            $ref: '#/components/schemas/PostCallAction'
          type: array
          title: Actions
          description: 통화 후 액션 또는 추출 필드입니다.
      type: object
      title: AgentPostCall
      description: '레지스트리: voxai://agent-schema/post-call/v1'
    AgentSecurity:
      properties:
        optOutSensitiveDataStorage:
          type: boolean
          title: Optoutsensitivedatastorage
          default: false
          description: 대화록, 녹음, 분석 결과의 민감정보 저장을 제한할지 여부입니다.
        dataRetention:
          anyOf:
            - $ref: '#/components/schemas/AgentDataRetention'
            - type: 'null'
        piiMasking:
          $ref: '#/components/schemas/PiiMasking'
      type: object
      title: AgentSecurity
      description: '레지스트리: voxai://agent-schema/security/v1.'
    AgentMemory:
      properties:
        enabled:
          type: boolean
          title: Enabled
          default: false
          description: 이 설정을 사용할지 여부입니다.
      type: object
      title: AgentMemory
      description: '레지스트리: `voxai://agent-schema/memory/v1`입니다. 필드는 1개입니다.'
    AgentWebhookSettings:
      properties:
        callDataWebhookUrl:
          anyOf:
            - type: string
            - type: 'null'
          title: Calldatawebhookurl
          description: 통화 데이터 이벤트를 수신할 Webhook URL입니다.
        inboundCallWebhookUrl:
          anyOf:
            - type: string
            - type: 'null'
          title: Inboundcallwebhookurl
          description: 인바운드 통화 이벤트를 수신할 Webhook URL입니다.
        webhookVersion:
          anyOf:
            - type: string
              enum:
                - v1
                - v2
            - type: 'null'
          title: Webhookversion
          description: 웹훅 payload version입니다.
        inboundCallWebhookSigningEnabled:
          type: boolean
          title: Inboundcallwebhooksigningenabled
          description: >-
            인바운드 콜 웹훅 요청의 HMAC-SHA256 서명 opt-in입니다 (PROD-1711). true면
            organization 웹훅 서명 키로 서명되며 X-Webhook-Signature / X-Webhook-Timestamp
            헤더가 포함됩니다 (organization 웹훅과 동일한 포맷). 생략하거나 false를 보내면 기존과 동일한 무서명
            동작입니다. null은 거부됩니다.
          default: false
      type: object
      title: AgentWebhookSettings
      description: '레지스트리: voxai://agent-schema/webhook-settings/v1'
    AgentKnowledge:
      properties:
        ragEnabled:
          type: boolean
          title: Ragenabled
          default: false
          description: 이 에이전트에서 검색 기반 생성을 사용할지 여부입니다.
        knowledgeIds:
          items:
            type: integer
          type: array
          title: Knowledgeids
          description: >-
            이 에이전트에 연결할 숫자형 public knowledge ID 목록입니다. 값은 `GET /v3/knowledges`에서
            확인합니다.
      type: object
      title: AgentKnowledge
      description: 에이전트 knowledge base 설정입니다.
    EndCallTool:
      properties:
        speakDuringExecution:
          anyOf:
            - $ref: '#/components/schemas/AgentSpeakDuringExecution'
            - type: 'null'
          description: 도구 실행 중 재생할 TTS 메시지입니다.
        allowInterruptionDuringExecution:
          type: boolean
          title: Allowinterruptionduringexecution
          description: 도구 실행 중 사용자 발화로 끼어들 수 있는지 여부입니다.
          default: false
        responseMode:
          type: string
          enum:
            - wait
            - fire_and_forget
          title: Responsemode
          description: '`wait`는 도구 완료를 기다립니다. `fire_and_forget`은 도구를 시작한 뒤 대화를 계속합니다.'
          default: wait
        toolType:
          type: string
          const: end_call
          title: Tool type
          description: built-in 도구 유형입니다.
        name:
          type: string
          title: Name
          default: end_call
          description: 사람이 읽을 수 있는 리소스 이름입니다.
        description:
          anyOf:
            - type: string
            - type: 'null'
          title: Description
          description: 사람이 읽을 수 있는 설명입니다.
      type: object
      required:
        - toolType
      title: EndCallTool
      description: 통화 종료 built-in 도구 설정입니다.
    TransferCallTool:
      properties:
        speakDuringExecution:
          anyOf:
            - $ref: '#/components/schemas/AgentSpeakDuringExecution'
            - type: 'null'
          description: 도구 실행 중 재생할 발화 메시지입니다.
        allowInterruptionDuringExecution:
          type: boolean
          title: Allowinterruptionduringexecution
          description: 도구 실행 중 사용자 발화로 끼어들 수 있는지 여부입니다.
          default: false
        responseMode:
          type: string
          enum:
            - wait
            - fire_and_forget
          title: Responsemode
          description: '`wait`는 도구 완료를 기다립니다. `fire_and_forget`은 도구를 시작한 뒤 대화를 계속합니다.'
          default: wait
        toolType:
          type: string
          const: transfer_call
          title: Tool type
          description: built-in 도구 유형입니다.
        name:
          type: string
          title: Name
          description: 사람이 읽을 수 있는 리소스 이름입니다.
        description:
          anyOf:
            - type: string
            - type: 'null'
          title: Description
          description: 사람이 읽을 수 있는 설명입니다.
        transferConfigurations:
          items:
            $ref: '#/components/schemas/TransferConfig'
          type: array
          title: Transfer configurations
          description: >-
            전환 대상 목록입니다. v3 API 응답은 `transferConfigurations`를 사용합니다. runtime/web
            입력의 `transferConfiguration`도 호환용으로 허용합니다.
        transferType:
          type: string
          enum:
            - cold
            - warm
          title: Transfertype
          default: cold
        transferMessageType:
          type: string
          enum:
            - static
            - dynamic
          title: Transfermessagetype
          default: static
        warmTransferPrompt:
          anyOf:
            - type: string
            - type: 'null'
          title: Warmtransferprompt
        warmTransferStaticSentence:
          anyOf:
            - type: string
            - type: 'null'
          title: Warmtransferstaticsentence
        displayedCallerId:
          type: string
          enum:
            - agent
            - user
          title: Displayedcallerid
          default: agent
        sipHeaders:
          anyOf:
            - items:
                $ref: '#/components/schemas/TransferCallSipHeader'
              type: array
            - type: 'null'
          title: Sipheaders
      type: object
      required:
        - toolType
        - name
      title: TransferCallTool
      description: 통화 전환 built-in 도구 설정입니다.
    TransferAgentTool:
      properties:
        speakDuringExecution:
          anyOf:
            - $ref: '#/components/schemas/AgentSpeakDuringExecution'
            - type: 'null'
          description: 도구 실행 중 재생할 발화 메시지입니다.
        allowInterruptionDuringExecution:
          type: boolean
          title: Allowinterruptionduringexecution
          description: 도구 실행 중 사용자 발화로 끼어들 수 있는지 여부입니다.
          default: false
        responseMode:
          type: string
          enum:
            - wait
            - fire_and_forget
          title: Responsemode
          description: '`wait`는 도구 완료를 기다립니다. `fire_and_forget`은 도구를 시작한 뒤 대화를 계속합니다.'
          default: wait
        toolType:
          type: string
          const: transfer_agent
          title: Tool type
          description: built-in 도구 유형입니다.
        name:
          type: string
          title: Name
          description: 사람이 읽을 수 있는 리소스 이름입니다.
        agent:
          $ref: '#/components/schemas/AgentMapping'
          description: >-
            `agent_id`와 `agent_version`을 담는 에이전트 매핑 객체입니다. 통화·캠페인·전화번호의 교차 리소스
            참조와 `builtInTools.transfer_agent`, flow `transferAgent` 노드의
            `data.agent`에서 사용합니다.
        description:
          anyOf:
            - type: string
            - type: 'null'
          title: Description
          description: 사람이 읽을 수 있는 설명입니다.
        preserveChatContext:
          type: boolean
          title: Preservechatcontext
          description: 대상 에이전트가 이전 대화 컨텍스트를 받을지 여부입니다.
          default: false
      type: object
      required:
        - toolType
        - name
        - agent
      title: TransferAgentTool
      description: 에이전트 전환 built-in 도구 설정입니다.
    SendSmsTool:
      properties:
        speakDuringExecution:
          anyOf:
            - $ref: '#/components/schemas/AgentSpeakDuringExecution'
            - type: 'null'
          description: 도구 실행 중 재생할 발화 메시지입니다.
        allowInterruptionDuringExecution:
          type: boolean
          title: Allowinterruptionduringexecution
          description: 도구 실행 중 사용자 발화로 끼어들 수 있는지 여부입니다.
          default: false
        responseMode:
          type: string
          enum:
            - wait
            - fire_and_forget
          title: Responsemode
          description: >-
            `wait`는 SMS 발송 결과를 기다린 뒤 대화를 진행합니다. `fire_and_forget`은 발송 요청만 보내고
            결과를 기다리지 않은 채 대화를 계속 진행합니다.
          default: wait
        toolType:
          type: string
          const: send_sms
          title: Tool type
          description: built-in 도구 유형입니다.
        name:
          type: string
          title: Name
          description: 사람이 읽을 수 있는 리소스 이름입니다.
        description:
          anyOf:
            - type: string
            - type: 'null'
          title: Description
          description: 사람이 읽을 수 있는 설명입니다.
        smsMessageType:
          type: string
          enum:
            - static
            - dynamic
          title: Smsmessagetype
          description: >-
            SMS 본문 생성 방식입니다. `static`은 설정한 제목·본문·이미지 file key를 보내고, `dynamic`은
            `smsMessagePrompt`로 에이전트가 본문을 생성합니다.
          default: static
        smsMessageStaticSentence:
          anyOf:
            - type: string
            - type: 'null'
          title: Smsmessagestaticsentence
          description: >-
            `smsMessageType=static`일 때 사용할 고정 메시지 본문입니다. 제목이나 이미지 file key와 함께
            LMS/MMS로 전송됩니다.
        smsMessageStaticTitle:
          anyOf:
            - type: string
            - type: 'null'
          title: Smsmessagestatictitle
          description: >-
            `smsMessageType=static`일 때 사용할 선택적 제목입니다. 제목 없이 보내려면 생략하거나 null로
            보냅니다.
        smsMessageStaticImageFileKeys:
          anyOf:
            - items:
                type: string
              type: array
              maxItems: 3
            - type: 'null'
          title: Smsmessagestaticimagefilekeys
          description: >-
            MMS 이미지 첨부 file key 목록입니다. 파일 업로드 API가 반환한 opaque `file_key` 문자열을 최대
            3개까지 보낼 수 있습니다. 텍스트만 보내려면 생략하거나 null로 보냅니다.
        smsMessagePrompt:
          anyOf:
            - type: string
            - type: 'null'
          title: Smsmessageprompt
          description: '`smsMessageType=dynamic`일 때 에이전트가 SMS 본문을 생성하는 데 사용할 프롬프트입니다.'
        smsFromNumber:
          anyOf:
            - type: string
            - type: 'null'
          title: Smsfromnumber
          description: >-
            SMS 발신번호 override입니다. 조직이 보유한 SMS 발신 가능 번호여야 합니다. 생략하거나 null이면 통화
            context 기본값을 사용합니다.
      type: object
      required:
        - toolType
        - name
      title: SendSmsTool
      description: SMS 전송 built-in 도구 설정입니다.
    SendDtmfTool:
      properties:
        toolType:
          type: string
          const: send_dtmf
          title: Tool type
          description: built-in 도구 유형입니다.
        name:
          type: string
          title: Name
          description: 사람이 읽을 수 있는 리소스 이름입니다.
        description:
          anyOf:
            - type: string
            - type: 'null'
          title: Description
          description: 사람이 읽을 수 있는 설명입니다.
        speakDuringExecution:
          anyOf:
            - $ref: '#/components/schemas/AgentSpeakDuringExecution'
            - type: 'null'
          description: 도구 실행 중 재생할 발화 메시지입니다.
        responseMode:
          type: string
          enum:
            - wait
            - fire_and_forget
          title: Responsemode
          description: '`wait`는 도구 완료를 기다립니다. `fire_and_forget`은 도구를 시작한 뒤 대화를 계속합니다.'
          default: wait
        allowInterruption:
          type: boolean
          title: Allowinterruption
          description: >-
            DTMF 도구 실행 중 사용자 발화로 끼어들 수 있는지 여부입니다. 입력에서는 runtime/web의
            `allowInterruptionDuringExecution`도 허용합니다.
          default: true
      type: object
      required:
        - toolType
        - name
      title: SendDtmfTool
      description: DTMF 전송 built-in 도구 설정입니다.
    SkillTool-Output:
      properties:
        speakDuringExecution:
          anyOf:
            - $ref: '#/components/schemas/AgentSpeakDuringExecution'
            - type: 'null'
          description: 도구 실행 중 재생할 발화 메시지입니다.
        allowInterruptionDuringExecution:
          type: boolean
          title: Allowinterruptionduringexecution
          description: 도구 실행 중 사용자 발화로 끼어들 수 있는지 여부입니다.
          default: false
        responseMode:
          type: string
          enum:
            - wait
            - fire_and_forget
          title: Responsemode
          description: '`wait`는 도구 완료를 기다립니다. `fire_and_forget`은 도구를 시작한 뒤 대화를 계속합니다.'
          default: wait
        toolType:
          type: string
          const: skill
          title: Tool type
          description: 기본 도구 타입입니다.
        name:
          type: string
          title: Name
          description: 사람이 읽을 수 있는 리소스 이름입니다.
        description:
          anyOf:
            - type: string
            - type: 'null'
          title: Description
          description: 사람이 읽을 수 있는 설명입니다.
        skill:
          $ref: '#/components/schemas/SkillPayload'
          description: 스킬 페이로드입니다. v3 API 필드는 `skill`이며, 통화 실행 시에는 `skillPayload`로 저장됩니다.
      type: object
      required:
        - toolType
        - name
        - skill
      title: SkillTool
    FlowDataNode:
      title: FlowDataNode
      description: flow 그래프 노드입니다. `type`은 discriminator이며 `data` 스키마를 결정합니다.
      oneOf:
        - $ref: '#/components/schemas/BeginFlowDataNode'
        - $ref: '#/components/schemas/ConversationFlowDataNode'
        - $ref: '#/components/schemas/ToolFlowDataNode'
        - $ref: '#/components/schemas/ConditionFlowDataNode'
        - $ref: '#/components/schemas/ExtractionFlowDataNode'
        - $ref: '#/components/schemas/ApiFlowDataNode'
        - $ref: '#/components/schemas/SendSmsFlowDataNode'
        - $ref: '#/components/schemas/TransferCallFlowDataNode'
        - $ref: '#/components/schemas/TransferAgentFlowDataNode'
        - $ref: '#/components/schemas/EndCallFlowDataNode'
        - $ref: '#/components/schemas/NoteFlowDataNode'
      discriminator:
        propertyName: type
        mapping:
          begin:
            $ref: '#/components/schemas/BeginFlowDataNode'
          conversation:
            $ref: '#/components/schemas/ConversationFlowDataNode'
          tool:
            $ref: '#/components/schemas/ToolFlowDataNode'
          condition:
            $ref: '#/components/schemas/ConditionFlowDataNode'
          extraction:
            $ref: '#/components/schemas/ExtractionFlowDataNode'
          api:
            $ref: '#/components/schemas/ApiFlowDataNode'
          sendSms:
            $ref: '#/components/schemas/SendSmsFlowDataNode'
          transferCall:
            $ref: '#/components/schemas/TransferCallFlowDataNode'
          transferAgent:
            $ref: '#/components/schemas/TransferAgentFlowDataNode'
          endCall:
            $ref: '#/components/schemas/EndCallFlowDataNode'
          note:
            $ref: '#/components/schemas/NoteFlowDataNode'
    FlowDataEdge:
      properties:
        id:
          type: string
          minLength: 1
          description: flow builder edge ID입니다.
        source:
          type: string
          description: source 노드 ID입니다.
        target:
          type: string
          description: target 노드 ID입니다.
        type:
          type: string
          title: Type
          description: >-
            flow builder edge renderer type입니다. 모든 edge에 필요하며, 클라이언트가 생략하면 기본값
            `custom`을 사용합니다.
          default: custom
        sourceHandle:
          anyOf:
            - type: string
            - type: 'null'
          title: Sourcehandle
          description: >-
            이 edge가 source node의 어떤 transition에서 나가는지 지정하는 값입니다. begin node
            edge는 `begin-source`를 사용합니다. 실행 노드에서는 source node의
            `data.transitions[].id` 또는 condition node의
            `data.logical_transitions[].id`와 일치해야 합니다.
      additionalProperties: true
      type: object
      title: FlowDataEdge
      description: flow builder edge입니다.
      required:
        - id
        - source
        - target
    FlowNode:
      title: FlowDataNode
      description: 빌더(구 flow_data, deprecated) 그래프 노드입니다. `type`은 판별자이며 `data` 스키마를 결정합니다.
      oneOf:
        - $ref: '#/components/schemas/BeginFlowDataNode'
        - $ref: '#/components/schemas/ConversationFlowDataNode'
        - $ref: '#/components/schemas/ToolFlowDataNode'
        - $ref: '#/components/schemas/ConditionFlowDataNode'
        - $ref: '#/components/schemas/ExtractionFlowDataNode'
        - $ref: '#/components/schemas/ApiFlowDataNode'
        - $ref: '#/components/schemas/SendSmsFlowDataNode'
        - $ref: '#/components/schemas/TransferCallFlowDataNode'
        - $ref: '#/components/schemas/TransferAgentFlowDataNode'
        - $ref: '#/components/schemas/EndCallFlowDataNode'
        - $ref: '#/components/schemas/NoteFlowDataNode'
      discriminator:
        propertyName: type
        mapping:
          begin:
            $ref: '#/components/schemas/BeginFlowDataNode'
          conversation:
            $ref: '#/components/schemas/ConversationFlowDataNode'
          tool:
            $ref: '#/components/schemas/ToolFlowDataNode'
          condition:
            $ref: '#/components/schemas/ConditionFlowDataNode'
          extraction:
            $ref: '#/components/schemas/ExtractionFlowDataNode'
          api:
            $ref: '#/components/schemas/ApiFlowDataNode'
          sendSms:
            $ref: '#/components/schemas/SendSmsFlowDataNode'
          transferCall:
            $ref: '#/components/schemas/TransferCallFlowDataNode'
          transferAgent:
            $ref: '#/components/schemas/TransferAgentFlowDataNode'
          endCall:
            $ref: '#/components/schemas/EndCallFlowDataNode'
          note:
            $ref: '#/components/schemas/NoteFlowDataNode'
    FlowEdgeOutput:
      properties:
        id:
          anyOf:
            - type: string
              minLength: 1
            - type: 'null'
          title: Id
          description: 선택 사항입니다. 생략하면 서버가 생성하고, 제공하면 그대로 재사용합니다. 빈 문자열은 거부됩니다.
        source:
          type: string
          title: Source
          description: 출발 flow node ID입니다.
        target:
          type: string
          title: Target
          description: 도착 flow node ID입니다.
        condition:
          oneOf:
            - $ref: '#/components/schemas/AiCondition'
            - $ref: '#/components/schemas/LogicCondition'
            - $ref: '#/components/schemas/FallbackCondition'
          title: Condition
          discriminator:
            propertyName: type
            mapping:
              ai:
                $ref: '#/components/schemas/AiCondition'
              fallback:
                $ref: '#/components/schemas/FallbackCondition'
              logic:
                $ref: '#/components/schemas/LogicCondition'
        skip_user_response:
          type: boolean
          title: Skip User Response
          description: v1 `is_skip_user_response`에 해당합니다. 이 hop에서 사용자 응답을 기다리지 않고 이동합니다.
          default: false
      additionalProperties: false
      type: object
      required:
        - source
        - target
        - condition
      title: FlowDataEdge
      description: 'flow edge입니다: `{id?, source, target, condition, skip_user_response}`.'
    PostCallAction:
      properties:
        name:
          type: string
          title: Name
          description: 사람이 읽을 수 있는 리소스 이름입니다.
        type:
          type: string
          enum:
            - string
            - enum
            - boolean
            - number
          title: Type
          description: 리소스 또는 설정 유형입니다.
        isNullable:
          type: boolean
          title: Isnullable
          default: false
          description: 이 추출 필드가 null일 수 있는지 여부입니다.
        description:
          anyOf:
            - type: string
            - type: 'null'
          title: Description
          description: 사람이 읽을 수 있는 설명입니다.
        enumOptions:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Enumoptions
          description: 이 추출 필드에서 허용하는 enum option 목록입니다.
      type: object
      required:
        - name
        - type
      title: PostCallAction
      description: '레지스트리: voxai://agent-schema/post-call/v1 액션 항목입니다.'
    AgentDataRetention:
      properties:
        durationSeconds:
          anyOf:
            - type: integer
              maximum: 315576000
              minimum: 0
            - type: 'null'
          title: Durationseconds
          description: null이면 무기한 보존, 0이면 완료 즉시 삭제, 양수면 완료 후 해당 초만큼 보존합니다.
        retainedDataTypes:
          items:
            type: string
            enum:
              - recording
              - transcript
              - postCallAnalysis
          type: array
          title: Retaineddatatypes
          description: 설정된 보존 기간 동안 유지할 아티팩트 유형입니다.
      additionalProperties: false
      type: object
      title: AgentDataRetention
      description: 통화·챗 데이터의 아티팩트 보존 정책입니다.
    PiiMasking:
      properties:
        enabled:
          type: boolean
          title: Enabled
          description: >-
            스크립트, 요약, 추출 데이터 등 통화 후 산출물에서 감지한 개인정보를 카테고리별 번호가 붙은 대체 문구로 치환하는 마스터
            스위치입니다.
          default: false
        name:
          type: boolean
          title: Name
          description: 이름을 [이름 1] 같은 번호가 붙은 대체 문구로 치환합니다.
          default: false
        phone:
          type: boolean
          title: Phone
          description: 전화번호를 [전화번호 1] 같은 번호가 붙은 대체 문구로 치환합니다. 조직 소유 번호는 제외합니다.
          default: false
        birthDate:
          type: boolean
          title: Birthdate
          description: 생년월일을 [생년월일 1] 같은 번호가 붙은 대체 문구로 치환합니다.
          default: false
        address:
          type: boolean
          title: Address
          description: 주소를 [주소 1] 같은 번호가 붙은 대체 문구로 치환합니다.
          default: false
        email:
          type: boolean
          title: Email
          description: 이메일 주소를 [이메일 1] 같은 번호가 붙은 대체 문구로 치환합니다.
          default: false
        residentId:
          type: boolean
          title: Residentid
          description: 주민등록번호를 [주민등록번호 1] 같은 번호가 붙은 대체 문구로 치환합니다.
          default: false
      type: object
      title: PiiMasking
      description: 통화 후 결과물에서 마스킹할 개인정보 카테고리입니다.
    AgentSpeakDuringExecution:
      properties:
        enabled:
          type: boolean
          title: Enabled
          default: false
          description: 이 설정을 사용할지 여부입니다.
        messages:
          items:
            type: string
          type: array
          title: Messages
          description: 도구 실행 중 재생할 메시지입니다.
      type: object
      title: SpeakDuringExecution
      description: 도구 실행 중 재생할 발화 메시지입니다.
    TransferConfig:
      properties:
        transferTo:
          type: string
          title: Transferto
          description: 전환할 전화번호 또는 SIP URI입니다.
        transferCondition:
          anyOf:
            - type: string
            - type: 'null'
          title: Transfercondition
          description: 이 전환 대상을 사용할 조건입니다.
        transferType:
          type: string
          enum:
            - phone
            - sip
          title: Transfertype
          description: 대상 타입입니다. 기본값은 agent-server runtime과 같은 `phone`입니다.
          default: phone
      type: object
      required:
        - transferTo
      title: TransferConfig
      description: '`transfer_call`의 전환 대상입니다.'
    TransferCallSipHeader:
      properties:
        name:
          type: string
          maxLength: 128
          minLength: 3
          pattern: ^X-[A-Za-z0-9-]+$
          title: Name
          description: >-
            SIP 헤더 이름입니다. `X-`로 시작해야 하며, 3~128자이고 `X-[A-Za-z0-9-]+` 패턴을 따라야 합니다.
            예약된 시스템 헤더는 사용할 수 없습니다.
        value:
          type: string
          maxLength: 256
          minLength: 1
          title: Value
          description: SIP 헤더 값입니다. 1~256자여야 하며, 탭을 제외한 제어 문자나 줄바꿈 문자를 포함할 수 없습니다.
      type: object
      required:
        - name
        - value
      title: TransferCallSipHeader
      description: '`transfer_call`에 사용할 SIP 헤더 키-값 쌍입니다.'
    AgentMapping:
      additionalProperties: false
      description: >-
        `agent_id`와 `agent_version` 매핑입니다.


        요청·응답 모두에서 에이전트 매핑이 필요한 경우 이 타입을 사용합니다. version 지정이 필요 없는 엔드포인트는 flat
        `agent_id: UUID`를 직접 받고 `AgentMapping`을 사용하지 않습니다.
      properties:
        agent_id:
          description: 에이전트 UUID입니다.
          format: uuid
          title: Agent Id
          type: string
        agent_version:
          default: current
          description: >-
            에이전트 버전입니다. 허용값은 "current", "production", "v{n}"(n≥1)입니다. 보내지 않으면
            "current"로 처리합니다. null 전송은 거부합니다.
          title: Agent Version
          type: string
          pattern: ^(current|production|v[1-9][0-9]*)$
          examples:
            - current
            - production
            - v1
      required:
        - agent_id
      title: AgentMapping
      type: object
    SkillPayload:
      properties:
        skills:
          items:
            $ref: '#/components/schemas/SkillItem'
          type: array
          minItems: 1
          title: Skills
          description: 이 메타 도구에서 사용할 수 있는 스킬 목록입니다. 최소 1개가 필요합니다.
        initSkillId:
          anyOf:
            - type: string
            - type: 'null'
          title: Initskillid
          description: LLM이 다른 스킬을 선택하기 전에 먼저 시작할 선택적 스킬 ID입니다.
        initSkillName:
          anyOf:
            - type: string
            - type: 'null'
          title: Initskillname
          description: LLM이 다른 스킬을 선택하기 전에 먼저 시작할 선택적 스킬 이름입니다.
      type: object
      required:
        - skills
      title: SkillPayload
      description: Skill 호출 payload.
    BeginFlowDataNode:
      type: object
      title: BeginFlowDataNode
      description: '`type=begin` flow 노드입니다.'
      required:
        - id
        - type
      properties:
        id:
          type: string
          minLength: 1
          maxLength: 64
          description: flow 안에서 사용하는 노드 ID입니다. edge의 `source`, `target`이 이 값을 참조합니다.
        type:
          type: string
          const: begin
          description: '`begin` flow 노드의 discriminator 값입니다.'
        data:
          $ref: '#/components/schemas/BeginData'
          description: '`begin` 타입 전용 data payload입니다.'
        position:
          $ref: '#/components/schemas/FlowNodePosition'
          description: >-
            flow builder layout 좌표입니다. API 생성 시 보통 생략할 수 있으며, 저장 시
            `POSITION_AUTOFILLED`로 채웁니다.
    ConversationFlowDataNode:
      type: object
      title: ConversationFlowDataNode
      description: '`type=conversation` flow 노드입니다.'
      required:
        - id
        - type
      properties:
        id:
          type: string
          minLength: 1
          maxLength: 64
          description: flow 안에서 사용하는 노드 ID입니다. edge의 `source`, `target`이 이 값을 참조합니다.
        type:
          type: string
          const: conversation
          description: '`conversation` flow 노드의 discriminator 값입니다.'
        data:
          $ref: '#/components/schemas/ConversationData'
          description: '`conversation` 타입 전용 data payload입니다.'
        position:
          $ref: '#/components/schemas/FlowNodePosition'
          description: >-
            flow builder layout 좌표입니다. API 생성 시 보통 생략할 수 있으며, 저장 시
            `POSITION_AUTOFILLED`로 채웁니다.
    ToolFlowDataNode:
      type: object
      title: ToolFlowDataNode
      description: '`type=tool` flow 노드입니다.'
      required:
        - id
        - type
      properties:
        id:
          type: string
          minLength: 1
          maxLength: 64
          description: flow 안에서 사용하는 노드 ID입니다. edge의 `source`, `target`이 이 값을 참조합니다.
        type:
          type: string
          const: tool
          description: '`tool` flow 노드의 discriminator 값입니다.'
        data:
          $ref: '#/components/schemas/ToolData'
          description: '`tool` 타입 전용 data payload입니다.'
        position:
          $ref: '#/components/schemas/FlowNodePosition'
          description: >-
            flow builder layout 좌표입니다. API 생성 시 보통 생략할 수 있으며, 저장 시
            `POSITION_AUTOFILLED`로 채웁니다.
    ConditionFlowDataNode:
      type: object
      title: ConditionFlowDataNode
      description: '`type=condition` flow 노드입니다.'
      required:
        - id
        - type
      properties:
        id:
          type: string
          minLength: 1
          maxLength: 64
          description: flow 안에서 사용하는 노드 ID입니다. edge의 `source`, `target`이 이 값을 참조합니다.
        type:
          type: string
          const: condition
          description: '`condition` flow 노드의 discriminator 값입니다.'
        data:
          $ref: '#/components/schemas/ConditionData'
          description: '`condition` 타입 전용 data payload입니다.'
        position:
          $ref: '#/components/schemas/FlowNodePosition'
          description: >-
            flow builder layout 좌표입니다. API 생성 시 보통 생략할 수 있으며, 저장 시
            `POSITION_AUTOFILLED`로 채웁니다.
    ExtractionFlowDataNode:
      type: object
      title: ExtractionFlowDataNode
      description: '`type=extraction` flow 노드입니다.'
      required:
        - id
        - type
      properties:
        id:
          type: string
          minLength: 1
          maxLength: 64
          description: flow 안에서 사용하는 노드 ID입니다. edge의 `source`, `target`이 이 값을 참조합니다.
        type:
          type: string
          const: extraction
          description: '`extraction` flow 노드의 discriminator 값입니다.'
        data:
          $ref: '#/components/schemas/ExtractionData'
          description: '`extraction` 타입 전용 data payload입니다.'
        position:
          $ref: '#/components/schemas/FlowNodePosition'
          description: >-
            flow builder layout 좌표입니다. API 생성 시 보통 생략할 수 있으며, 저장 시
            `POSITION_AUTOFILLED`로 채웁니다.
    ApiFlowDataNode:
      type: object
      title: ApiFlowDataNode
      description: '`type=api` flow 노드입니다.'
      required:
        - id
        - type
      properties:
        id:
          type: string
          minLength: 1
          maxLength: 64
          description: flow 안에서 사용하는 노드 ID입니다. edge의 `source`, `target`이 이 값을 참조합니다.
        type:
          type: string
          const: api
          description: '`api` flow 노드의 discriminator 값입니다.'
        data:
          $ref: '#/components/schemas/ApiData'
          description: '`api` 타입 전용 data payload입니다.'
        position:
          $ref: '#/components/schemas/FlowNodePosition'
          description: >-
            flow builder layout 좌표입니다. API 생성 시 보통 생략할 수 있으며, 저장 시
            `POSITION_AUTOFILLED`로 채웁니다.
    SendSmsFlowDataNode:
      type: object
      title: SendSmsFlowDataNode
      description: '`type=sendSms` flow 노드입니다.'
      required:
        - id
        - type
      properties:
        id:
          type: string
          minLength: 1
          maxLength: 64
          description: flow 안에서 사용하는 노드 ID입니다. edge의 `source`, `target`이 이 값을 참조합니다.
        type:
          type: string
          const: sendSms
          description: '`sendSms` flow 노드의 discriminator 값입니다.'
        data:
          $ref: '#/components/schemas/SendSmsData'
          description: '`sendSms` 타입 전용 data payload입니다.'
        position:
          $ref: '#/components/schemas/FlowNodePosition'
          description: >-
            flow builder layout 좌표입니다. API 생성 시 보통 생략할 수 있으며, 저장 시
            `POSITION_AUTOFILLED`로 채웁니다.
    TransferCallFlowDataNode:
      type: object
      title: TransferCallFlowDataNode
      description: '`type=transferCall` flow 노드입니다.'
      required:
        - id
        - type
      properties:
        id:
          type: string
          minLength: 1
          maxLength: 64
          description: flow 안에서 사용하는 노드 ID입니다. edge의 `source`, `target`이 이 값을 참조합니다.
        type:
          type: string
          const: transferCall
          description: '`transferCall` flow 노드의 discriminator 값입니다.'
        data:
          $ref: '#/components/schemas/TransferCallData'
          description: '`transferCall` 타입 전용 data payload입니다.'
        position:
          $ref: '#/components/schemas/FlowNodePosition'
          description: >-
            flow builder layout 좌표입니다. API 생성 시 보통 생략할 수 있으며, 저장 시
            `POSITION_AUTOFILLED`로 채웁니다.
    TransferAgentFlowDataNode:
      type: object
      title: TransferAgentFlowDataNode
      description: '`type=transferAgent` flow 노드입니다.'
      required:
        - id
        - type
      properties:
        id:
          type: string
          minLength: 1
          maxLength: 64
          description: flow 안에서 사용하는 노드 ID입니다. edge의 `source`, `target`이 이 값을 참조합니다.
        type:
          type: string
          const: transferAgent
          description: '`transferAgent` flow 노드의 discriminator 값입니다.'
        data:
          $ref: '#/components/schemas/TransferAgentData'
          description: '`transferAgent` 타입 전용 data payload입니다.'
        position:
          $ref: '#/components/schemas/FlowNodePosition'
          description: >-
            flow builder layout 좌표입니다. API 생성 시 보통 생략할 수 있으며, 저장 시
            `POSITION_AUTOFILLED`로 채웁니다.
    EndCallFlowDataNode:
      type: object
      title: EndCallFlowDataNode
      description: '`type=endCall` flow 노드입니다.'
      required:
        - id
        - type
      properties:
        id:
          type: string
          minLength: 1
          maxLength: 64
          description: flow 안에서 사용하는 노드 ID입니다. edge의 `source`, `target`이 이 값을 참조합니다.
        type:
          type: string
          const: endCall
          description: '`endCall` flow 노드의 discriminator 값입니다.'
        data:
          $ref: '#/components/schemas/EndCallData'
          description: '`endCall` 타입 전용 data payload입니다.'
        position:
          $ref: '#/components/schemas/FlowNodePosition'
          description: >-
            flow builder layout 좌표입니다. API 생성 시 보통 생략할 수 있으며, 저장 시
            `POSITION_AUTOFILLED`로 채웁니다.
    NoteFlowDataNode:
      type: object
      title: NoteFlowDataNode
      description: '`type=note` flow 노드입니다.'
      required:
        - id
        - type
      properties:
        id:
          type: string
          minLength: 1
          maxLength: 64
          description: flow 안에서 사용하는 노드 ID입니다. edge의 `source`, `target`이 이 값을 참조합니다.
        type:
          type: string
          const: note
          description: '`note` flow 노드의 discriminator 값입니다.'
        data:
          $ref: '#/components/schemas/NoteData'
          description: '`note` 타입 전용 data payload입니다.'
        position:
          $ref: '#/components/schemas/FlowNodePosition'
          description: >-
            flow builder layout 좌표입니다. API 생성 시 보통 생략할 수 있으며, 저장 시
            `POSITION_AUTOFILLED`로 채웁니다.
    AiCondition:
      additionalProperties: false
      description: runtime에서 LLM이 평가하는 자연어 edge condition입니다.
      properties:
        type:
          const: ai
          title: Type
          type: string
          description: 리소스 또는 설정 유형입니다.
        prompt:
          default: ''
          description: 자연어 transition condition입니다.
          title: Prompt
          type: string
      required:
        - type
      title: AiCondition
      type: object
    LogicCondition:
      properties:
        type:
          type: string
          const: logic
          title: Type
          description: 리소스 또는 설정 유형입니다.
        equations:
          items:
            $ref: '#/components/schemas/LogicEquation'
          type: array
          title: Equations
        operator:
          type: string
          enum:
            - '&&'
            - '||'
          title: Operator
          description: equation을 결합하는 방식입니다. `&&`는 AND, `||`는 OR입니다.
          default: '&&'
      additionalProperties: false
      type: object
      required:
        - type
      title: LogicCondition
      description: |-
        Retell과 정렬된 `equations` 형태를 사용하는 deterministic edge condition입니다.

        source node는 `condition` node여야 합니다(logic-source 제약은 별도 검증에서 강제됩니다).
    FallbackCondition:
      properties:
        type:
          type: string
          const: fallback
          title: Type
          description: 리소스 또는 설정 유형입니다.
      additionalProperties: false
      type: object
      required:
        - type
      title: FallbackCondition
      description: source node의 다른 condition이 맞지 않을 때 선택되는 기본 edge입니다.
    SkillItem:
      properties:
        id:
          anyOf:
            - type: string
            - type: 'null'
          title: Id
          description: 이 도구 안에서 고유한 스킬 식별자입니다.
        name:
          type: string
          title: Name
          description: LLM에 노출되는 스킬 이름입니다.
        description:
          anyOf:
            - type: string
            - type: 'null'
          title: Description
          description: LLM이 이 스킬을 사용해야 하는 조건입니다.
        content:
          type: string
          title: Content
          description: 이 스킬이 실행할 프롬프트 또는 지시문입니다.
      type: object
      required:
        - name
        - content
      title: SkillItem
      description: '`skill` 기본 도구 안에 들어가는 단일 스킬 정의입니다.'
    BeginData:
      additionalProperties: true
      properties:
        name:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          description: >-
            사람이 읽을 수 있는 node label입니다. 입력 시 선택 항목이며, 생략하면 서버가 node id에서 안정적인
            label을 채워 저장하므로 저장된 그래프에는 항상 존재합니다.
          title: Name
        globalNodeSettings:
          anyOf:
            - $ref: '#/components/schemas/FlowDataGlobalNodeSettings'
            - type: 'null'
          default: null
          description: flow 전역 노드 설정입니다.
        transitions:
          items:
            $ref: '#/components/schemas/FlowDataTransition'
          title: Transitions
          type: array
          description: node.data에 저장되는 LLM/fallback transition 목록입니다.
        firstLineType:
          anyOf:
            - enum:
                - aiFirst
                - userFirst
              type: string
            - type: 'null'
          default: aiFirst
          description: >-
            single_prompt 에이전트의 첫 발화 방식입니다. `userFirst`, `aiFirstDynamic`,
            `aiFirstStatic` 중 하나입니다.
          title: Firstlinetype
        pauseBeforeSpeakingSeconds:
          anyOf:
            - maximum: 5
              minimum: 0
              type: number
            - type: 'null'
          default: null
          title: Pausebeforespeakingseconds
          description: 에이전트가 첫 발화를 시작하기 전 대기 시간입니다. 단위는 초입니다.
      title: BeginData
      type: object
      description: '`begin` flow 노드의 data payload입니다.'
    FlowNodePosition:
      type: object
      title: FlowNodePosition
      description: >-
        flow builder layout 좌표입니다. API 생성 시 보통 생략할 수 있으며, 저장 시
        `POSITION_AUTOFILLED`로 채웁니다. 값을 보내는 경우 `{x, y}`는 숫자여야 합니다.
      required:
        - x
        - 'y'
      properties:
        x:
          type: number
          description: 가로 좌표입니다.
        'y':
          type: number
          description: 세로 좌표입니다.
    ConversationData:
      additionalProperties: true
      properties:
        name:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          description: >-
            사람이 읽을 수 있는 node label입니다. 입력 시 선택 항목이며, 생략하면 서버가 node id에서 안정적인
            label을 채워 저장하므로 저장된 그래프에는 항상 존재합니다.
          title: Name
        globalNodeSettings:
          anyOf:
            - $ref: '#/components/schemas/FlowDataGlobalNodeSettings'
            - type: 'null'
          default: null
          description: flow 전역 노드 설정입니다.
        transitions:
          items:
            $ref: '#/components/schemas/FlowDataTransition'
          title: Transitions
          type: array
          description: node.data에 저장되는 LLM/fallback transition 목록입니다.
        promptType:
          anyOf:
            - enum:
                - static
                - dynamic
              type: string
            - type: 'null'
          default: null
          title: Prompttype
          description: 노드 프롬프트 방식입니다.
        prompt:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          title: Prompt
          description: 에이전트 프롬프트 설정입니다.
        staticSentence:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          title: Staticsentence
          description: 정적 프롬프트 방식에서 사용할 고정 문장입니다.
        firstMessage:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          title: Firstmessage
          description: conversation 노드 진입 시 사용할 첫 메시지입니다.
        loopCondition:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          title: Loopcondition
          description: 노드를 반복 실행할 조건입니다.
        isAllowInterruption:
          anyOf:
            - type: boolean
            - type: 'null'
          default: null
          title: Isallowinterruption
          description: 노드 실행 중 사용자 발화로 인터럽트를 허용할지 여부입니다.
        isSkipUserResponse:
          anyOf:
            - type: boolean
            - type: 'null'
          default: null
          description: 이 conversation node가 말한 뒤 사용자 응답을 기다리지 않을지 여부입니다.
          title: Isskipuserresponse
        llm:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          default: null
          title: Llm
          description: LLM 설정입니다.
        knowledge:
          anyOf:
            - $ref: '#/components/schemas/FlowDataNodeKnowledgeConfig'
            - type: 'null'
          default: null
          description: 에이전트 knowledge base 설정입니다.
        knowledgeIds:
          anyOf:
            - items:
                type: integer
              type: array
            - type: 'null'
          default: null
          title: Knowledgeids
          description: >-
            이 에이전트에 연결할 숫자형 public knowledge ID 목록입니다. 값은 `GET /v3/knowledges`에서
            확인합니다.
      title: ConversationData
      type: object
      description: '`conversation` flow 노드의 data payload입니다.'
    ToolData:
      additionalProperties: true
      properties:
        name:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          description: >-
            사람이 읽을 수 있는 node label입니다. 입력 시 선택 항목이며, 생략하면 서버가 node id에서 안정적인
            label을 채워 저장하므로 저장된 그래프에는 항상 존재합니다.
          title: Name
        globalNodeSettings:
          anyOf:
            - $ref: '#/components/schemas/FlowDataGlobalNodeSettings'
            - type: 'null'
          default: null
          description: flow 전역 노드 설정입니다.
        transitions:
          items:
            $ref: '#/components/schemas/ExecutionTransition'
          title: Transitions
          type: array
          description: node.data에 저장되는 LLM/fallback transition 목록입니다.
        toolId:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          title: Toolid
          description: 호출할 custom 도구 ID입니다.
        promptType:
          anyOf:
            - enum:
                - none
                - static
                - dynamic
              type: string
            - type: 'null'
          default: null
          title: Prompttype
        prompt:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          title: Prompt
          description: 에이전트 프롬프트 설정입니다.
        staticSentence:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          title: Staticsentence
      title: ToolData
      type: object
      description: '`tool` flow 노드의 data payload입니다.'
    ConditionData:
      additionalProperties: true
      properties:
        name:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          description: >-
            사람이 읽을 수 있는 node label입니다. 입력 시 선택 항목이며, 생략하면 서버가 node id에서 안정적인
            label을 채워 저장하므로 저장된 그래프에는 항상 존재합니다.
          title: Name
        globalNodeSettings:
          anyOf:
            - $ref: '#/components/schemas/FlowDataGlobalNodeSettings'
            - type: 'null'
          default: null
          description: flow 전역 노드 설정입니다.
        transitions:
          items:
            $ref: '#/components/schemas/FlowDataTransition'
          title: Transitions
          type: array
          description: node.data에 저장되는 LLM/fallback transition 목록입니다.
        logicalTransitions:
          items:
            $ref: '#/components/schemas/FlowDataLogicalTransition'
          title: Logicaltransitions
          type: array
          description: node.data에 저장되는 변수 기반 transition 목록입니다.
      title: ConditionData
      type: object
      description: '`condition` flow 노드의 data payload입니다.'
    ExtractionData:
      additionalProperties: true
      properties:
        name:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          description: >-
            사람이 읽을 수 있는 node label입니다. 입력 시 선택 항목이며, 생략하면 서버가 node id에서 안정적인
            label을 채워 저장하므로 저장된 그래프에는 항상 존재합니다.
          title: Name
        globalNodeSettings:
          anyOf:
            - $ref: '#/components/schemas/FlowDataGlobalNodeSettings'
            - type: 'null'
          default: null
          description: flow 전역 노드 설정입니다.
        transitions:
          items:
            $ref: '#/components/schemas/FlowDataTransition'
          title: Transitions
          type: array
          description: node.data에 저장되는 LLM/fallback transition 목록입니다.
        extractionConfiguration:
          $ref: '#/components/schemas/FlowDataExtractionConfiguration'
          description: 추출 노드의 structured extraction 설정입니다.
        isSkipUserResponse:
          anyOf:
            - type: boolean
            - type: 'null'
          default: true
          title: Isskipuserresponse
          description: 추출 노드에서 사용자 응답을 기다리지 않고 다음 transition으로 진행할지 여부입니다.
        llm:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          default: null
          title: Llm
          description: 추출 노드에서 사용할 LLM 설정입니다.
        prompt:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          title: Prompt
          description: 에이전트 프롬프트 설정입니다.
      title: ExtractionData
      type: object
      description: '`extraction` flow 노드의 data payload입니다.'
    ApiData:
      additionalProperties: true
      properties:
        name:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          description: >-
            사람이 읽을 수 있는 node label입니다. 입력 시 선택 항목이며, 생략하면 서버가 node id에서 안정적인
            label을 채워 저장하므로 저장된 그래프에는 항상 존재합니다.
          title: Name
        globalNodeSettings:
          anyOf:
            - $ref: '#/components/schemas/FlowDataGlobalNodeSettings'
            - type: 'null'
          default: null
          description: flow 전역 노드 설정입니다.
        transitions:
          items:
            $ref: '#/components/schemas/ExecutionTransition'
          title: Transitions
          type: array
          description: node.data에 저장되는 LLM/fallback transition 목록입니다.
        responseMode:
          default: wait
          enum:
            - wait
            - fire_and_forget
          title: Responsemode
          type: string
        apiConfiguration:
          $ref: '#/components/schemas/FlowDataApiConfiguration'
          description: API 노드가 호출할 외부 HTTP 요청 설정입니다.
        responseVariables:
          items:
            $ref: '#/components/schemas/FlowDataApiResponseVariable'
          title: Responsevariables
          type: array
          description: API 응답에서 추출해 저장할 변수 목록입니다.
        promptType:
          anyOf:
            - enum:
                - none
                - static
                - dynamic
              type: string
            - type: 'null'
          default: null
          title: Prompttype
        prompt:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          title: Prompt
          description: 에이전트 프롬프트 설정입니다.
        staticSentence:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          title: Staticsentence
      required:
        - apiConfiguration
      title: ApiData
      type: object
      description: '`api` flow 노드의 data payload입니다.'
    SendSmsData:
      additionalProperties: true
      properties:
        name:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          description: >-
            사람이 읽을 수 있는 node label입니다. 입력 시 선택 항목이며, 생략하면 서버가 node id에서 안정적인
            label을 채워 저장하므로 저장된 그래프에는 항상 존재합니다.
          title: Name
        globalNodeSettings:
          anyOf:
            - $ref: '#/components/schemas/FlowDataGlobalNodeSettings'
            - type: 'null'
          default: null
          description: flow 전역 노드 설정입니다.
        transitions:
          items:
            $ref: '#/components/schemas/ExecutionTransition'
          title: Transitions
          type: array
          description: node.data에 저장되는 LLM/fallback transition 목록입니다.
        responseMode:
          default: wait
          enum:
            - wait
            - fire_and_forget
          title: Responsemode
          type: string
        promptType:
          anyOf:
            - enum:
                - static
                - dynamic
              type: string
            - type: 'null'
          default: static
          title: Prompttype
          description: 노드 프롬프트 방식입니다.
        prompt:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          title: Prompt
          description: 에이전트 프롬프트 설정입니다.
        staticTitle:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          title: Statictitle
          description: 정적 SMS/LMS/MMS 전송에 사용할 제목입니다.
        staticSentence:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          title: Staticsentence
          description: 정적 프롬프트 방식에서 사용할 고정 문장입니다.
        staticImageFileKeys:
          anyOf:
            - items:
                type: string
              type: array
              maxItems: 3
            - type: 'null'
          default: null
          description: >-
            MMS 이미지 첨부 file key 목록입니다. 값은 파일 업로드 endpoint가 반환한 opaque `file_key`
            문자열입니다.
          title: Staticimagefilekeys
        smsFromNumber:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          title: Smsfromnumber
          description: SMS 발신에 사용할 조직 보유 발신 번호입니다.
      title: SendSmsData
      type: object
      description: '`sendSms` flow 노드의 data payload입니다.'
    TransferCallData:
      additionalProperties: true
      properties:
        name:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          description: >-
            사람이 읽을 수 있는 node label입니다. 입력 시 선택 항목이며, 생략하면 서버가 node id에서 안정적인
            label을 채워 저장하므로 저장된 그래프에는 항상 존재합니다.
          title: Name
        globalNodeSettings:
          anyOf:
            - $ref: '#/components/schemas/FlowDataGlobalNodeSettings'
            - type: 'null'
          default: null
          description: flow 전역 노드 설정입니다.
        transitions:
          items:
            $ref: '#/components/schemas/FlowDataTransition'
          title: Transitions
          type: array
          description: node.data에 저장되는 LLM/fallback transition 목록입니다.
        transferConfiguration:
          $ref: '#/components/schemas/FlowDataTransferConfiguration'
          description: 통화 전환 대상과 조건 설정입니다.
        transferType:
          anyOf:
            - enum:
                - cold
                - warm
              type: string
            - type: 'null'
          default: cold
          title: Transfertype
          description: 통화 전환 유형입니다.
        transferMessageType:
          anyOf:
            - enum:
                - static
                - dynamic
              type: string
            - type: 'null'
          default: static
          title: Transfermessagetype
          description: 전환 전 사용자에게 안내할 메시지 방식입니다.
        warmTransferPrompt:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          title: Warmtransferprompt
          description: warm transfer 안내 문구를 생성할 프롬프트입니다.
        warmTransferStaticSentence:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          title: Warmtransferstaticsentence
          description: warm transfer에서 사용할 고정 안내 문장입니다.
        displayedCallerId:
          anyOf:
            - enum:
                - agent
                - user
              type: string
            - type: 'null'
          default: agent
          title: Displayedcallerid
          description: 전환 대상에게 표시할 발신 번호입니다.
        sipHeaders:
          anyOf:
            - items:
                $ref: '#/components/schemas/FlowDataSipHeader'
              type: array
            - type: 'null'
          default: null
          title: Sipheaders
          description: SIP 전환 요청에 포함할 header 목록입니다.
        promptType:
          anyOf:
            - enum:
                - none
                - static
                - dynamic
              type: string
            - type: 'null'
          default: null
          title: Prompttype
        prompt:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          title: Prompt
          description: 에이전트 프롬프트 설정입니다.
        staticSentence:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          title: Staticsentence
      required:
        - transferConfiguration
      title: TransferCallData
      type: object
      description: '`transferCall` flow 노드의 data payload입니다.'
    TransferAgentData:
      additionalProperties: true
      properties:
        name:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          description: >-
            사람이 읽을 수 있는 node label입니다. 입력 시 선택 항목이며, 생략하면 서버가 node id에서 안정적인
            label을 채워 저장하므로 저장된 그래프에는 항상 존재합니다.
          title: Name
        globalNodeSettings:
          anyOf:
            - $ref: '#/components/schemas/FlowDataGlobalNodeSettings'
            - type: 'null'
          default: null
          description: flow 전역 노드 설정입니다.
        transitions:
          items:
            $ref: '#/components/schemas/FlowDataTransition'
          title: Transitions
          type: array
          description: node.data에 저장되는 LLM/fallback transition 목록입니다.
        agent:
          $ref: '#/components/schemas/FlowDataAgentMapping'
          description: '`agent_id`와 `agent_version`으로 구성된 에이전트 매핑 객체입니다.'
        preserveChatContext:
          anyOf:
            - type: boolean
            - type: 'null'
          default: null
          title: Preservechatcontext
          description: 전환 후 에이전트에 이전 대화 context를 전달할지 여부입니다.
      required:
        - agent
      title: TransferAgentData
      type: object
      description: '`transferAgent` flow 노드의 data payload입니다.'
    EndCallData:
      additionalProperties: true
      properties:
        name:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          description: >-
            사람이 읽을 수 있는 node label입니다. 입력 시 선택 항목이며, 생략하면 서버가 node id에서 안정적인
            label을 채워 저장하므로 저장된 그래프에는 항상 존재합니다.
          title: Name
        globalNodeSettings:
          anyOf:
            - $ref: '#/components/schemas/FlowDataGlobalNodeSettings'
            - type: 'null'
          default: null
          description: flow 전역 노드 설정입니다.
        transitions:
          items:
            $ref: '#/components/schemas/FlowDataTransition'
          title: Transitions
          type: array
          description: node.data에 저장되는 LLM/fallback transition 목록입니다.
        promptType:
          anyOf:
            - enum:
                - none
                - static
                - dynamic
              type: string
            - type: 'null'
          default: null
          title: Prompttype
          description: 노드 프롬프트 방식입니다.
        prompt:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          title: Prompt
          description: 에이전트 프롬프트 설정입니다.
        staticSentence:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          title: Staticsentence
          description: 정적 프롬프트 방식에서 사용할 고정 문장입니다.
      title: EndCallData
      type: object
      description: '`endCall` flow 노드의 data payload입니다.'
    NoteData:
      additionalProperties: true
      properties:
        name:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          description: >-
            사람이 읽을 수 있는 node label입니다. 입력 시 선택 항목이며, 생략하면 서버가 node id에서 안정적인
            label을 채워 저장하므로 저장된 그래프에는 항상 존재합니다.
          title: Name
        globalNodeSettings:
          anyOf:
            - $ref: '#/components/schemas/FlowDataGlobalNodeSettings'
            - type: 'null'
          default: null
          description: flow 전역 노드 설정입니다.
        transitions:
          items:
            $ref: '#/components/schemas/FlowDataTransition'
          title: Transitions
          type: array
          description: node.data에 저장되는 LLM/fallback transition 목록입니다.
        content:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          title: Content
          description: 이 flow 노드 또는 메시지 객체의 텍스트 내용입니다.
        width:
          anyOf:
            - type: number
            - type: 'null'
          default: null
          title: Width
          description: note 노드의 표시 너비입니다.
        height:
          anyOf:
            - type: number
            - type: 'null'
          default: null
          title: Height
          description: note 노드의 표시 높이입니다.
      title: NoteData
      type: object
      description: '`note` flow 노드의 data payload입니다.'
    LogicEquation:
      properties:
        left:
          type: string
          title: Left
          description: 왼쪽 operand입니다. 보통 추출 변수 이름입니다.
        operator:
          type: string
          enum:
            - equals
            - not_equals
            - contains
            - does_not_contain
            - greater_than
            - greater_than_or_equal
            - less_than
            - less_than_or_equal
            - exists
            - does_not_exist
          title: Operator
          description: >-
            비교 operator입니다. builder/runtime snake_case를 사용합니다. 예:
            `greater_than`, `does_not_exist`.
        right:
          anyOf:
            - {}
            - type: 'null'
          title: Right
          description: >-
            오른쪽 operand입니다. string/number/bool이 될 수 있고, `exists` /
            `does_not_exist`에서는 null일 수 있습니다.
      additionalProperties: false
      type: object
      required:
        - left
        - operator
      title: LogicEquation
      description: >-
        `logic` condition 안의 단일 deterministic comparison입니다(Retell과 정렬된
        equations 형태).


        Retell과 맞춘 naming에서 `left`는 추출 변수이고, `right`는 비교 값입니다. `exists` /
        `does_not_exist`에서는 생략할 수 있습니다.
    FlowDataGlobalNodeSettings:
      additionalProperties: true
      properties:
        isGlobalNode:
          default: false
          title: Isglobalnode
          type: boolean
        transitionCondition:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          title: Transitioncondition
      title: FlowDataGlobalNodeSettings
      type: object
    FlowDataTransition:
      additionalProperties: true
      properties:
        id:
          description: >-
            안정적인 transition ID입니다. edge는 `edge.sourceHandle`로 이 값을 참조해 분기와
            연결됩니다.
          title: Id
          type: string
        condition:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          description: >-
            Natural-language branch condition shown in the flow builder and used
            as the routing rationale. Required for ordinary transitions — write
            a concrete Korean phrase such as '주문 번호를 받았을 때' or 'API 응답이 200 OK 일
            때'. When `isFallback: true`, use the canonical text per node type:
            '요청 실패 시' for api / function / tool / sendSms, '에러 발생 시' for
            transferAgent / transferCall. When `isSkipUserResponse: true`, the
            flow builder labels the row '유저 응답 건너뛰기' and the field may be
            omitted. Do not use `isSkipUserResponse` on api / function / tool /
            sendSms rows; those nodes progress from tool output.
          title: Condition
        isSkipUserResponse:
          anyOf:
            - type: boolean
            - type: 'null'
          default: null
          description: >-
            user-response-skip route를 표시합니다. 모든 extraction node와
            `data.isSkipUserResponse=true`인 conversation node에 필요합니다.
            api/function/tool/sendSms transition에는 지원하지 않습니다.
          title: Isskipuserresponse
        isFallback:
          anyOf:
            - type: boolean
            - type: 'null'
          default: null
          description: >-
            실패 경로를 표시합니다. transferCall과 transferAgent에는 필수입니다.
            api/function/tool/sendSms처럼 upstream call이 실패할 수 있는 경우 설정을 권장합니다.
            conversation/note row에는 지원하지 않습니다.
          title: Isfallback
        isGlobalTransition:
          anyOf:
            - type: boolean
            - type: 'null'
          default: null
          title: Isglobaltransition
      required:
        - id
      title: FlowDataTransition
      type: object
    FlowDataNodeKnowledgeConfig:
      additionalProperties: true
      properties:
        ragEnabled:
          default: false
          title: Ragenabled
          type: boolean
          description: 이 agent에서 retrieval-augmented generation 사용 여부입니다.
        knowledgeIds:
          anyOf:
            - items:
                type: integer
              type: array
            - type: 'null'
          default: null
          title: Knowledgeids
          description: >-
            `GET /v3/knowledges`에서 반환되고 이 agent에 연결되는 numeric public knowledge
            ID 목록입니다.
      title: FlowDataNodeKnowledgeConfig
      type: object
    ExecutionTransition:
      additionalProperties: true
      properties:
        id:
          description: >-
            안정적인 transition ID입니다. edge는 `edge.sourceHandle`로 이 값을 참조해 분기와
            연결됩니다.
          title: Id
          type: string
        condition:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          description: >-
            flow builder에 표시되고 분기 근거로 쓰이는 자연어 조건입니다. 일반 transition에는 구체적인 한국어
            문구를 쓰세요. fallback이나 user-response-skip 경로는 노드 타입별 규칙을 따릅니다.
          title: Condition
        isFallback:
          anyOf:
            - type: boolean
            - type: 'null'
          default: null
          description: >-
            실패 경로를 표시합니다. transferCall과 transferAgent에는 필수입니다.
            api/function/tool/sendSms처럼 외부 호출이 실패할 수 있는 노드에는 설정을 권장합니다.
          title: Isfallback
        isGlobalTransition:
          anyOf:
            - type: boolean
            - type: 'null'
          default: null
          title: Isglobaltransition
          description: 전역 transition으로 처리할지 여부입니다.
      required:
        - id
      title: Transition
      type: object
      description: 외부 실행 노드에서 사용하는 transition 정의입니다.
    FlowDataLogicalTransition:
      additionalProperties: true
      properties:
        id:
          title: Id
          type: string
          description: 응답 객체 자체의 ID 또는 중첩 설정 객체 안의 로컬 ID입니다.
        condition:
          $ref: '#/components/schemas/FlowDataLogicalCondition'
        isSkipUserResponse:
          anyOf:
            - type: boolean
            - type: 'null'
          default: null
          description: >-
            Legacy/editor field입니다. api/function/tool/sendSms
            logicalTransitions에는 설정하지 마세요. execution-node 진행은
            skip-user-response가 아니라 tool output이 결정합니다.
          title: Isskipuserresponse
        isGlobalTransition:
          anyOf:
            - type: boolean
            - type: 'null'
          default: null
          title: Isglobaltransition
      required:
        - id
        - condition
      title: FlowDataLogicalTransition
      type: object
    FlowDataExtractionConfiguration:
      additionalProperties: true
      properties:
        extractionPrompt:
          default: ''
          title: Extractionprompt
          type: string
        variables:
          items:
            $ref: '#/components/schemas/FlowDataVariableDefinition'
          title: Variables
          type: array
          description: 이 추출 설정이 생성하는 변수 목록입니다.
      title: FlowDataExtractionConfiguration
      type: object
    FlowDataApiConfiguration:
      additionalProperties: true
      properties:
        method:
          default: GET
          enum:
            - GET
            - POST
            - PUT
            - DELETE
          title: Method
          type: string
          description: API 노드에서 사용할 HTTP method입니다.
        url:
          title: Url
          type: string
        authorizationEnabled:
          default: false
          title: Authorizationenabled
          type: boolean
        authType:
          default: None
          enum:
            - None
            - Basic
            - Bearer
          title: Authtype
          type: string
        authCredentials:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          title: Authcredentials
        authEncodeRequired:
          default: false
          title: Authencoderequired
          type: boolean
        headersEnabled:
          default: false
          title: Headersenabled
          type: boolean
        headers:
          additionalProperties:
            type: string
          title: Headers
          type: object
          description: API 노드에서 보낼 custom HTTP header입니다.
        bodyEnabled:
          default: false
          title: Bodyenabled
          type: boolean
        body:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          title: Body
          description: API 노드에서 보낼 요청 body 또는 template입니다.
        timeoutSeconds:
          default: 10
          exclusiveMinimum: 0
          title: Timeoutseconds
          type: integer
      required:
        - url
      title: FlowDataApiConfiguration
      type: object
    FlowDataApiResponseVariable:
      additionalProperties: true
      properties:
        variableName:
          title: Variablename
          type: string
        jsonPath:
          title: Jsonpath
          type: string
      required:
        - variableName
        - jsonPath
      title: FlowDataApiResponseVariable
      type: object
    FlowDataTransferConfiguration:
      additionalProperties: true
      properties:
        transferTo:
          title: Transferto
          type: string
        transferType:
          default: phone
          enum:
            - phone
            - sip
          title: Transfertype
          type: string
        transferCondition:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          title: Transfercondition
      required:
        - transferTo
      title: FlowDataTransferConfiguration
      type: object
    FlowDataSipHeader:
      additionalProperties: true
      properties:
        name:
          type: string
          title: Name
          description: 사람이 읽을 수 있는 리소스 이름입니다.
        value:
          title: Value
          type: string
          description: 이 조건에서 비교할 값입니다.
      required:
        - name
        - value
      title: FlowDataSipHeader
      type: object
    FlowDataAgentMapping:
      additionalProperties: false
      description: |-
        agent_id + agent_version 매핑.

        요청·응답 모두에서 에이전트 매핑이 필요한 경우 이 타입을 사용한다.
        요청 중 version 지정이 불필요한 엔드포인트는 flat `agent_id: UUID` 를 직접 받고,
        `AgentMapping` 을 쓰지 않는다.
      properties:
        agent_id:
          description: 에이전트 UUID입니다.
          format: uuid
          title: Agent Id
          type: string
        agent_version:
          default: current
          description: >-
            에이전트 버전. 허용값: "current", "production", 또는 "v{n}" (n≥1). 미전송 시
            "current"로 처리됩니다. null 전송은 거부.
          title: Agent Version
          type: string
          pattern: ^(current|production|v[1-9][0-9]*)$
          examples:
            - current
            - production
            - v1
      required:
        - agent_id
      title: FlowDataAgentMapping
      type: object
    FlowDataLogicalCondition:
      additionalProperties: true
      properties:
        conditions:
          items:
            $ref: '#/components/schemas/FlowDataSingleCondition'
          title: Conditions
          type: array
          description: 이 논리 조건에서 평가할 중첩 조건 목록입니다.
        logicalOperator:
          default: or
          enum:
            - and
            - or
          title: Logicaloperator
          type: string
      title: FlowDataLogicalCondition
      type: object
    FlowDataVariableDefinition:
      additionalProperties: true
      properties:
        variableName:
          pattern: ^[a-zA-Z][a-zA-Z0-9_]{0,39}$
          title: Variablename
          type: string
        variableType:
          default: string
          enum:
            - string
            - number
            - boolean
          title: Variabletype
          type: string
        variableDescription:
          default: ''
          title: Variabledescription
          type: string
      required:
        - variableName
      title: FlowDataVariableDefinition
      type: object
    FlowDataSingleCondition:
      additionalProperties: true
      properties:
        variable:
          title: Variable
          type: string
        operator:
          enum:
            - equals
            - not_equals
            - contains
            - does_not_contain
            - greater_than
            - greater_than_or_equal
            - less_than
            - less_than_or_equal
            - exists
            - does_not_exist
          title: Operator
          type: string
          description: 이 조건에서 사용할 비교 연산자입니다.
        value:
          anyOf:
            - {}
            - type: 'null'
          default: null
          title: Value
          description: 이 조건에서 비교할 값입니다.
      required:
        - variable
        - operator
      title: FlowDataSingleCondition
      type: object
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: Organization API key
      description: '조직 API 키를 `Authorization: Bearer <token>` 형식으로 보냅니다.'

````