{
  "title": "Explore registered care providers — settings",
  "type": "object",
  "schemaVersion": 1,
  "properties": {
    "providerType": {
      "title": "Individual or organization",
      "type": "string",
      "description": "Individual = clinicians (doctors, dentists, nurses, therapists). Organization = clinics, hospitals, group practices, pharmacies.",
      "editor": "select",
      "default": "individual",
      "enum": [
        "individual",
        "organization"
      ],
      "enumTitles": [
        "Individual (doctors, dentists, therapists)",
        "Organization (clinics, hospitals, groups)"
      ],
      "sectionCaption": "Specialty and location"
    },
    "specialty": {
      "title": "Specialty description",
      "type": "string",
      "description": "Provider specialty / taxonomy description, e.g. 'Cardiovascular Disease', 'Dentist', 'Physical Therapist', 'Dermatology', 'Pharmacy'. Taxonomy codes such as '207N00000X' are not accepted - NPPES refuses them and the run fails with its error message. Leave empty for all.",
      "editor": "textfield",
      "example": "Physical Therapist"
    },
    "state": {
      "title": "State — pair with another filter",
      "type": "string",
      "description": "Two-letter US state code, e.g. 'CA', 'TX', 'NY'. Strongly recommended to narrow results, but NPPES refuses a state on its own - pair it with a specialty, city, ZIP code or name, or the run fails with NPPES's error message.",
      "editor": "textfield",
      "example": "CA"
    },
    "city": {
      "title": "Registered city name",
      "type": "string",
      "description": "Full city name exactly as registered with NPPES, e.g. 'San Diego' (case-insensitive, no abbreviations). Pair it with State - city names repeat across states, and results are then filtered to addresses actually in that city.",
      "editor": "textfield",
      "example": "San Diego"
    },
    "postalCode": {
      "title": "Full five-digit ZIP code",
      "type": "string",
      "description": "Full 5-digit ZIP code, e.g. '92101'. Use the complete ZIP - a shorter prefix such as '902' returns nothing, and a wildcard such as '902*' is discarded by the address filter, leaving an empty dataset.",
      "editor": "textfield",
      "example": "92101"
    },
    "firstName": {
      "title": "First name",
      "type": "string",
      "description": "First name of an individual provider, e.g. 'Maria'. NPPES also returns common variants (Maria also matches Mary); add a trailing * for a prefix search, e.g. 'Mari*'.",
      "editor": "textfield",
      "example": "Maria"
    },
    "lastName": {
      "title": "Last name",
      "type": "string",
      "description": "Last name of an individual provider, e.g. 'Smith'. It is an exact match - add a trailing * for a prefix search ('Smi*'). NPPES also searches former and professional names, so some rows come back under a different current name.",
      "editor": "textfield",
      "example": "Smith"
    },
    "organizationName": {
      "title": "Organization name — organization mode",
      "type": "string",
      "description": "Organization (NPI-2) name, e.g. 'Kaiser Permanente*'. It is an exact match by default - add a trailing * to match any name starting with your text. Set Provider type to Organization - with Provider type Individual, NPPES refuses the search and the run fails with its error message.",
      "editor": "textfield",
      "example": "Kaiser Permanente*"
    },
    "maxResults": {
      "title": "Maximum providers to save",
      "type": "integer",
      "description": "Upper bound on providers returned per run. Note: the NPI Registry API returns at most 1,200 results per unique query — narrow by specialty + state + city to get everyone in a niche.",
      "editor": "number",
      "default": 500,
      "minimum": 1
    },
    "maxRunSeconds": {
      "title": "Run time budget (seconds)",
      "type": "integer",
      "description": "Wall-clock budget for this run, in seconds. When it is reached the Actor stops cleanly and finishes successfully with the rows it already collected, instead of being killed mid-run. At most 6 pages, but the NPI Registry can stall for 30 s on each. Raise it (and the run timeout in Run options) for a deliberately large job.",
      "editor": "number",
      "default": 240,
      "minimum": 30,
      "sectionCaption": "Run budget"
    }
  },
  "description": "For healthcare market research and provider-directory work, build a focused list from the official NPPES NPI registry. Individual and organization records from NPPES. Phone and fax availability depends on what each provider registered."
}
