Updox Address Book API

List, search, and create contacts in a practice-level address book - AddressBookList (with an international-address v1.1), AddressBookSearch by criteria, and ContactCreate. These POST actions are confirmed in Updox's IO Docs explorer.

OpenAPI Specification

updox-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Updox IO API (Modeled)
  version: '1.0'
  description: >-
    Modeled OpenAPI for the confirmed actions of the Updox "IO" API. Updox
    exposes a POST-based partner API surfaced through an IO Docs explorer
    (https://updoxqa.com/api/newio) with tiered application / account / user
    authentication. This document transcribes only the actions confirmed in the
    IO Docs explorer and knowledge base (Ping health checks, Address Book
    contacts, Faxing poll functions, and Video Chat actions); request/response
    bodies are modeled from the documented behavior, not a machine-readable
    Updox spec. Updox is part of EverCommerce (NASDAQ - EVCM).
  contact:
    name: Updox Support
    url: https://www.updox.com/support/
  x-modeled: true
servers:
  - url: https://updoxqa.com/api/io
    description: Updox IO Docs / QA reference host (production base is provisioned per partner)
tags:
  - name: Ping
    description: Connectivity and authentication health checks.
  - name: Address Book
    description: Practice-level contact/address-book actions.
  - name: Faxing
    description: Inbound electronic fax retrieval.
  - name: Video Chat
    description: Telehealth video call actions.
paths:
  /Ping:
    post:
      tags: [Ping]
      summary: Ping (no authentication)
      description: Unauthenticated connectivity check.
      operationId: ping
      responses:
        '200':
          description: Service reachable.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PingResponse'
  /PingWithApplicationAuth:
    post:
      tags: [Ping]
      summary: Ping with application authentication
      operationId: pingWithApplicationAuth
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApplicationAuth'
      responses:
        '200':
          description: Application credentials validated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PingResponse'
  /PingWithAccountAuth:
    post:
      tags: [Ping]
      summary: Ping with application + account authentication
      operationId: pingWithAccountAuth
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AccountAuth'
      responses:
        '200':
          description: Application + account credentials validated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PingResponse'
  /PingWithAuth:
    post:
      tags: [Ping]
      summary: Ping with full authentication (application + account + user)
      operationId: pingWithAuth
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FullAuth'
      responses:
        '200':
          description: Full credentials validated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PingResponse'
  /AddressBookList:
    post:
      tags: [Address Book]
      summary: List address book contacts
      description: Get all contacts associated with the supplied account.
      operationId: addressBookList
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AccountAuth'
      responses:
        '200':
          description: Contacts for the account.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContactList'
  /AddressBookSearch:
    post:
      tags: [Address Book]
      summary: Search the practice address book
      description: Search the practice-level address book by criteria.
      operationId: addressBookSearch
      requestBody:
        required: true
        content:
          application/json:
            schema:
              allOf:
                - $ref: '#/components/schemas/AccountAuth'
                - type: object
                  properties:
                    searchCriteria:
                      type: string
                      description: Name, phone, or other match criteria.
      responses:
        '200':
          description: Matching contacts.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContactList'
  /ContactCreate:
    post:
      tags: [Address Book]
      summary: Create a contact
      description: Create a contact with the supplied information.
      operationId: contactCreate
      requestBody:
        required: true
        content:
          application/json:
            schema:
              allOf:
                - $ref: '#/components/schemas/AccountAuth'
                - $ref: '#/components/schemas/Contact'
      responses:
        '200':
          description: Contact created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Contact'
  /FaxOemPop:
    post:
      tags: [Faxing]
      summary: Retrieve next inbound fax (PNG)
      description: >-
        Multifunction poll. Reports whether inbound faxes are queued, returns the
        oldest unhandled fax image (PNG) in the response, and marks the prior fax
        handled via lastRetrievedFaxId. Repeat until endOfQueue is true.
      operationId: faxOemPop
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FaxPopRequest'
      responses:
        '200':
          description: Fax payload or end-of-queue marker.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FaxPopResponse'
  /PopPDF:
    post:
      tags: [Faxing]
      summary: Retrieve next inbound fax (PDF)
      description: Same behavior and parameters as FaxOemPop, but returns the fax as a PDF.
      operationId: popPdf
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FaxPopRequest'
      responses:
        '200':
          description: Fax payload or end-of-queue marker.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FaxPopResponse'
  /VideoCallActions:
    post:
      tags: [Video Chat]
      summary: Video call actions (SendInvite / retrieval)
      description: >-
        Telehealth video actions. SendInvite invites a patient into an Updox
        Video Chat session; retrieval actions return call state. The action is
        selected by the request body.
      operationId: videoCallActions
      requestBody:
        required: true
        content:
          application/json:
            schema:
              allOf:
                - $ref: '#/components/schemas/FullAuth'
                - type: object
                  properties:
                    action:
                      type: string
                      enum: [SendInvite, GetCall, ListCalls]
                    patientId:
                      type: string
                    phoneOrEmail:
                      type: string
                      description: Destination for the video invite.
      responses:
        '200':
          description: Action result (invite confirmation or call state).
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
components:
  schemas:
    ApplicationAuth:
      type: object
      required: [applicationId, applicationPassword]
      properties:
        applicationId:
          type: string
        applicationPassword:
          type: string
    AccountAuth:
      allOf:
        - $ref: '#/components/schemas/ApplicationAuth'
        - type: object
          required: [accountId]
          properties:
            accountId:
              type: string
    FullAuth:
      allOf:
        - $ref: '#/components/schemas/AccountAuth'
        - type: object
          required: [userId]
          properties:
            userId:
              type: string
    PingResponse:
      type: object
      properties:
        status:
          type: string
          example: ok
        timestamp:
          type: string
          format: date-time
    Contact:
      type: object
      properties:
        contactId:
          type: string
        firstName:
          type: string
        lastName:
          type: string
        organization:
          type: string
        phone:
          type: string
        fax:
          type: string
        email:
          type: string
        address:
          type: string
    ContactList:
      type: object
      properties:
        contacts:
          type: array
          items:
            $ref: '#/components/schemas/Contact'
    FaxPopRequest:
      allOf:
        - $ref: '#/components/schemas/AccountAuth'
        - type: object
          properties:
            lastRetrievedFaxId:
              type: string
              description: >-
                ID of the previously retrieved fax, marking it handled so the
                next unhandled fax is returned. Omit on the first call.
    FaxPopResponse:
      type: object
      properties:
        faxId:
          type: string
        endOfQueue:
          type: boolean
          description: True when no more unhandled faxes remain.
        contentType:
          type: string
          enum: [image/png, application/pdf]
        content:
          type: string
          format: byte
          description: Base64-encoded fax image, present when a fax is available.
maintainers:
  - FN: Kin Lane
    email: kin@apievangelist.com