{
  "openapi": "3.0.1",
  "info": {
    "title": "PDC API",
    "description": "Provides access to PDC data",
    "contact": {
      "name": "Federation of State Medical Boards",
      "url": "https://pdc.fsmb.org",
      "email": "pdc@fsmb.org"
    },
    "version": "1"
  },
  "paths": {
    "/v1/rosters/{customerKey}/members": {
      "post": {
        "tags": [
          "Member"
        ],
        "summary": "Add Member",
        "description": "Add a member to the roster.",
        "parameters": [
          {
            "name": "customerKey",
            "in": "path",
            "description": "Customer key",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Request",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AddMemberRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/AddMemberRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/AddMemberRequest"
              }
            }
          }
        },
        "responses": {
          "401": {
            "description": "Unauthorized access",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Member"
                }
              }
            }
          },
          "409": {
            "description": "Member already exists and ignoreExisting is not set.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "400": {
            "description": "FID is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/v1/rosters/{customerKey}/members/{fid}": {
      "get": {
        "tags": [
          "Member"
        ],
        "summary": "Get Member",
        "description": "Get a member by FID.",
        "parameters": [
          {
            "name": "customerKey",
            "in": "path",
            "description": "Customer key",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "fid",
            "in": "path",
            "description": "FID",
            "required": true,
            "schema": {
              "pattern": "\\d{9}",
              "type": "string",
              "format": "FID"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized access",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Member"
                }
              }
            }
          },
          "404": {
            "description": "Member not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "400": {
            "description": "FID is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/v1/rosters/{customerKey}/members/{fid}/reports/current": {
      "get": {
        "tags": [
          "Member"
        ],
        "summary": "Get Current Report Summary",
        "description": "Gets the current report summary for a member, if any.",
        "parameters": [
          {
            "name": "customerKey",
            "in": "path",
            "description": "Customer key",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "fid",
            "in": "path",
            "description": "FID",
            "required": true,
            "schema": {
              "pattern": "\\d{9}",
              "type": "string",
              "format": "FID"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized access",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MemberReportSummary"
                }
              }
            }
          },
          "404": {
            "description": "Report not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "204": {
            "description": "Report not available."
          },
          "400": {
            "description": "FID is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/v1/rosters/{customerKey}/members/{fid}/reports/current/pdf": {
      "get": {
        "tags": [
          "Member"
        ],
        "summary": "Get Current Report PDF",
        "description": "Get the current report as a PDF for a member, if any.",
        "parameters": [
          {
            "name": "customerKey",
            "in": "path",
            "description": "Customer key",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "fid",
            "in": "path",
            "description": "FID",
            "required": true,
            "schema": {
              "pattern": "\\d{9}",
              "type": "string",
              "format": "FID"
            }
          },
          {
            "name": "audit",
            "in": "query",
            "description": "For internal use only",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized access",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            }
          },
          "404": {
            "description": "Member or report not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "204": {
            "description": "Report not available."
          },
          "400": {
            "description": "FID is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/v1/rosters/{customerKey}/members/{fid}/reports/{reportId}": {
      "get": {
        "tags": [
          "Member"
        ],
        "summary": "Get Report Summary by ID",
        "description": "Gets a report summary, by ID.",
        "parameters": [
          {
            "name": "customerKey",
            "in": "path",
            "description": "Customer key",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "fid",
            "in": "path",
            "description": "FID",
            "required": true,
            "schema": {
              "pattern": "\\d{9}",
              "type": "string",
              "format": "FID"
            }
          },
          {
            "name": "reportId",
            "in": "path",
            "description": "Report ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized access",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MemberReportSummary"
                }
              }
            }
          },
          "404": {
            "description": "Report not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "204": {
            "description": "Report not available."
          },
          "400": {
            "description": "FID is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/v1/rosters/{customerKey}/members/{fid}/reports/{reportId}/pdf": {
      "get": {
        "tags": [
          "Member"
        ],
        "summary": "Get Report PDF by ID",
        "description": "Get a report by its ID as a PDF.",
        "parameters": [
          {
            "name": "customerKey",
            "in": "path",
            "description": "Customer key",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "fid",
            "in": "path",
            "description": "FID",
            "required": true,
            "schema": {
              "pattern": "\\d{9}",
              "type": "string",
              "format": "FID"
            }
          },
          {
            "name": "reportId",
            "in": "path",
            "description": "The report ID.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "audit",
            "in": "query",
            "description": "For internal use only",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized access",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            }
          },
          "404": {
            "description": "Report not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "400": {
            "description": "FID is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "204": {
            "description": "Report not available."
          }
        }
      }
    },
    "/v1/rosters/{customerKey}/members/{fid}/reports/current/data": {
      "get": {
        "tags": [
          "Member"
        ],
        "summary": "Get Current Report Data",
        "description": "Get the current report as data for a member, if any.",
        "parameters": [
          {
            "name": "customerKey",
            "in": "path",
            "description": "Customer key",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "fid",
            "in": "path",
            "description": "FID",
            "required": true,
            "schema": {
              "pattern": "\\d{9}",
              "type": "string",
              "format": "FID"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized access",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Report"
                }
              }
            }
          },
          "404": {
            "description": "Member or report not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "204": {
            "description": "Report not available."
          },
          "400": {
            "description": "FID is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/v1/rosters/{customerKey}/members/{fid}/reports/{reportId}/data": {
      "get": {
        "tags": [
          "Member"
        ],
        "summary": "Get Report Data by ID",
        "description": "Get a report by its ID as data.",
        "parameters": [
          {
            "name": "customerKey",
            "in": "path",
            "description": "Customer key",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "fid",
            "in": "path",
            "description": "FID",
            "required": true,
            "schema": {
              "pattern": "\\d{9}",
              "type": "string",
              "format": "FID"
            }
          },
          {
            "name": "reportId",
            "in": "path",
            "description": "The report ID.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized access",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Report"
                }
              }
            }
          },
          "404": {
            "description": "Report not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "400": {
            "description": "FID is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "204": {
            "description": "Report not available."
          }
        }
      }
    },
    "/v1/rosters/{customerKey}/members/{fid}/reports": {
      "post": {
        "tags": [
          "Member"
        ],
        "summary": "Generate Report",
        "description": "Generate a new report for a member.",
        "parameters": [
          {
            "name": "customerKey",
            "in": "path",
            "description": "Customer key",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "fid",
            "in": "path",
            "description": "FID",
            "required": true,
            "schema": {
              "pattern": "\\d{9}",
              "type": "string",
              "format": "FID"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized access",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Member"
                }
              }
            }
          },
          "202": {
            "description": "Request already pending."
          },
          "400": {
            "description": "FID is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/v1/rosters/{customerKey}/search": {
      "post": {
        "tags": [
          "Search"
        ],
        "summary": "Physician Search",
        "description": "Search for a physician.",
        "parameters": [
          {
            "name": "customerKey",
            "in": "path",
            "description": "Customer key",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Request",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/SearchRequest"
              }
            }
          }
        },
        "responses": {
          "401": {
            "description": "Unauthorized access",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResult"
                }
              }
            }
          },
          "400": {
            "description": "Bad request. Ensure that all search data is provided.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "204": {
            "description": "No match was found."
          }
        }
      }
    },
    "/connect/token": {
      "post": {
        "tags": [
          "Token"
        ],
        "summary": "Authentication endpoint.",
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "AddMemberRequest": {
        "type": "object",
        "properties": {
          "fid": {
            "pattern": "^\\d{9}$",
            "type": "string",
            "format": "FID"
          },
          "ignoreExisting": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "BoardActionStatus": {
        "enum": [
          "Unknown",
          "Cleared",
          "Alerted"
        ],
        "type": "string"
      },
      "Member": {
        "required": [
          "fullName"
        ],
        "type": "object",
        "properties": {
          "fid": {
            "pattern": "^\\d{9}$",
            "type": "string",
            "format": "FID"
          },
          "fullName": {
            "minLength": 1,
            "type": "string"
          },
          "birthDate": {
            "type": "string",
            "format": "date"
          },
          "boardActionStatus": {
            "$ref": "#/components/schemas/BoardActionStatus"
          },
          "currentReport": {
            "$ref": "#/components/schemas/MemberReportSummary"
          }
        },
        "additionalProperties": false
      },
      "MemberReportSummary": {
        "type": "object",
        "properties": {
          "reportId": {
            "type": "integer",
            "format": "int64"
          },
          "reportDateUtc": {
            "type": "string",
            "format": "date-time"
          },
          "reportGeneratedBy": {
            "type": "string",
            "nullable": true
          },
          "reportStatus": {
            "$ref": "#/components/schemas/ReportStatus"
          },
          "isComplete": {
            "type": "boolean",
            "readOnly": true
          },
          "boardActionStatus": {
            "$ref": "#/components/schemas/BoardActionStatus"
          }
        },
        "additionalProperties": false
      },
      "PartialDate": {
        "type": "object",
        "properties": {
          "month": {
            "pattern": "\\d{2}",
            "type": "string",
            "nullable": true
          },
          "day": {
            "pattern": "\\d{2}",
            "type": "string",
            "nullable": true
          },
          "year": {
            "pattern": "\\d{4}",
            "type": "string",
            "nullable": true
          },
          "date": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "ProblemDetails": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "nullable": true
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "detail": {
            "type": "string",
            "nullable": true
          },
          "instance": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": { }
      },
      "Report": {
        "required": [
          "fid",
          "names"
        ],
        "type": "object",
        "properties": {
          "fid": {
            "minLength": 1,
            "type": "string"
          },
          "reportId": {
            "type": "integer",
            "format": "int64"
          },
          "asOfDateTimeUtc": {
            "type": "string",
            "format": "date-time"
          },
          "generatedByUser": {
            "type": "string",
            "nullable": true
          },
          "boardActionStatus": {
            "$ref": "#/components/schemas/BoardActionStatus"
          },
          "names": {
            "$ref": "#/components/schemas/ReportNames"
          },
          "birthDate": {
            "$ref": "#/components/schemas/ReportBirthDate"
          },
          "medicalEducation": {
            "$ref": "#/components/schemas/ReportMedicalEducation"
          },
          "licenses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReportLicense"
            },
            "nullable": true
          },
          "npi": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReportNpi"
            },
            "nullable": true
          },
          "abms": {
            "$ref": "#/components/schemas/ReportAbms"
          },
          "aoa": {
            "$ref": "#/components/schemas/ReportAoa"
          },
          "dea": {
            "$ref": "#/components/schemas/ReportDea"
          },
          "boardOrders": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReportBoardOrder"
            },
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "PDC report"
      },
      "ReportAbms": {
        "type": "object",
        "properties": {
          "certifications": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReportAbmsCertification"
            },
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "PDC ABMS information"
      },
      "ReportAbmsCertification": {
        "required": [
          "boardName",
          "certificateDuration",
          "certificateName",
          "certificateType",
          "meetsMocRequirements",
          "occurrenceType"
        ],
        "type": "object",
        "properties": {
          "reportDate": {
            "type": "string",
            "format": "date-time"
          },
          "boardName": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string"
          },
          "certificateName": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string"
          },
          "meetsMocRequirements": {
            "maxLength": 20,
            "minLength": 1,
            "type": "string"
          },
          "isCertified": {
            "type": "boolean"
          },
          "certificateStatus": {
            "maxLength": 100,
            "type": "string",
            "nullable": true
          },
          "certificateType": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string"
          },
          "certificateDuration": {
            "maxLength": 20,
            "minLength": 1,
            "type": "string"
          },
          "occurrenceType": {
            "maxLength": 20,
            "minLength": 1,
            "type": "string"
          },
          "effectiveDate": {
            "$ref": "#/components/schemas/PartialDate"
          },
          "expirationDate": {
            "$ref": "#/components/schemas/PartialDate"
          },
          "reverificationDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "mocPathwayId": {
            "maxLength": 2,
            "type": "string",
            "nullable": true
          },
          "mocPathwayName": {
            "maxLength": 100,
            "type": "string",
            "nullable": true
          },
          "occupationStatus": {
            "maxLength": 2,
            "type": "string",
            "nullable": true
          },
          "occupationStatusNotifyYear": {
            "pattern": "\\d{4}",
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "PDC ABMS certification"
      },
      "ReportAoa": {
        "type": "object",
        "properties": {
          "certifications": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReportAoaCertification"
            },
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "PDC AOA information"
      },
      "ReportAoaCertification": {
        "required": [
          "aoaId",
          "boardName",
          "certificationName",
          "certificationType"
        ],
        "type": "object",
        "properties": {
          "aoaId": {
            "maxLength": 6,
            "minLength": 1,
            "type": "string"
          },
          "reportDate": {
            "type": "string",
            "format": "date-time"
          },
          "boardName": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string"
          },
          "certificationName": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string"
          },
          "certificationStatus": {
            "maxLength": 20,
            "type": "string",
            "nullable": true
          },
          "certificationType": {
            "maxLength": 50,
            "minLength": 1,
            "type": "string"
          },
          "isOccParticipating": {
            "type": "boolean"
          },
          "isOccRequired": {
            "type": "boolean"
          },
          "certificationIssueDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "certificationEndDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "recertificationIssueDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "recertificationExpireDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ReportBirthDate": {
        "type": "object",
        "properties": {
          "month": {
            "pattern": "\\d{2}",
            "type": "string",
            "nullable": true
          },
          "day": {
            "pattern": "\\d{2}",
            "type": "string",
            "nullable": true
          },
          "year": {
            "pattern": "\\d{4}",
            "type": "string",
            "nullable": true
          },
          "date": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "reportDate": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": false,
        "description": "Birth date"
      },
      "ReportBoardOrder": {
        "required": [
          "actions",
          "disciplinaryEntity"
        ],
        "type": "object",
        "properties": {
          "orderId": {
            "type": "integer",
            "format": "int64"
          },
          "usmleId": {
            "type": "string",
            "nullable": true
          },
          "issueDate": {
            "type": "string",
            "format": "date-time"
          },
          "effectiveDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "appealDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "disciplinaryEntity": {
            "$ref": "#/components/schemas/ReportBoardOrderEntity"
          },
          "actionForm": {
            "$ref": "#/components/schemas/ReportBoardOrderActionForm"
          },
          "actions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReportBoardOrderAction"
            }
          },
          "bases": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReportBoardOrderBasis"
            },
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Board order"
      },
      "ReportBoardOrderAction": {
        "required": [
          "actionCode",
          "actionDescription"
        ],
        "type": "object",
        "properties": {
          "actionCode": {
            "maxLength": 5,
            "minLength": 1,
            "type": "string"
          },
          "actionDescription": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string"
          },
          "isPrejudicial": {
            "type": "boolean"
          },
          "isIndefinite": {
            "type": "boolean"
          },
          "effectiveDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "expirationDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "termYears": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "termMonths": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "termDays": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "actionStayed": {
            "$ref": "#/components/schemas/ReportBoardOrderActionStayed"
          },
          "comments": {
            "maxLength": 1000,
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Board order action"
      },
      "ReportBoardOrderActionForm": {
        "required": [
          "code",
          "description"
        ],
        "type": "object",
        "properties": {
          "code": {
            "maxLength": 5,
            "minLength": 1,
            "type": "string"
          },
          "description": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string"
          }
        },
        "additionalProperties": false,
        "description": "Board order action form"
      },
      "ReportBoardOrderActionStayed": {
        "required": [
          "code",
          "description"
        ],
        "type": "object",
        "properties": {
          "code": {
            "maxLength": 5,
            "minLength": 1,
            "type": "string"
          },
          "description": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string"
          }
        },
        "additionalProperties": false,
        "description": "Board order action stayed"
      },
      "ReportBoardOrderBasis": {
        "required": [
          "code",
          "description"
        ],
        "type": "object",
        "properties": {
          "code": {
            "maxLength": 5,
            "minLength": 1,
            "type": "string"
          },
          "description": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string"
          },
          "categoryCode": {
            "maxLength": 5,
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Board order basis"
      },
      "ReportBoardOrderEntity": {
        "required": [
          "code",
          "description",
          "name"
        ],
        "type": "object",
        "properties": {
          "code": {
            "maxLength": 3,
            "minLength": 1,
            "type": "string"
          },
          "name": {
            "maxLength": 25,
            "minLength": 1,
            "type": "string"
          },
          "description": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "ReportDea": {
        "type": "object",
        "properties": {
          "certifications": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReportDeaCertification"
            },
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "PDC DEA information"
      },
      "ReportDeaCertification": {
        "required": [
          "deaNumber"
        ],
        "type": "object",
        "properties": {
          "reportDate": {
            "type": "string",
            "format": "date-time"
          },
          "deaNumber": {
            "maxLength": 9,
            "minLength": 1,
            "type": "string"
          },
          "expirationDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "drugSchedules": {
            "maxLength": 20,
            "type": "string",
            "nullable": true
          },
          "city": {
            "maxLength": 50,
            "type": "string",
            "nullable": true
          },
          "state": {
            "maxLength": 2,
            "type": "string",
            "nullable": true
          },
          "zipCode": {
            "maxLength": 9,
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "PDC DEA certificate"
      },
      "ReportGraduationDate": {
        "required": [
          "year"
        ],
        "type": "object",
        "properties": {
          "year": {
            "minLength": 1,
            "type": "string"
          },
          "isVerified": {
            "type": "boolean"
          },
          "reportDate": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": false,
        "description": "PDC graduation date"
      },
      "ReportLicense": {
        "required": [
          "issuerDescription",
          "issuerName"
        ],
        "type": "object",
        "properties": {
          "reportDate": {
            "type": "string",
            "format": "date-time"
          },
          "licenseType": {
            "maxLength": 100,
            "type": "string",
            "nullable": true
          },
          "issuerName": {
            "maxLength": 5,
            "minLength": 1,
            "type": "string"
          },
          "issuerDescription": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string"
          },
          "status": {
            "maxLength": 100,
            "type": "string",
            "nullable": true
          },
          "licenseNumber": {
            "maxLength": 20,
            "type": "string",
            "nullable": true
          },
          "issueDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "expirationDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "PDC license"
      },
      "ReportMedicalDegree": {
        "required": [
          "code",
          "description"
        ],
        "type": "object",
        "properties": {
          "code": {
            "maxLength": 5,
            "minLength": 1,
            "type": "string"
          },
          "description": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string"
          },
          "isVerified": {
            "type": "boolean"
          },
          "reportDate": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": false,
        "description": "PDC medical degree"
      },
      "ReportMedicalEducation": {
        "type": "object",
        "properties": {
          "school": {
            "$ref": "#/components/schemas/ReportMedicalSchool"
          },
          "graduationDate": {
            "$ref": "#/components/schemas/ReportGraduationDate"
          },
          "degree": {
            "$ref": "#/components/schemas/ReportMedicalDegree"
          }
        },
        "additionalProperties": false,
        "description": "PDC medical education"
      },
      "ReportMedicalSchool": {
        "required": [
          "cibisCode",
          "name",
          "schoolTypeCode",
          "schoolTypeDescription"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string"
          },
          "alternateNames": {
            "maxItems": 100,
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "cibisCode": {
            "maxLength": 6,
            "minLength": 1,
            "type": "string"
          },
          "schoolTypeCode": {
            "maxLength": 5,
            "minLength": 1,
            "type": "string"
          },
          "schoolTypeDescription": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string"
          },
          "city": {
            "maxLength": 50,
            "type": "string",
            "nullable": true
          },
          "stateCode": {
            "maxLength": 3,
            "type": "string",
            "nullable": true
          },
          "stateDescription": {
            "maxLength": 100,
            "type": "string",
            "nullable": true
          },
          "countryCode": {
            "maxLength": 2,
            "type": "string",
            "nullable": true
          },
          "countryDescription": {
            "maxLength": 100,
            "type": "string",
            "nullable": true
          },
          "isVerified": {
            "type": "boolean"
          },
          "reportDate": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": false,
        "description": "PDC medical school"
      },
      "ReportName": {
        "required": [
          "lastName"
        ],
        "type": "object",
        "properties": {
          "firstName": {
            "maxLength": 50,
            "type": "string",
            "nullable": true
          },
          "middleName": {
            "maxLength": 50,
            "type": "string",
            "nullable": true
          },
          "lastName": {
            "maxLength": 50,
            "minLength": 1,
            "type": "string"
          },
          "suffix": {
            "maxLength": 4,
            "type": "string",
            "nullable": true
          },
          "reportDate": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": false,
        "description": "PDC Name"
      },
      "ReportNames": {
        "required": [
          "legal"
        ],
        "type": "object",
        "properties": {
          "legal": {
            "$ref": "#/components/schemas/ReportName"
          },
          "other": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReportName"
            },
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "PDC names"
      },
      "ReportNpi": {
        "required": [
          "entityType",
          "npiNumber"
        ],
        "type": "object",
        "properties": {
          "npiNumber": {
            "maxLength": 10,
            "minLength": 1,
            "type": "string"
          },
          "entityType": {
            "maxLength": 20,
            "minLength": 1,
            "type": "string"
          },
          "reportDate": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": false,
        "description": "PDC NPI"
      },
      "ReportStatus": {
        "enum": [
          "Pending",
          "Succeeded",
          "Failed"
        ],
        "type": "string"
      },
      "SearchRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 160,
            "minLength": 1,
            "type": "string"
          },
          "birthDate": {
            "type": "string",
            "format": "date"
          },
          "ssnLastFour": {
            "pattern": "\\d{4}",
            "type": "string",
            "nullable": true
          },
          "licenseNumber": {
            "type": "string",
            "nullable": true
          },
          "graduationYear": {
            "maximum": 2100,
            "minimum": 1900,
            "pattern": "\\d{4}",
            "type": "string",
            "nullable": true
          },
          "medicalSchool": {
            "type": "string",
            "nullable": true
          },
          "degree": {
            "type": "string",
            "nullable": true
          },
          "npi": {
            "pattern": "\\d{10}",
            "type": "string",
            "nullable": true
          },
          "reuseSearchId": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "SearchResult": {
        "type": "object",
        "properties": {
          "fid": {
            "pattern": "\\d{9}",
            "type": "string",
            "format": "FID"
          },
          "name": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      }
    },
    "securitySchemes": {
      "oauth2": {
        "type": "oauth2",
        "flows": {
          "clientCredentials": {
            "authorizationUrl": "https://services-pdc.fsmb.org/connect/token",
            "tokenUrl": "https://services-pdc.fsmb.org/connect/token",
            "scopes": {
              "pdc.member_read": "Read member information including reports.",
              "pdc.member_write": "Update member information including generating reports.",
              "pdc.search": "Search for physicians."
            }
          }
        }
      }
    }
  },
  "security": [
    { }
  ]
}