{
  "openapi": "3.0.1",
  "info": {
    "title": "License Verification API — TDLR, DBPR, DORA, WA DOH, NPI",
    "description": "Verify professional licenses by license number (or by name within one state board) from official public records: Texas TDLR, Florida DBPR, Colorado DORA, Washington DOH and the federal NPI Registry. Normalized status and expiration; discipline on request. Pay per record. Not a consumer report.",
    "version": "0.1",
    "x-build-id": "58bv5bxCeVerDn36A"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/owlabee~license-verification-api/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-owlabee-license-verification-api",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/owlabee~license-verification-api/runs": {
      "post": {
        "operationId": "runs-sync-owlabee-license-verification-api",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/owlabee~license-verification-api/run-sync": {
      "post": {
        "operationId": "run-sync-owlabee-license-verification-api",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "queries": {
            "title": "Queries (quick form)",
            "type": "array",
            "description": "One license query per line, parsed leniently: \"TX:3365:Master Electrician\" (state:number[:type]), \"FL:SEC17708\", \"name:Jane Smith:FL\" (name limited to a state), \"name:Jane Smith\" (a name without a state is accepted only when exactly one source is enabled; names are never searched across states), \"npi:1003000126\" (NPI number), \"npi:Jane Smith:TX\" (NPI by name). Use \"Lookups (structured)\" for city or exact fields. The prefilled values are the cheap, always-available examples used by Apify's daily automated test.",
            "items": {
              "type": "string"
            }
          },
          "lookups": {
            "title": "Lookups (structured)",
            "type": "array",
            "description": "Optional JSON array of query objects: [{\"state\": \"TX\", \"licenseNumber\": \"3365\", \"licenseType\": \"Master Electrician\"}, {\"state\": \"CO\", \"name\": \"Smith, John\", \"licenseType\": \"RN\"}, {\"board\": \"NPI\", \"name\": \"Mayo Clinic\", \"state\": \"MN\"}]. Fields: state, licenseNumber, name (person \"Last, First\" / \"First Last\" or business), licenseType, city, board (TDLR, DBPR, DORA, DOH, NPI). Combined with \"Queries\"."
          },
          "mode": {
            "title": "Mode",
            "enum": [
              "lookup",
              "verify"
            ],
            "type": "string",
            "description": "lookup = return every matching license record. verify = same records plus verified (true only when the license is found, status is ACTIVE and it is not expired) and verificationNotes.",
            "default": "lookup"
          },
          "sources": {
            "title": "Sources",
            "type": "array",
            "description": "Which official public sources to query. A query with a state only hits that state's board(s); a license number with no state hits every enabled source; a name with no state is accepted only when exactly one source is enabled (no cross-state name search); board \"NPI\" (or a bare 10-digit number) hits the federal NPI Registry.",
            "items": {
              "type": "string",
              "enum": [
                "TX_TDLR",
                "FL_DBPR",
                "CO_DORA",
                "WA_DOH",
                "NPI"
              ],
              "enumTitles": [
                "Texas TDLR (data.texas.gov open data)",
                "Florida DBPR (myfloridalicense.com)",
                "Colorado DORA (data.colorado.gov open data)",
                "Washington DOH health credentials (data.wa.gov open data)",
                "NPI Registry (CMS NPPES, federal healthcare providers)"
              ]
            },
            "default": [
              "TX_TDLR",
              "FL_DBPR",
              "CO_DORA",
              "WA_DOH",
              "NPI"
            ]
          },
          "maxResultsPerQuery": {
            "title": "Max records per query",
            "minimum": 1,
            "maximum": 200,
            "type": "integer",
            "description": "Cap on license records returned for one query across all sources (1–200). Name searches on common names can match hundreds of licenses; narrow them with a state, license type or city.",
            "default": 25
          },
          "maxResults": {
            "title": "Max results",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Upper bound on dataset items per run (license records, not-found results and error items). Use together with the run's maximum cost to control spend.",
            "default": 500
          },
          "monitor": {
            "title": "Monitor mode (only changes since last run)",
            "type": "boolean",
            "description": "For schedules: remember every license seen per query in the state store and emit only records whose status or expiration date changed, plus licenses that appeared or disappeared (changeType new / changed / removed). The first run is a baseline and emits (and charges for) everything; later runs charge one monitor re-check per query.",
            "default": false
          },
          "includeDiscipline": {
            "title": "Include disciplinary data",
            "type": "boolean",
            "description": "Off by default. When on, records carry the board's own disciplinary fields as published: disciplinaryActionFlag (Colorado DORA, Washington DOH), disciplinaryAction (Colorado case number, action and dates) and disciplinaryActionPending (Washington). Texas, Florida and NPI publish none. The Actor adds no severity or risk score. Not for employment, credit, insurance, housing or tenant-screening decisions.",
            "default": false
          },
          "stateStoreName": {
            "title": "State store name",
            "type": "string",
            "description": "Named key-value store that holds the monitor snapshots. Use a different name per schedule if two schedules share queries.",
            "default": "us-license-verifier-state"
          },
          "socrataAppToken": {
            "title": "Socrata app token (optional)",
            "type": "string",
            "description": "Free app token from any Socrata open-data portal (e.g. data.texas.gov → Developer Settings). Raises the per-IP rate limit for the Texas, Colorado and Washington datasets; not required for small runs. Stored encrypted and never logged."
          },
          "maxConcurrency": {
            "title": "Max concurrent queries",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "How many queries run in parallel (1–5). Each source is still rate-limited to about one request per second.",
            "default": 3
          },
          "webhookUrl": {
            "title": "Webhook URL (optional)",
            "pattern": "^https?://.+",
            "type": "string",
            "description": "If set, the Actor POSTs a JSON run summary plus the emitted items (max 500) to this URL when it finishes. Failures are logged, never fatal."
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}