{
  "openapi": "3.1.1",
  "info": {
    "title": "EntropyAPI",
    "version": "v1",
    "summary": "US drug reference data: identifiers, drugs, products, labels, recalls, shortages and REMS programs.",
    "description": "Send your API key as `Authorization: Bearer <key>`. A successful response is `{data, meta}` and an error is `{error, meta}`; `meta.next_cursor` pages a search. Each response header names the data that answered: `X-Data-As-Of` and `X-Data-Snapshot`.\n\n## Source attribution\n\nThis product uses publicly available data courtesy of the U.S. National Library of Medicine (NLM), National Institutes of Health, Department of Health and Human Services; NLM is not responsible for the product and does not endorse or recommend this or any other product.\n\nRxNorm and the terminology derived from it are built from the UMLS Metathesaurus, release 2026AA, and the RxNorm full release of 2026-08-03. RxNorm content is provided under a UMLS Metathesaurus license from NLM. If you redistribute RxNorm content beyond use within your own application, you are responsible for complying with NLM’s terms: https://www.nlm.nih.gov/research/umls/rxnorm/docs/termsofservice.html\n\nDosage-form, route, unit and schedule terms use codes from the subsets that NCI Enterprise Vocabulary Services publishes for FDA SPL, which are drawn from the NCI Thesaurus and licensed under Creative Commons Attribution 4.0 International (CC BY 4.0): https://creativecommons.org/licenses/by/4.0/\n\nThis material contains content from LOINC (http://loinc.org). LOINC is copyright © Regenstrief Institute, Inc. and the Logical Observation Identifiers Names and Codes (LOINC) Committee and is available at no cost under the license at http://loinc.org/license. LOINC® is a registered United States trademark of Regenstrief Institute, Inc.\n\nThis product uses publicly available data courtesy of the U.S. Food and Drug Administration (FDA). No source publisher, including NLM, FDA, NCI or Regenstrief, sponsors or endorses EntropyAPI.",
    "termsOfService": "https://entropyapi.io/terms",
    "contact": {
      "name": "EntropyAPI support",
      "url": "https://entropyapi.io/support"
    }
  },
  "externalDocs": {
    "description": "EntropyAPI documentation",
    "url": "https://entropyapi.io/docs"
  },
  "servers": [
    {
      "url": "https://api.entropyapi.io",
      "description": "Production"
    }
  ],
  "security": [
    {
      "bearerAuth": []
    }
  ],
  "tags": [
    {
      "name": "Drugs and products",
      "description": "Search drugs and products by name, or identify a pill from its imprint. Each result carries its full profile."
    },
    {
      "name": "Identifiers",
      "description": "Look up one code or resolve an ordered list of codes, including NDCs and scanner text."
    },
    {
      "name": "Labels",
      "description": "Search current labels and retrieve their section text."
    },
    {
      "name": "Recalls and safety",
      "description": "Check an inventory list against FDA recalls and shortages, or search recalls, shortages, REMS programs and safety labeling changes. The changes feed lists what is new."
    },
    {
      "name": "Interchangeability",
      "description": "Check whether FDA rates two products interchangeable, and list the products it rates interchangeable with one."
    }
  ],
  "paths": {
    "/v1/pills/search": {
      "post": {
        "operationId": "searchPills",
        "x-entropy-operation-id": "PILL-SEARCH",
        "summary": "Identify pills",
        "description": "Find tablets and capsules by imprint, color, shape and other markings.",
        "tags": [
          "Drugs and products"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PillSearchRequest"
              },
              "example": {
                "imprint": "L484",
                "limit": 5
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success. `data` holds the result and `meta` the request ID, paging and source dates.",
            "headers": {
              "X-Request-ID": {
                "$ref": "#/components/headers/X-Request-ID"
              },
              "X-API-Version": {
                "$ref": "#/components/headers/X-API-Version"
              },
              "X-Data-Snapshot": {
                "$ref": "#/components/headers/X-Data-Snapshot"
              },
              "X-Data-As-Of": {
                "$ref": "#/components/headers/X-Data-As-Of"
              },
              "X-Data-Sources": {
                "$ref": "#/components/headers/X-Data-Sources"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimit-Limit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimit-Remaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PillSearchResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "415": {
            "$ref": "#/components/responses/UnsupportedMediaType"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "default": {
            "$ref": "#/components/responses/InternalError"
          }
        }
      }
    },
    "/v1/codes/{code}": {
      "get": {
        "operationId": "lookupCode",
        "x-entropy-operation-id": "CODE-LOOKUP",
        "summary": "Look up a code",
        "description": "One code in, what it names out. Accepted codes: an NDC in any layout, a GTIN or GS1 scanner text, an RxCUI, a UNII, a label set ID, or an NDA, ANDA or BLA number with its prefix, such as BLA125559 or NDA 020702 (a bare number is read as an RxCUI). A code that could be several types is tried as each.",
        "tags": [
          "Identifiers"
        ],
        "parameters": [
          {
            "name": "code",
            "in": "path",
            "required": true,
            "description": "An NDC in any layout, a GTIN or GS1 scanner text, an RxCUI, a UNII, a label set ID, or an NDA, ANDA or BLA number with its prefix, such as BLA125559 or NDA 020702 (a bare number is read as an RxCUI). Send scanner text that won’t fit in a URL path to GET /v1/codes/lookup?code=…. A code is 1 to 512 characters; spaces, tabs and line breaks at either end are ignored, and a blank code is 400. An NDC may carry an NDC prefix, spaces, dots or typographic dashes between its parts, zero padding (12 digits, or a 9-digit product) or dropped leading zeros. Send an NDC with its hyphens when you have them: unhyphenated 8, 10 and 11 digit forms can fit several layouts and be ambiguous (409). Spaces inside scanner text are data, so send it as scanned.",
            "schema": {
              "maxLength": 512,
              "minLength": 1,
              "type": "string"
            },
            "example": "0003-0894-21"
          },
          {
            "name": "include",
            "in": "query",
            "required": false,
            "description": "Narrows a one-product answer to the sections you name; repeat it or join names with commas, in any case. packages: the packages and their billing units. ingredients: the ingredients with classes, kit parts and excipient flags. labels: the labels. rating: the FDA rating. safety: recalls, shortages, REMS programs and recent safety labeling changes. Sections you don’t name are not read, and meta.sources lists only what was read. It applies only when the code resolves to one product and is ignored for every other answer. With no include you get the full profile.",
            "schema": {
              "items": {
                "enum": [
                  "ingredients",
                  "labels",
                  "packages",
                  "rating",
                  "safety"
                ],
                "type": "string"
              },
              "maxItems": 10,
              "minItems": 1,
              "type": "array"
            },
            "style": "form",
            "explode": true
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Products per page when an RxCUI, label set ID or application number names several, at most 100. Ignored for other answers.",
            "schema": {
              "default": 20,
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "description": "The cursor from the previous page of this same lookup’s products.",
            "schema": {
              "maxLength": 4096,
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "description": "Success. `data` holds the result and `meta` the request ID, paging and source dates.",
            "headers": {
              "X-Request-ID": {
                "$ref": "#/components/headers/X-Request-ID"
              },
              "X-API-Version": {
                "$ref": "#/components/headers/X-API-Version"
              },
              "X-Data-Snapshot": {
                "$ref": "#/components/headers/X-Data-Snapshot"
              },
              "X-Data-As-Of": {
                "$ref": "#/components/headers/X-Data-As-Of"
              },
              "X-Data-Sources": {
                "$ref": "#/components/headers/X-Data-Sources"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimit-Limit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimit-Remaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CodeLookupResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "410": {
            "$ref": "#/components/responses/Gone"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/UnprocessableEntity"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "default": {
            "$ref": "#/components/responses/InternalError"
          }
        }
      }
    },
    "/v1/codes/lookup": {
      "get": {
        "operationId": "lookupCodeByQuery",
        "x-entropy-operation-id": "CODE-LOOKUP",
        "summary": "Look up one code sent as a query parameter",
        "description": "The same lookup as the path form, for scanner text or a code that does not fit in a URL path.",
        "tags": [
          "Identifiers"
        ],
        "parameters": [
          {
            "name": "code",
            "in": "query",
            "required": true,
            "description": "An NDC in any layout, a GTIN or GS1 scanner text, an RxCUI, a UNII, a label set ID, or an NDA, ANDA or BLA number with its prefix, such as BLA125559 or NDA 020702 (a bare number is read as an RxCUI). Send scanner text that won’t fit in a URL path to GET /v1/codes/lookup?code=…. A code is 1 to 512 characters; spaces, tabs and line breaks at either end are ignored, and a blank code is 400. An NDC may carry an NDC prefix, spaces, dots or typographic dashes between its parts, zero padding (12 digits, or a 9-digit product) or dropped leading zeros. Send an NDC with its hyphens when you have them: unhyphenated 8, 10 and 11 digit forms can fit several layouts and be ambiguous (409). Spaces inside scanner text are data, so send it as scanned.",
            "schema": {
              "maxLength": 512,
              "minLength": 1,
              "type": "string"
            },
            "example": "0003-0894-21"
          },
          {
            "name": "include",
            "in": "query",
            "required": false,
            "description": "Narrows a one-product answer to the sections you name; repeat it or join names with commas, in any case. packages: the packages and their billing units. ingredients: the ingredients with classes, kit parts and excipient flags. labels: the labels. rating: the FDA rating. safety: recalls, shortages, REMS programs and recent safety labeling changes. Sections you don’t name are not read, and meta.sources lists only what was read. It applies only when the code resolves to one product and is ignored for every other answer. With no include you get the full profile.",
            "schema": {
              "items": {
                "enum": [
                  "ingredients",
                  "labels",
                  "packages",
                  "rating",
                  "safety"
                ],
                "type": "string"
              },
              "maxItems": 10,
              "minItems": 1,
              "type": "array"
            },
            "style": "form",
            "explode": true
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Products per page when an RxCUI, label set ID or application number names several, at most 100. Ignored for other answers.",
            "schema": {
              "default": 20,
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "description": "The cursor from the previous page of this same lookup’s products.",
            "schema": {
              "maxLength": 4096,
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "description": "Success. `data` holds the result and `meta` the request ID, paging and source dates.",
            "headers": {
              "X-Request-ID": {
                "$ref": "#/components/headers/X-Request-ID"
              },
              "X-API-Version": {
                "$ref": "#/components/headers/X-API-Version"
              },
              "X-Data-Snapshot": {
                "$ref": "#/components/headers/X-Data-Snapshot"
              },
              "X-Data-As-Of": {
                "$ref": "#/components/headers/X-Data-As-Of"
              },
              "X-Data-Sources": {
                "$ref": "#/components/headers/X-Data-Sources"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimit-Limit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimit-Remaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CodeLookupResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "410": {
            "$ref": "#/components/responses/Gone"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/UnprocessableEntity"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "default": {
            "$ref": "#/components/responses/InternalError"
          }
        }
      }
    },
    "/v1/codes/resolve": {
      "post": {
        "operationId": "resolveCodes",
        "x-entropy-operation-id": "CODE-RESOLVE",
        "summary": "Resolve codes",
        "description": "Resolve 1 to 100 codes in one request, which counts as one against your allowance. Results keep your order and duplicates, and each one is compact: call CODE-LOOKUP for a result’s full profile.",
        "tags": [
          "Identifiers"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CodeResolveRequest"
              },
              "example": {
                "codes": [
                  "0003-0894-21",
                  "19711"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success. `data` holds the result and `meta` the request ID, paging and source dates.",
            "headers": {
              "X-Request-ID": {
                "$ref": "#/components/headers/X-Request-ID"
              },
              "X-API-Version": {
                "$ref": "#/components/headers/X-API-Version"
              },
              "X-Data-Snapshot": {
                "$ref": "#/components/headers/X-Data-Snapshot"
              },
              "X-Data-As-Of": {
                "$ref": "#/components/headers/X-Data-As-Of"
              },
              "X-Data-Sources": {
                "$ref": "#/components/headers/X-Data-Sources"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimit-Limit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimit-Remaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CodeResolveResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "415": {
            "$ref": "#/components/responses/UnsupportedMediaType"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "default": {
            "$ref": "#/components/responses/InternalError"
          }
        }
      }
    },
    "/v1/drugs/search": {
      "get": {
        "operationId": "searchDrugs",
        "x-entropy-operation-id": "DRUG-SEARCH",
        "summary": "Search drugs",
        "description": "Find ingredient and multiple-ingredient drugs by official name, brand name or a marketed product’s name, or by ingredient composition. Each hit names its exact ingredients with their own RxCUIs, its brand names and dosage forms, and which name matched.",
        "tags": [
          "Drugs and products"
        ],
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "A brand, ingredient or product name, such as Lipitor, atorvastatin or paracetamol. Strength and form words keep drugs with such a product, and combinations can be written in any order, such as hydrocodone/acetaminophen.",
            "schema": {
              "maxLength": 4096,
              "minLength": 1,
              "type": "string"
            },
            "example": "augmentin"
          },
          {
            "name": "ingredient_rxcuis",
            "in": "query",
            "required": false,
            "description": "Ingredient RxCUIs the drug must contain; composition_match says whether exactly these or at least these. Repeat the parameter to send more than one.",
            "schema": {
              "items": {
                "pattern": "^[1-9][0-9]{0,15}$",
                "type": "string"
              },
              "maxItems": 100,
              "minItems": 1,
              "type": "array"
            },
            "style": "form",
            "explode": true
          },
          {
            "name": "composition_match",
            "in": "query",
            "required": false,
            "description": "exact: the drug’s ingredients are exactly ingredient_rxcuis. contains: the drug contains them, salts matched to their ingredient.",
            "schema": {
              "default": "exact",
              "enum": [
                "contains",
                "exact"
              ],
              "type": "string"
            }
          },
          {
            "name": "match_mode",
            "in": "query",
            "required": false,
            "description": "How q is matched: auto (whole names and names starting with q) or exact (whole names only).",
            "schema": {
              "default": "auto",
              "enum": [
                "auto",
                "exact"
              ],
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Results per page.",
            "schema": {
              "default": 20,
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "description": "The cursor from the previous page of this same search.",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "description": "Success. `data` holds the result and `meta` the request ID, paging and source dates.",
            "headers": {
              "X-Request-ID": {
                "$ref": "#/components/headers/X-Request-ID"
              },
              "X-API-Version": {
                "$ref": "#/components/headers/X-API-Version"
              },
              "X-Data-Snapshot": {
                "$ref": "#/components/headers/X-Data-Snapshot"
              },
              "X-Data-As-Of": {
                "$ref": "#/components/headers/X-Data-As-Of"
              },
              "X-Data-Sources": {
                "$ref": "#/components/headers/X-Data-Sources"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimit-Limit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimit-Remaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DrugSearchResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "default": {
            "$ref": "#/components/responses/InternalError"
          }
        }
      }
    },
    "/v1/drugs/{rxcui}": {
      "get": {
        "operationId": "getDrug",
        "x-entropy-operation-id": "DRUG-LOOKUP",
        "summary": "Retrieve a drug",
        "description": "Retrieve one drug by RxCUI, with what is marketed for it. A brand or product RxCUI returns its ingredient drug, and a retired RxCUI with one successor is redirected to it.",
        "tags": [
          "Drugs and products"
        ],
        "parameters": [
          {
            "name": "rxcui",
            "in": "path",
            "required": true,
            "description": "The RxNorm concept identifier of an ingredient, precise ingredient or combination.",
            "schema": {
              "pattern": "^[1-9][0-9]{0,15}$",
              "type": "string"
            },
            "example": "19711"
          },
          {
            "name": "include",
            "in": "query",
            "required": false,
            "description": "mechanism_of_action adds the mechanism of action from the label of FDA’s reference product. Repeat the parameter to send more than one.",
            "schema": {
              "items": {
                "const": "mechanism_of_action",
                "type": "string"
              },
              "maxItems": 1,
              "type": "array"
            },
            "style": "form",
            "explode": true
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "description": "Success. `data` holds the result and `meta` the request ID, paging and source dates.",
            "headers": {
              "X-Request-ID": {
                "$ref": "#/components/headers/X-Request-ID"
              },
              "X-API-Version": {
                "$ref": "#/components/headers/X-API-Version"
              },
              "X-Data-Snapshot": {
                "$ref": "#/components/headers/X-Data-Snapshot"
              },
              "X-Data-As-Of": {
                "$ref": "#/components/headers/X-Data-As-Of"
              },
              "X-Data-Sources": {
                "$ref": "#/components/headers/X-Data-Sources"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimit-Limit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimit-Remaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DrugLookupResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "410": {
            "$ref": "#/components/responses/Gone"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/UnprocessableEntity"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "default": {
            "$ref": "#/components/responses/InternalError"
          }
        }
      }
    },
    "/v1/interchangeability/alternatives": {
      "get": {
        "operationId": "listInterchangeableAlternatives",
        "x-entropy-operation-id": "INTERCHANGEABILITY-ALTERNATIVES",
        "summary": "List alternatives",
        "description": "A product code returns the product’s FDA rating and the marketed products FDA rates interchangeable with it, one per product NDC. The product’s own application decides the book: a BLA reads the Purple Book, an NDA or ANDA the Orange Book. A page can be short, even empty, while next_cursor is set; keep paging. A subject no book rates answers 200 with an empty list, which does not mean none exist.",
        "tags": [
          "Interchangeability"
        ],
        "parameters": [
          {
            "name": "code",
            "in": "query",
            "required": true,
            "description": "A code for one product: a product or package NDC, a GTIN or GS1 scanner text. A label set ID, application number or RxCUI that carries exactly one product is accepted. A code that names several products, or a Drug, answers 409 with candidates to choose from. A retired RxCUI is 410, an RxCUI RxNorm’s history does not cover is 404, and one that is not a drug is 422.",
            "schema": {
              "maxLength": 512,
              "minLength": 1,
              "type": "string"
            },
            "example": "0074-5182"
          },
          {
            "name": "include_not_interchangeable",
            "in": "query",
            "required": false,
            "description": "Also list products under the same FDA heading or reference product that FDA does not rate interchangeable, flagged by interchangeable and outcome.",
            "schema": {
              "default": false,
              "type": "boolean"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Alternatives per page, at most 100.",
            "schema": {
              "default": 20,
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "description": "The cursor from the previous page of this same listing.",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "description": "Success. `data` holds the result and `meta` the request ID, paging and source dates.",
            "headers": {
              "X-Request-ID": {
                "$ref": "#/components/headers/X-Request-ID"
              },
              "X-API-Version": {
                "$ref": "#/components/headers/X-API-Version"
              },
              "X-Data-Snapshot": {
                "$ref": "#/components/headers/X-Data-Snapshot"
              },
              "X-Data-As-Of": {
                "$ref": "#/components/headers/X-Data-As-Of"
              },
              "X-Data-Sources": {
                "$ref": "#/components/headers/X-Data-Sources"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimit-Limit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimit-Remaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InterchangeabilityAlternativesResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "410": {
            "$ref": "#/components/responses/Gone"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "422": {
            "$ref": "#/components/responses/UnprocessableEntity"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "default": {
            "$ref": "#/components/responses/InternalError"
          }
        }
      }
    },
    "/v1/interchangeability/check": {
      "post": {
        "operationId": "checkInterchangeability",
        "x-entropy-operation-id": "INTERCHANGEABILITY-CHECK",
        "summary": "Check two products",
        "description": "Two product codes return whether FDA rates the products interchangeable, with the outcome, the reason and each product’s own rating. subject is the product of code; swapping the codes swaps subject and comparator and keeps the verdict, including the reason.",
        "tags": [
          "Interchangeability"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/InterchangeabilityCheckRequest"
              },
              "example": {
                "code": "0074-5182",
                "compare_with": "60793-852"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success. `data` holds the result and `meta` the request ID, paging and source dates.",
            "headers": {
              "X-Request-ID": {
                "$ref": "#/components/headers/X-Request-ID"
              },
              "X-API-Version": {
                "$ref": "#/components/headers/X-API-Version"
              },
              "X-Data-Snapshot": {
                "$ref": "#/components/headers/X-Data-Snapshot"
              },
              "X-Data-As-Of": {
                "$ref": "#/components/headers/X-Data-As-Of"
              },
              "X-Data-Sources": {
                "$ref": "#/components/headers/X-Data-Sources"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimit-Limit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimit-Remaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InterchangeabilityCheckResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "410": {
            "$ref": "#/components/responses/Gone"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "415": {
            "$ref": "#/components/responses/UnsupportedMediaType"
          },
          "422": {
            "$ref": "#/components/responses/UnprocessableEntity"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "default": {
            "$ref": "#/components/responses/InternalError"
          }
        }
      }
    },
    "/v1/labels/search": {
      "get": {
        "operationId": "searchLabels",
        "x-entropy-operation-id": "LABEL-SEARCH",
        "summary": "Search labels",
        "description": "Find current labels by title, product and ingredient names, drug, labeler and document type. Each hit lists the label’s products and flags.",
        "tags": [
          "Labels"
        ],
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Text in the title, or a product, generic or ingredient name on the label. When nothing holds q as written, its name words are searched, and its strength and form words keep labels with such a product.",
            "schema": {
              "maxLength": 500,
              "minLength": 2,
              "type": "string"
            },
            "example": "amoxicillin"
          },
          {
            "name": "match_mode",
            "in": "query",
            "required": false,
            "description": "auto (default): titles containing q, names starting with it, or every word in any order. prefix: titles and names starting with q. exact: the whole title or name.",
            "schema": {
              "default": "auto",
              "enum": [
                "auto",
                "exact",
                "prefix"
              ],
              "type": "string"
            }
          },
          {
            "name": "drug_rxcui",
            "in": "query",
            "required": false,
            "description": "Labels for products that contain this drug (an RxCUI from DRUG-SEARCH). Repeat the parameter to send more than one.",
            "schema": {
              "items": {
                "pattern": "^[1-9][0-9]{0,15}$",
                "type": "string"
              },
              "maxItems": 20,
              "minItems": 1,
              "type": "array"
            },
            "style": "form",
            "explode": true
          },
          {
            "name": "labeler",
            "in": "query",
            "required": false,
            "description": "The labeler’s name. Repeat the parameter to send more than one.",
            "schema": {
              "items": {
                "maxLength": 300,
                "minLength": 1,
                "type": "string"
              },
              "maxItems": 20,
              "minItems": 1,
              "type": "array"
            },
            "style": "form",
            "explode": true
          },
          {
            "name": "document_type",
            "in": "query",
            "required": false,
            "description": "prescription, otc, vaccine, plasma_derivative, allergenic or cellular_therapy. Repeat the parameter to send more than one.",
            "schema": {
              "items": {
                "enum": [
                  "allergenic",
                  "cellular_therapy",
                  "otc",
                  "plasma_derivative",
                  "prescription",
                  "vaccine"
                ],
                "type": "string"
              },
              "type": "array"
            },
            "style": "form",
            "explode": true,
            "example": [
              "prescription"
            ]
          },
          {
            "name": "hide_repackagers",
            "in": "query",
            "required": false,
            "description": "true to leave out labels repackaged or relabeled from another company’s NDC.",
            "schema": {
              "default": false,
              "type": "boolean"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Labels per page.",
            "schema": {
              "default": 20,
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "description": "The cursor from the previous page of this same search.",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "description": "Success. `data` holds the result and `meta` the request ID, paging and source dates.",
            "headers": {
              "X-Request-ID": {
                "$ref": "#/components/headers/X-Request-ID"
              },
              "X-API-Version": {
                "$ref": "#/components/headers/X-API-Version"
              },
              "X-Data-Snapshot": {
                "$ref": "#/components/headers/X-Data-Snapshot"
              },
              "X-Data-As-Of": {
                "$ref": "#/components/headers/X-Data-As-Of"
              },
              "X-Data-Sources": {
                "$ref": "#/components/headers/X-Data-Sources"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimit-Limit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimit-Remaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LabelSearchResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "default": {
            "$ref": "#/components/responses/InternalError"
          }
        }
      }
    },
    "/v1/labels/{set_id}": {
      "get": {
        "operationId": "getLabel",
        "x-entropy-operation-id": "LABEL-LOOKUP",
        "summary": "Retrieve a label",
        "description": "Retrieve a current label by set ID, or by an NDC it lists, with its sections. Name sections, or all, to get their text.",
        "tags": [
          "Labels"
        ],
        "parameters": [
          {
            "name": "set_id",
            "in": "path",
            "required": true,
            "description": "The label set ID.",
            "schema": {
              "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
              "type": "string"
            },
            "example": "e9481622-7cc6-418a-acb6-c5450daae9b0"
          },
          {
            "name": "section",
            "in": "query",
            "required": false,
            "description": "Section keys, LOINC codes or all, such as boxed_warning or 34066-1. all returns top-level sections; name a subsection to get it alone. A value that is neither a section key nor a well-formed LOINC code is a 400 whose details.supported lists the keys. Repeat the parameter to send more than one.",
            "schema": {
              "items": {
                "maxLength": 300,
                "minLength": 1,
                "type": "string"
              },
              "maxItems": 100,
              "minItems": 1,
              "type": "array"
            },
            "style": "form",
            "explode": true,
            "example": [
              "warnings_and_cautions"
            ]
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "description": "Success. `data` holds the result and `meta` the request ID, paging and source dates.",
            "headers": {
              "X-Request-ID": {
                "$ref": "#/components/headers/X-Request-ID"
              },
              "X-API-Version": {
                "$ref": "#/components/headers/X-API-Version"
              },
              "X-Data-Snapshot": {
                "$ref": "#/components/headers/X-Data-Snapshot"
              },
              "X-Data-As-Of": {
                "$ref": "#/components/headers/X-Data-As-Of"
              },
              "X-Data-Sources": {
                "$ref": "#/components/headers/X-Data-Sources"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimit-Limit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimit-Remaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LabelLookupResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "default": {
            "$ref": "#/components/responses/InternalError"
          }
        }
      }
    },
    "/v1/labels/lookup": {
      "get": {
        "operationId": "getLabelByQuery",
        "x-entropy-operation-id": "LABEL-LOOKUP",
        "summary": "Retrieve a label by set ID or NDC",
        "description": "Retrieve one current label by its set ID, or by an NDC it lists, sent as query parameters.",
        "tags": [
          "Labels"
        ],
        "parameters": [
          {
            "name": "set_id",
            "in": "query",
            "required": false,
            "description": "The label set ID.",
            "schema": {
              "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
              "type": "string"
            },
            "example": "e9481622-7cc6-418a-acb6-c5450daae9b0"
          },
          {
            "name": "ndc",
            "in": "query",
            "required": false,
            "description": "A product or package NDC, on GET /v1/labels/lookup in place of set_id. An NDC on several labels answers 409 ambiguous_identifier, with each label’s set_id and title in details.candidates.",
            "schema": {
              "maxLength": 100,
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "name": "section",
            "in": "query",
            "required": false,
            "description": "Section keys, LOINC codes or all, such as boxed_warning or 34066-1. all returns top-level sections; name a subsection to get it alone. A value that is neither a section key nor a well-formed LOINC code is a 400 whose details.supported lists the keys. Repeat the parameter to send more than one.",
            "schema": {
              "items": {
                "maxLength": 300,
                "minLength": 1,
                "type": "string"
              },
              "maxItems": 100,
              "minItems": 1,
              "type": "array"
            },
            "style": "form",
            "explode": true,
            "example": [
              "warnings_and_cautions"
            ]
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "description": "Success. `data` holds the result and `meta` the request ID, paging and source dates.",
            "headers": {
              "X-Request-ID": {
                "$ref": "#/components/headers/X-Request-ID"
              },
              "X-API-Version": {
                "$ref": "#/components/headers/X-API-Version"
              },
              "X-Data-Snapshot": {
                "$ref": "#/components/headers/X-Data-Snapshot"
              },
              "X-Data-As-Of": {
                "$ref": "#/components/headers/X-Data-As-Of"
              },
              "X-Data-Sources": {
                "$ref": "#/components/headers/X-Data-Sources"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimit-Limit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimit-Remaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LabelLookupResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "default": {
            "$ref": "#/components/responses/InternalError"
          }
        }
      }
    },
    "/v1/marketed-products/search": {
      "get": {
        "operationId": "searchMarketedProducts",
        "x-entropy-operation-id": "MARKETED-PRODUCT-SEARCH",
        "summary": "Search products",
        "description": "Find US products, one product NDC each, by name or by indexed facts: the drug they contain, a substance, dosage form, route, labeler, brand or generic, and listing status.",
        "tags": [
          "Drugs and products"
        ],
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "A proprietary, generic or ingredient name. Matching ignores case and punctuation. When no name holds q as written, its name words are searched in any order, and its strength and form words filter the products, as in Lisinopril 10 mg tablets. Send NDCs to CODE-LOOKUP.",
            "schema": {
              "maxLength": 500,
              "minLength": 1,
              "type": "string"
            },
            "example": "amoxicillin"
          },
          {
            "name": "match_mode",
            "in": "query",
            "required": false,
            "description": "exact: the whole name. auto and prefix: names that start with the value, whole-name matches first.",
            "schema": {
              "default": "auto",
              "enum": [
                "auto",
                "exact",
                "prefix"
              ],
              "type": "string"
            }
          },
          {
            "name": "drug_rxcui",
            "in": "query",
            "required": false,
            "description": "Products DRUG-LOOKUP counts for this drug. Repeat for several, at most 20.",
            "schema": {
              "items": {
                "pattern": "^[1-9][0-9]{0,15}$",
                "type": "string"
              },
              "maxItems": 20,
              "minItems": 1,
              "type": "array"
            },
            "style": "form",
            "explode": true
          },
          {
            "name": "drug_group",
            "in": "query",
            "required": false,
            "description": "Products in one of a drug’s form-and-strength groups (a group_key (fg_ and 32 hex digits) from DRUG-LOOKUP). Repeat for several, at most 20.",
            "schema": {
              "items": {
                "pattern": "^fg_[0-9a-f]{32}$",
                "type": "string"
              },
              "maxItems": 20,
              "minItems": 1,
              "type": "array"
            },
            "style": "form",
            "explode": true
          },
          {
            "name": "contains_substance",
            "in": "query",
            "required": false,
            "description": "Products with this UNII as an ingredient in any role or as an active moiety, in the product or a kit part. Repeat for several, at most 20.",
            "schema": {
              "items": {
                "pattern": "^[0-9A-Z]{10}$",
                "type": "string"
              },
              "maxItems": 20,
              "minItems": 1,
              "type": "array"
            },
            "style": "form",
            "explode": true
          },
          {
            "name": "dosage_form",
            "in": "query",
            "required": false,
            "description": "The product’s own SPL dosage-form code, a hit’s dosage_form.code. Codes match exactly: TABLET does not include TABLET, FILM COATED. Repeat for several, at most 20.",
            "schema": {
              "items": {
                "pattern": "^C[0-9]{1,8}$",
                "type": "string"
              },
              "maxItems": 20,
              "minItems": 1,
              "type": "array"
            },
            "style": "form",
            "explode": true
          },
          {
            "name": "route",
            "in": "query",
            "required": false,
            "description": "The product’s own SPL route code, a hit’s routes[].code. Repeat for several, at most 20.",
            "schema": {
              "items": {
                "pattern": "^C[0-9]{1,8}$",
                "type": "string"
              },
              "maxItems": 20,
              "minItems": 1,
              "type": "array"
            },
            "style": "form",
            "explode": true
          },
          {
            "name": "labeler",
            "in": "query",
            "required": false,
            "description": "A labeler name on the product’s label, matched under match_mode. Repeat for several, at most 20.",
            "schema": {
              "items": {
                "maxLength": 300,
                "minLength": 1,
                "type": "string"
              },
              "maxItems": 20,
              "minItems": 1,
              "type": "array"
            },
            "style": "form",
            "explode": true
          },
          {
            "name": "labeler_code",
            "in": "query",
            "required": false,
            "description": "The NDC labeler code, the first part of the product NDC: 0003 or 50090. 00003 is the same as 0003. Repeat for several, at most 20.",
            "schema": {
              "items": {
                "pattern": "^[0-9]{4,5}$",
                "type": "string"
              },
              "maxItems": 20,
              "minItems": 1,
              "type": "array"
            },
            "style": "form",
            "explode": true
          },
          {
            "name": "brand_generic",
            "in": "query",
            "required": false,
            "description": "Only brand products, or only generic ones (ANDA or NDA authorized generic).",
            "schema": {
              "enum": [
                "brand",
                "generic"
              ],
              "type": "string"
            }
          },
          {
            "name": "hide_repackagers",
            "in": "query",
            "required": false,
            "description": "Leave out products whose label names another company’s source NDC or whose labeler declares a repack or relabel operation.",
            "schema": {
              "default": false,
              "type": "boolean"
            }
          },
          {
            "name": "listing_status",
            "in": "query",
            "required": false,
            "description": "current (default): active and unknown listings. active_listing: active only. all: every product, including ended and not_fda_listed.",
            "schema": {
              "default": "current",
              "enum": [
                "active_listing",
                "all",
                "current"
              ],
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Products per page.",
            "schema": {
              "default": 20,
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "description": "The cursor from the previous page of this same search.",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "description": "Success. `data` holds the result and `meta` the request ID, paging and source dates.",
            "headers": {
              "X-Request-ID": {
                "$ref": "#/components/headers/X-Request-ID"
              },
              "X-API-Version": {
                "$ref": "#/components/headers/X-API-Version"
              },
              "X-Data-Snapshot": {
                "$ref": "#/components/headers/X-Data-Snapshot"
              },
              "X-Data-As-Of": {
                "$ref": "#/components/headers/X-Data-As-Of"
              },
              "X-Data-Sources": {
                "$ref": "#/components/headers/X-Data-Sources"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimit-Limit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimit-Remaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MarketedProductSearchResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "default": {
            "$ref": "#/components/responses/InternalError"
          }
        }
      }
    },
    "/v1/recalls/search": {
      "get": {
        "operationId": "searchRecalls",
        "x-entropy-operation-id": "RECALL-SEARCH",
        "summary": "Search recalls",
        "description": "Find FDA recall events by text (including a recall number), classification, status, firm, dates and NDC. Each hit is one event with a preview of its recalled products.",
        "tags": [
          "Recalls and safety"
        ],
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Text ranked against the recall number, event ID, recalling firm, product description, reason, code information and distribution pattern. Every word matches at a word start, in any order, and openFDA’s harmonized brand and generic names also count. Send an FDA recall number, such as D-1039-2019, to find that recall; a recall number or event ID matches only whole. Results come by relevance, or newest report date first without q.",
            "schema": {
              "maxLength": 500,
              "minLength": 1,
              "type": "string"
            },
            "example": "amoxicillin"
          },
          {
            "name": "classification",
            "in": "query",
            "required": false,
            "description": "Class I, Class II, Class III or Not Yet Classified. Repeat the parameter to send more than one.",
            "schema": {
              "items": {
                "enum": [
                  "Class I",
                  "Class II",
                  "Class III",
                  "Not Yet Classified"
                ],
                "type": "string"
              },
              "type": "array"
            },
            "style": "form",
            "explode": true,
            "example": [
              "Class II"
            ]
          },
          {
            "name": "enforcement_status_as_published",
            "in": "query",
            "required": false,
            "description": "Ongoing, Completed or Terminated, as FDA published it. Pending is accepted, but FDA has published no Pending recall. Repeat the parameter to send more than one.",
            "schema": {
              "items": {
                "enum": [
                  "Completed",
                  "Ongoing",
                  "Pending",
                  "Terminated"
                ],
                "type": "string"
              },
              "type": "array"
            },
            "style": "form",
            "explode": true
          },
          {
            "name": "recalling_firm",
            "in": "query",
            "required": false,
            "description": "Recalling firm names; a name matches whole, at its start or a word’s start (never inside a word), or word by word in any order, ignoring words like Inc or LLC. Repeat the parameter to send more than one.",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form",
            "explode": true
          },
          {
            "name": "initiated_from",
            "in": "query",
            "required": false,
            "description": "Earliest recall initiation date, YYYY-MM-DD.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "initiated_to",
            "in": "query",
            "required": false,
            "description": "Latest recall initiation date, YYYY-MM-DD.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "report_from",
            "in": "query",
            "required": false,
            "description": "Earliest report date, YYYY-MM-DD.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "report_to",
            "in": "query",
            "required": false,
            "description": "Latest report date, YYYY-MM-DD.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "ndc",
            "in": "query",
            "required": false,
            "description": "Product or package NDCs in any layout, matched against the NDCs in the recall. Repeat the parameter to send more than one.",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form",
            "explode": true
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Events per page.",
            "schema": {
              "default": 20,
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "description": "The cursor from the previous page of this same search.",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "description": "Success. `data` holds the result and `meta` the request ID, paging and source dates.",
            "headers": {
              "X-Request-ID": {
                "$ref": "#/components/headers/X-Request-ID"
              },
              "X-API-Version": {
                "$ref": "#/components/headers/X-API-Version"
              },
              "X-Data-Snapshot": {
                "$ref": "#/components/headers/X-Data-Snapshot"
              },
              "X-Data-As-Of": {
                "$ref": "#/components/headers/X-Data-As-Of"
              },
              "X-Data-Sources": {
                "$ref": "#/components/headers/X-Data-Sources"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimit-Limit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimit-Remaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RecallSearchResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "default": {
            "$ref": "#/components/responses/InternalError"
          }
        }
      }
    },
    "/v1/recalls/{recall_id}": {
      "get": {
        "operationId": "getRecall",
        "x-entropy-operation-id": "RECALL-LOOKUP",
        "summary": "Retrieve a recall",
        "description": "One recall event with all of its recalled products, paged, newest report date first.",
        "tags": [
          "Recalls and safety"
        ],
        "parameters": [
          {
            "name": "recall_id",
            "in": "path",
            "required": true,
            "description": "The event identifier from RECALL-SEARCH. An FDA recall number is searched with RECALL-SEARCH’s q instead.",
            "schema": {
              "type": "string"
            },
            "example": "recall_cca472456af5eeb39f4c6e55"
          },
          {
            "name": "product_limit",
            "in": "query",
            "required": false,
            "description": "Products per page.",
            "schema": {
              "default": 100,
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            },
            "example": 20
          },
          {
            "name": "product_cursor",
            "in": "query",
            "required": false,
            "description": "The cursor from the previous page of this event’s products.",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "description": "Success. `data` holds the result and `meta` the request ID, paging and source dates.",
            "headers": {
              "X-Request-ID": {
                "$ref": "#/components/headers/X-Request-ID"
              },
              "X-API-Version": {
                "$ref": "#/components/headers/X-API-Version"
              },
              "X-Data-Snapshot": {
                "$ref": "#/components/headers/X-Data-Snapshot"
              },
              "X-Data-As-Of": {
                "$ref": "#/components/headers/X-Data-As-Of"
              },
              "X-Data-Sources": {
                "$ref": "#/components/headers/X-Data-Sources"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimit-Limit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimit-Remaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RecallLookupResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "default": {
            "$ref": "#/components/responses/InternalError"
          }
        }
      }
    },
    "/v1/inventory/check": {
      "post": {
        "operationId": "checkInventory",
        "x-entropy-operation-id": "INVENTORY-CHECK",
        "summary": "Check inventory",
        "description": "Check 1 to 100 NDCs or barcodes, with lot numbers when you have them, against FDA recalls and shortages in one request, which counts as one against your allowance. Results keep your order. An empty list means none found; meta.warnings says what was searched.",
        "tags": [
          "Recalls and safety"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/InventoryCheckRequest"
              },
              "example": {
                "items": [
                  {
                    "ndc": "0003-0894-21",
                    "lot": "A1234"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success. `data` holds the result and `meta` the request ID, paging and source dates.",
            "headers": {
              "X-Request-ID": {
                "$ref": "#/components/headers/X-Request-ID"
              },
              "X-API-Version": {
                "$ref": "#/components/headers/X-API-Version"
              },
              "X-Data-Snapshot": {
                "$ref": "#/components/headers/X-Data-Snapshot"
              },
              "X-Data-As-Of": {
                "$ref": "#/components/headers/X-Data-As-Of"
              },
              "X-Data-Sources": {
                "$ref": "#/components/headers/X-Data-Sources"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimit-Limit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimit-Remaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InventoryCheckResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "415": {
            "$ref": "#/components/responses/UnsupportedMediaType"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "default": {
            "$ref": "#/components/responses/InternalError"
          }
        }
      }
    },
    "/v1/shortages/search": {
      "get": {
        "operationId": "searchShortages",
        "x-entropy-operation-id": "SHORTAGE-SEARCH",
        "summary": "Search shortages",
        "description": "Find FDA drug shortage presentations by text, company, status, therapeutic category, update dates and package NDC. The default view is current and to-be-discontinued shortages; a presentation ID reaches a resolved one.",
        "tags": [
          "Recalls and safety"
        ],
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Text ranked against the generic name, proprietary name, presentation, company, shortage reason, manufacturer availability text and national status. Every word matches at a word start, in any order, and openFDA’s harmonized names also count. Results come by relevance, or most recently updated first without q.",
            "schema": {
              "maxLength": 500,
              "minLength": 1,
              "type": "string"
            },
            "example": "Methotrexate"
          },
          {
            "name": "shortage_id",
            "in": "query",
            "required": false,
            "description": "Shortage IDs, matched exactly. Supplying one lifts the status default unless national_shortage_status is set. Repeat the parameter to send more than one.",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form",
            "explode": true
          },
          {
            "name": "company",
            "in": "query",
            "required": false,
            "description": "Company names, matched whole after case, punctuation and words like Inc, LLC or USA are ignored. Repeat the parameter to send more than one.",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form",
            "explode": true
          },
          {
            "name": "national_shortage_status",
            "in": "query",
            "required": false,
            "description": "current, resolved, to_be_discontinued or all; the default is current and to_be_discontinued. Send all on its own. Repeat the parameter to send more than one.",
            "schema": {
              "items": {
                "enum": [
                  "all",
                  "current",
                  "resolved",
                  "to_be_discontinued"
                ],
                "type": "string"
              },
              "type": "array",
              "default": [
                "current",
                "to_be_discontinued"
              ]
            },
            "style": "form",
            "explode": true
          },
          {
            "name": "therapeutic_category",
            "in": "query",
            "required": false,
            "description": "FDA therapeutic categories, such as Oncology or Anesthesia, in any case. Several values match any of them. Repeat the parameter to send more than one.",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form",
            "explode": true
          },
          {
            "name": "updated_from",
            "in": "query",
            "required": false,
            "description": "Earliest update date, YYYY-MM-DD.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "updated_to",
            "in": "query",
            "required": false,
            "description": "Latest update date, YYYY-MM-DD.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "package_ndc",
            "in": "query",
            "required": false,
            "description": "Package NDCs in any layout, matched against the shortage’s package NDC. Repeat the parameter to send more than one.",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form",
            "explode": true
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Presentations per page.",
            "schema": {
              "default": 20,
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "description": "The cursor from the previous page of this same search.",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "description": "Success. `data` holds the result and `meta` the request ID, paging and source dates.",
            "headers": {
              "X-Request-ID": {
                "$ref": "#/components/headers/X-Request-ID"
              },
              "X-API-Version": {
                "$ref": "#/components/headers/X-API-Version"
              },
              "X-Data-Snapshot": {
                "$ref": "#/components/headers/X-Data-Snapshot"
              },
              "X-Data-As-Of": {
                "$ref": "#/components/headers/X-Data-As-Of"
              },
              "X-Data-Sources": {
                "$ref": "#/components/headers/X-Data-Sources"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimit-Limit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimit-Remaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ShortageSearchResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "default": {
            "$ref": "#/components/responses/InternalError"
          }
        }
      }
    },
    "/v1/rems-programs/search": {
      "get": {
        "operationId": "searchRemsPrograms",
        "x-entropy-operation-id": "REMS-SEARCH",
        "summary": "Search REMS programs",
        "description": "Find FDA REMS programs by name or covered product and by requirement flags. Each program is what its latest version says; current programs only unless status asks for others.",
        "tags": [
          "Recalls and safety"
        ],
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Text ranked against the program name and its covered products’ established and trade names; a match may be a whole name, a word’s start (never inside a word), or every name word in any order. REMS, form and strength words are optional.",
            "schema": {
              "maxLength": 500,
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "description": "current (the default), inactive, released or moved_to_shared_system; several values combine. Repeat the parameter to send more than one.",
            "schema": {
              "items": {
                "enum": [
                  "current",
                  "inactive",
                  "moved_to_shared_system",
                  "released"
                ],
                "type": "string"
              },
              "type": "array"
            },
            "style": "form",
            "explode": true
          },
          {
            "name": "requirement",
            "in": "query",
            "required": false,
            "description": "Requirement flags the program must have, all of them: medication_guide, communication_plan, elements_to_assure_safe_use, implementation_system, prescriber_certification, dispenser_certification, patient_enrollment or prescriber_training. Repeat the parameter to send more than one.",
            "schema": {
              "items": {
                "enum": [
                  "communication_plan",
                  "dispenser_certification",
                  "elements_to_assure_safe_use",
                  "implementation_system",
                  "medication_guide",
                  "patient_enrollment",
                  "prescriber_certification",
                  "prescriber_training"
                ],
                "type": "string"
              },
              "type": "array"
            },
            "style": "form",
            "explode": true,
            "example": [
              "patient_enrollment"
            ]
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Programs per page.",
            "schema": {
              "default": 20,
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "description": "The cursor from the previous page of this same search.",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "description": "Success. `data` holds the result and `meta` the request ID, paging and source dates.",
            "headers": {
              "X-Request-ID": {
                "$ref": "#/components/headers/X-Request-ID"
              },
              "X-API-Version": {
                "$ref": "#/components/headers/X-API-Version"
              },
              "X-Data-Snapshot": {
                "$ref": "#/components/headers/X-Data-Snapshot"
              },
              "X-Data-As-Of": {
                "$ref": "#/components/headers/X-Data-As-Of"
              },
              "X-Data-Sources": {
                "$ref": "#/components/headers/X-Data-Sources"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimit-Limit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimit-Remaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RemsSearchResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "default": {
            "$ref": "#/components/responses/InternalError"
          }
        }
      }
    },
    "/v1/rems-programs/{rems_id}": {
      "get": {
        "operationId": "getRemsProgram",
        "x-entropy-operation-id": "REMS-LOOKUP",
        "summary": "Retrieve a REMS program",
        "description": "One REMS program with its covered products, paged; or, by NDC, the current program covering that product’s FDA application. A bad NDC is refused before the REMS data is read; a missing REMS release is a 503 naming the dataset rems.",
        "tags": [
          "Recalls and safety"
        ],
        "parameters": [
          {
            "name": "rems_id",
            "in": "path",
            "required": true,
            "description": "The program identifier from REMS-SEARCH, such as rems_24; FDA’s bare REMS ID (24) also works.",
            "schema": {
              "type": "string"
            },
            "example": "rems_395"
          },
          {
            "name": "product_limit",
            "in": "query",
            "required": false,
            "description": "Covered products per page.",
            "schema": {
              "default": 20,
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "name": "product_cursor",
            "in": "query",
            "required": false,
            "description": "The cursor from the previous page of this program’s products.",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "description": "Success. `data` holds the result and `meta` the request ID, paging and source dates.",
            "headers": {
              "X-Request-ID": {
                "$ref": "#/components/headers/X-Request-ID"
              },
              "X-API-Version": {
                "$ref": "#/components/headers/X-API-Version"
              },
              "X-Data-Snapshot": {
                "$ref": "#/components/headers/X-Data-Snapshot"
              },
              "X-Data-As-Of": {
                "$ref": "#/components/headers/X-Data-As-Of"
              },
              "X-Data-Sources": {
                "$ref": "#/components/headers/X-Data-Sources"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimit-Limit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimit-Remaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RemsLookupResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "default": {
            "$ref": "#/components/responses/InternalError"
          }
        }
      }
    },
    "/v1/rems-programs/lookup": {
      "get": {
        "operationId": "getRemsProgramByQuery",
        "x-entropy-operation-id": "REMS-LOOKUP",
        "summary": "Retrieve a REMS program by ID or NDC",
        "description": "Retrieve one REMS program by its ID, or by an NDC it covers, sent as query parameters.",
        "tags": [
          "Recalls and safety"
        ],
        "parameters": [
          {
            "name": "rems_id",
            "in": "query",
            "required": false,
            "description": "The program identifier from REMS-SEARCH, such as rems_24; FDA’s bare REMS ID (24) also works.",
            "schema": {
              "type": "string"
            },
            "example": "rems_395"
          },
          {
            "name": "ndc",
            "in": "query",
            "required": false,
            "description": "A product or package NDC, on GET /v1/rems-programs/lookup in place of rems_id. Returns the current program for its FDA application.",
            "schema": {
              "maxLength": 64,
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "name": "product_limit",
            "in": "query",
            "required": false,
            "description": "Covered products per page.",
            "schema": {
              "default": 20,
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "name": "product_cursor",
            "in": "query",
            "required": false,
            "description": "The cursor from the previous page of this program’s products.",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "description": "Success. `data` holds the result and `meta` the request ID, paging and source dates.",
            "headers": {
              "X-Request-ID": {
                "$ref": "#/components/headers/X-Request-ID"
              },
              "X-API-Version": {
                "$ref": "#/components/headers/X-API-Version"
              },
              "X-Data-Snapshot": {
                "$ref": "#/components/headers/X-Data-Snapshot"
              },
              "X-Data-As-Of": {
                "$ref": "#/components/headers/X-Data-As-Of"
              },
              "X-Data-Sources": {
                "$ref": "#/components/headers/X-Data-Sources"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimit-Limit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimit-Remaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RemsLookupResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "default": {
            "$ref": "#/components/responses/InternalError"
          }
        }
      }
    },
    "/v1/safety-labeling-changes/search": {
      "get": {
        "operationId": "searchSafetyLabelingChanges",
        "x-entropy-operation-id": "SAFETY-LABEL-CHANGE-SEARCH",
        "summary": "Safety labeling changes",
        "description": "Find FDA-designated safety labeling changes by drug, application, section and date. Each hit is one application-supplement change; each changed section shows the wording FDA underlined as new. A generic FDA lists nothing for shows its reference drug’s changes, marked as such.",
        "tags": [
          "Recalls and safety"
        ],
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Text matched against the drug and active-ingredient names; every word must match as a whole word, leaving out strength, form and words like label or change. Results come newest change first.",
            "schema": {
              "maxLength": 500,
              "minLength": 1,
              "type": "string"
            },
            "example": "amoxicillin"
          },
          {
            "name": "change_id",
            "in": "query",
            "required": false,
            "description": "Change IDs, in any letter case. Repeat the parameter to send more than one.",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form",
            "explode": true
          },
          {
            "name": "application_number",
            "in": "query",
            "required": false,
            "description": "FDA application numbers, such as NDA 020702. A number alone matches any type. Repeat the parameter to send more than one.",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form",
            "explode": true
          },
          {
            "name": "section",
            "in": "query",
            "required": false,
            "description": "A section code (5), title (Warnings and Precautions) or FDA’s abbreviation (WP). Repeat for several.",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "style": "form",
            "explode": true
          },
          {
            "name": "changed_from",
            "in": "query",
            "required": false,
            "description": "Earliest FDA change date, YYYY-MM-DD.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "changed_to",
            "in": "query",
            "required": false,
            "description": "Latest FDA change date, YYYY-MM-DD.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "include",
            "in": "query",
            "required": false,
            "description": "section_text adds each section’s full text; source_formatting adds it with FDA’s underline spans. Repeat the parameter to send more than one.",
            "schema": {
              "items": {
                "enum": [
                  "section_text",
                  "source_formatting"
                ],
                "type": "string"
              },
              "type": "array"
            },
            "style": "form",
            "explode": true
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Changes per page.",
            "schema": {
              "default": 20,
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "description": "The cursor from the previous page of this same search.",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "description": "Success. `data` holds the result and `meta` the request ID, paging and source dates.",
            "headers": {
              "X-Request-ID": {
                "$ref": "#/components/headers/X-Request-ID"
              },
              "X-API-Version": {
                "$ref": "#/components/headers/X-API-Version"
              },
              "X-Data-Snapshot": {
                "$ref": "#/components/headers/X-Data-Snapshot"
              },
              "X-Data-As-Of": {
                "$ref": "#/components/headers/X-Data-As-Of"
              },
              "X-Data-Sources": {
                "$ref": "#/components/headers/X-Data-Sources"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimit-Limit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimit-Remaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SafetyLabelChangeSearchResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "default": {
            "$ref": "#/components/responses/InternalError"
          }
        }
      }
    },
    "/v1/safety-events/changes": {
      "get": {
        "operationId": "listSafetyEventChanges",
        "x-entropy-operation-id": "SAFETY-EVENT-CHANGES",
        "summary": "Changes feed",
        "description": "What changed in FDA recalls and shortages, newest first. Each change includes the full record, the time we first saw it and FDA’s own dates.",
        "tags": [
          "Recalls and safety"
        ],
        "parameters": [
          {
            "name": "since",
            "in": "query",
            "required": false,
            "description": "Changes first seen at or after this time (inclusive): a date, YYYY-MM-DD, which is midnight UTC so the whole day is kept, or an ISO date-time with a zone.",
            "schema": {
              "maxLength": 40,
              "minLength": 10,
              "type": "string"
            },
            "example": "2026-10-01"
          },
          {
            "name": "family",
            "in": "query",
            "required": false,
            "description": "recalls or shortages. Repeat for both; leave it out for both.",
            "schema": {
              "items": {
                "enum": [
                  "recalls",
                  "shortages"
                ],
                "type": "string"
              },
              "type": "array"
            },
            "style": "form",
            "explode": true
          },
          {
            "name": "record_id",
            "in": "query",
            "required": false,
            "description": "One record’s changes: the record_id of an earlier change, or a recall number such as D-0645-2024 for every product of that recall. An ID no record carries is 404; one from a family you did not ask for is 400.",
            "schema": {
              "maxLength": 100,
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Changes per page.",
            "schema": {
              "default": 20,
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "description": "The cursor from the previous page of this same feed.",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "responses": {
          "200": {
            "description": "Success. `data` holds the result and `meta` the request ID, paging and source dates.",
            "headers": {
              "X-Request-ID": {
                "$ref": "#/components/headers/X-Request-ID"
              },
              "X-API-Version": {
                "$ref": "#/components/headers/X-API-Version"
              },
              "X-Data-Snapshot": {
                "$ref": "#/components/headers/X-Data-Snapshot"
              },
              "X-Data-As-Of": {
                "$ref": "#/components/headers/X-Data-As-Of"
              },
              "X-Data-Sources": {
                "$ref": "#/components/headers/X-Data-Sources"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimit-Limit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimit-Remaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SafetyEventChangesResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "413": {
            "$ref": "#/components/responses/PayloadTooLarge"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "default": {
            "$ref": "#/components/responses/InternalError"
          }
        }
      }
    }
  },
  "components": {
    "securitySchemes": {
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "description": "Your EntropyAPI key, sent as a bearer token."
      }
    },
    "parameters": {
      "IdempotencyKey": {
        "name": "Idempotency-Key",
        "in": "header",
        "required": false,
        "description": "Makes a retry count once. 8 to 128 letters, digits and . _ : / + -, starting with a letter or digit. For 24 hours the key is bound to your workspace and the exact request; reusing it for different work is refused with 409.",
        "schema": {
          "type": "string",
          "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/+-]{7,127}$"
        }
      }
    },
    "headers": {
      "X-Request-ID": {
        "description": "The request's identifier. Quote it when you contact support.",
        "schema": {
          "type": "string"
        }
      },
      "X-API-Version": {
        "description": "The API version that answered.",
        "schema": {
          "type": "string",
          "examples": [
            "v1"
          ]
        }
      },
      "X-Data-Snapshot": {
        "description": "The identity of the data that answered. It changes when the data does.",
        "schema": {
          "type": "string"
        }
      },
      "X-Data-As-Of": {
        "description": "The date of the data behind the answer: the oldest publisher date among its sources.",
        "schema": {
          "type": "string",
          "format": "date"
        }
      },
      "X-Data-Sources": {
        "description": "The sources behind the answer, each once, comma-separated.",
        "schema": {
          "type": "string"
        }
      },
      "RateLimit-Limit": {
        "description": "The allowance for the window with the least remaining.",
        "schema": {
          "type": "integer"
        }
      },
      "RateLimit-Remaining": {
        "description": "Requests left in that window.",
        "schema": {
          "type": "integer"
        }
      },
      "RateLimit-Reset": {
        "description": "Seconds until that window resets.",
        "schema": {
          "type": "integer"
        }
      },
      "Retry-After": {
        "description": "Seconds to wait before trying again.",
        "schema": {
          "type": "integer"
        }
      }
    },
    "responses": {
      "BadRequest": {
        "description": "The request is malformed, combines parameters the operation does not allow, or is too broad to answer.",
        "headers": {
          "X-Request-ID": {
            "$ref": "#/components/headers/X-Request-ID"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorEnvelope"
            },
            "example": {
              "error": {
                "code": "invalid_request",
                "message": "The limit must be between 1 and 100.",
                "details": {
                  "field": "limit"
                }
              },
              "meta": {
                "request_id": "req_3f9a1c7e5b2d4a6f8c0e1b3d7a9c2e4f"
              }
            }
          }
        }
      },
      "Unauthorized": {
        "description": "The API key is missing or invalid.",
        "headers": {
          "X-Request-ID": {
            "$ref": "#/components/headers/X-Request-ID"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorEnvelope"
            },
            "example": {
              "error": {
                "code": "unauthorized",
                "message": "A valid API key is required."
              },
              "meta": {
                "request_id": "req_3f9a1c7e5b2d4a6f8c0e1b3d7a9c2e4f"
              }
            }
          }
        }
      },
      "Forbidden": {
        "description": "The key is valid but does not currently have access.",
        "headers": {
          "X-Request-ID": {
            "$ref": "#/components/headers/X-Request-ID"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorEnvelope"
            },
            "example": {
              "error": {
                "code": "access_denied",
                "message": "The key does not currently have access."
              },
              "meta": {
                "request_id": "req_3f9a1c7e5b2d4a6f8c0e1b3d7a9c2e4f"
              }
            }
          }
        }
      },
      "NotFound": {
        "description": "A valid identifier with no record in the current data.",
        "headers": {
          "X-Request-ID": {
            "$ref": "#/components/headers/X-Request-ID"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorEnvelope"
            },
            "example": {
              "error": {
                "code": "unknown_identifier",
                "message": "No product, Drug or label carries this code.",
                "details": {
                  "field": "code"
                }
              },
              "meta": {
                "request_id": "req_3f9a1c7e5b2d4a6f8c0e1b3d7a9c2e4f"
              }
            }
          }
        }
      },
      "Conflict": {
        "description": "The Idempotency-Key was already used for different work or is still in progress, or the identifier stays ambiguous (details.candidates lists the choices, at most 25, with details.more when there are more).",
        "headers": {
          "X-Request-ID": {
            "$ref": "#/components/headers/X-Request-ID"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorEnvelope"
            },
            "example": {
              "error": {
                "code": "ambiguous_identifier",
                "message": "This code names more than one thing.",
                "details": {
                  "field": "code"
                }
              },
              "meta": {
                "request_id": "req_3f9a1c7e5b2d4a6f8c0e1b3d7a9c2e4f"
              }
            }
          }
        }
      },
      "Gone": {
        "description": "An identifier that was valid once and is retired. details.candidates lists the current identifiers that replaced it when the source names them.",
        "headers": {
          "X-Request-ID": {
            "$ref": "#/components/headers/X-Request-ID"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorEnvelope"
            },
            "example": {
              "error": {
                "code": "retired_identifier",
                "message": "This code is retired.",
                "details": {
                  "field": "code"
                }
              },
              "meta": {
                "request_id": "req_3f9a1c7e5b2d4a6f8c0e1b3d7a9c2e4f"
              }
            }
          }
        }
      },
      "PayloadTooLarge": {
        "description": "A body, batch, request structure or response over its limit.",
        "headers": {
          "X-Request-ID": {
            "$ref": "#/components/headers/X-Request-ID"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorEnvelope"
            },
            "example": {
              "error": {
                "code": "batch_too_large",
                "message": "The batch is over the operation's item limit."
              },
              "meta": {
                "request_id": "req_3f9a1c7e5b2d4a6f8c0e1b3d7a9c2e4f"
              }
            }
          }
        }
      },
      "UnsupportedMediaType": {
        "description": "A POST body must be application/json.",
        "headers": {
          "X-Request-ID": {
            "$ref": "#/components/headers/X-Request-ID"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorEnvelope"
            },
            "example": {
              "error": {
                "code": "unsupported_media_type",
                "message": "A POST body must be application/json."
              },
              "meta": {
                "request_id": "req_3f9a1c7e5b2d4a6f8c0e1b3d7a9c2e4f"
              }
            }
          }
        }
      },
      "UnprocessableEntity": {
        "description": "An identifier the operation reads but does not support: scanner text in a form it does not read (unsupported_barcode), or a valid code the operation does not serve (unsupported_identifier, with details.field and details.reason).",
        "headers": {
          "X-Request-ID": {
            "$ref": "#/components/headers/X-Request-ID"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorEnvelope"
            },
            "example": {
              "error": {
                "code": "unsupported_barcode",
                "message": "The scanner text is in a form the API does not read.",
                "details": {
                  "field": "code"
                }
              },
              "meta": {
                "request_id": "req_3f9a1c7e5b2d4a6f8c0e1b3d7a9c2e4f"
              }
            }
          }
        }
      },
      "TooManyRequests": {
        "description": "A limit was reached. Retry-After says when to try again.",
        "headers": {
          "X-Request-ID": {
            "$ref": "#/components/headers/X-Request-ID"
          },
          "RateLimit-Limit": {
            "$ref": "#/components/headers/RateLimit-Limit"
          },
          "RateLimit-Remaining": {
            "$ref": "#/components/headers/RateLimit-Remaining"
          },
          "RateLimit-Reset": {
            "$ref": "#/components/headers/RateLimit-Reset"
          },
          "Retry-After": {
            "$ref": "#/components/headers/Retry-After"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorEnvelope"
            },
            "example": {
              "error": {
                "code": "rate_limit_exceeded",
                "message": "The Free plan allows 30 requests a minute.",
                "details": {
                  "bucket": "free_per_minute"
                }
              },
              "meta": {
                "request_id": "req_3f9a1c7e5b2d4a6f8c0e1b3d7a9c2e4f"
              }
            }
          }
        }
      },
      "ServiceUnavailable": {
        "description": "A dataset or component the operation needs is not available right now.",
        "headers": {
          "X-Request-ID": {
            "$ref": "#/components/headers/X-Request-ID"
          },
          "Retry-After": {
            "$ref": "#/components/headers/Retry-After"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorEnvelope"
            },
            "example": {
              "error": {
                "code": "dataset_unavailable",
                "message": "A dataset the operation needs is not available."
              },
              "meta": {
                "request_id": "req_3f9a1c7e5b2d4a6f8c0e1b3d7a9c2e4f"
              }
            }
          }
        }
      },
      "InternalError": {
        "description": "An unexpected failure. Quote X-Request-ID when you contact support.",
        "headers": {
          "X-Request-ID": {
            "$ref": "#/components/headers/X-Request-ID"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorEnvelope"
            },
            "example": {
              "error": {
                "code": "internal_error",
                "message": "An unexpected failure."
              },
              "meta": {
                "request_id": "req_3f9a1c7e5b2d4a6f8c0e1b3d7a9c2e4f"
              }
            }
          }
        }
      }
    },
    "schemas": {
      "FacetMetadata": {
        "additionalProperties": {
          "$ref": "#/components/schemas/JsonValue"
        },
        "type": "object"
      },
      "JsonValue": {},
      "Warning": {
        "additionalProperties": false,
        "properties": {
          "code": {
            "type": "string",
            "description": "A stable code for the kind of warning."
          },
          "message": {
            "type": "string",
            "description": "The warning, written for a person."
          },
          "details": {
            "$ref": "#/components/schemas/WarningDetails",
            "description": "Values your code can read, such as the field the warning concerns."
          }
        },
        "required": [
          "code",
          "message"
        ],
        "type": "object"
      },
      "SourceDate": {
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string",
            "description": "The source's identifier."
          },
          "data_as_of": {
            "format": "date",
            "type": "string",
            "description": "The publisher's own release date, or the day we fetched the source when it states none (UTC, YYYY-MM-DD)."
          },
          "retrieved_at": {
            "type": "string",
            "description": "When we last fetched the source, as a UTC timestamp."
          },
          "attribution": {
            "type": "string",
            "description": "The notice to keep when you display or redistribute data from this source."
          }
        },
        "required": [
          "id"
        ],
        "type": "object"
      },
      "SummaryMetadata": {
        "additionalProperties": {
          "type": "integer"
        },
        "type": "object"
      },
      "WarningDetails": {
        "additionalProperties": {
          "$ref": "#/components/schemas/JsonValue"
        },
        "type": "object"
      },
      "Meta": {
        "additionalProperties": false,
        "properties": {
          "request_id": {
            "type": "string",
            "description": "The request's identifier. Quote it when you contact support."
          },
          "limit": {
            "type": "integer",
            "description": "The page size applied to this response."
          },
          "total": {
            "type": "integer",
            "description": "How many records match, on operations that count them."
          },
          "next_cursor": {
            "type": "string",
            "description": "Send this cursor with the same search to get the next page. Absent on the last page."
          },
          "has_more": {
            "type": "boolean",
            "description": "True when more results follow this page."
          },
          "total_relation": {
            "const": "lower_bound",
            "type": "string",
            "description": "lower_bound means total is a minimum and more records may match."
          },
          "warnings": {
            "items": {
              "$ref": "#/components/schemas/Warning"
            },
            "type": "array",
            "description": "Notes on the scope of the answer, such as a search that was narrowed."
          },
          "facets": {
            "$ref": "#/components/schemas/FacetMetadata",
            "description": "Counts for the matches, on operations that return them."
          },
          "summary": {
            "$ref": "#/components/schemas/SummaryMetadata",
            "description": "Summary counts for the matches, on operations that return them."
          },
          "sources": {
            "items": {
              "$ref": "#/components/schemas/SourceDate"
            },
            "type": "array",
            "description": "The sources behind the answer, each with its dates and attribution."
          }
        },
        "required": [
          "request_id"
        ],
        "type": "object"
      },
      "ErrorDetails": {
        "additionalProperties": {
          "$ref": "#/components/schemas/JsonValue"
        },
        "type": "object"
      },
      "ErrorMeta": {
        "additionalProperties": false,
        "properties": {
          "request_id": {
            "type": "string",
            "description": "The request's identifier. Quote it when you contact support."
          }
        },
        "required": [
          "request_id"
        ],
        "type": "object"
      },
      "ErrorBody": {
        "additionalProperties": false,
        "properties": {
          "code": {
            "type": "string",
            "description": "A stable code for your code to branch on, for example unknown_identifier."
          },
          "message": {
            "type": "string",
            "description": "The error, written for a person."
          },
          "details": {
            "$ref": "#/components/schemas/ErrorDetails",
            "description": "Values your code can read, such as the field concerned or the limit that was reached. An ambiguous identifier lists up to 25 choices in candidates, each with one identifier key (product_ndc, package_ndc, rxcui, set_id or rems_id) and a name when known, and sets more to true when there are others. A retired identifier (410) may carry rxcui, name (the latest name RxNorm archived for it), last_released_on (the last RxNorm release that carried it, YYYY-MM-DD), candidates and more. An unsupported identifier (422) carries field and reason."
          }
        },
        "required": [
          "code",
          "message"
        ],
        "type": "object"
      },
      "ErrorEnvelope": {
        "additionalProperties": false,
        "properties": {
          "error": {
            "$ref": "#/components/schemas/ErrorBody",
            "description": "What went wrong."
          },
          "meta": {
            "$ref": "#/components/schemas/ErrorMeta",
            "description": "The request's identifier."
          }
        },
        "required": [
          "error",
          "meta"
        ],
        "type": "object"
      },
      "PillCompany": {
        "additionalProperties": false,
        "properties": {
          "name": {
            "minLength": 1,
            "type": "string",
            "description": "The company’s name."
          },
          "role": {
            "enum": [
              "imprint_brand",
              "labeler",
              "manufacturer"
            ],
            "type": "string",
            "description": "The company’s role: manufacturer, labeler or imprint_brand."
          }
        },
        "required": [
          "name",
          "role"
        ],
        "type": "object"
      },
      "PillLabel": {
        "additionalProperties": false,
        "properties": {
          "set_id": {
            "minLength": 1,
            "type": "string",
            "description": "The DailyMed set ID of a label that carries this pill."
          },
          "labeler": {
            "type": "string",
            "description": "The labeler; absent when the label names none."
          },
          "dailymed_url": {
            "type": "string",
            "description": "The label on DailyMed."
          },
          "discontinued": {
            "type": "boolean",
            "description": "True when the label records every marketing act as completed with an end date, false when any act is active; absent when unknown. It does not say whether the pill can still be bought."
          },
          "product_ndcs": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "description": "The product NDCs on this label for this pill, labeler-product format; an empty list when the label records none."
          },
          "rxnorm": {
            "$ref": "#/components/schemas/RxNormConcept",
            "description": "The RxNorm drug (SCD or SBD) or pack (GPCK or BPCK) this label’s products map to: rxcui, concept_type and name. Absent when unmapped or when the products map to several. Pass the rxcui to DRUG-LOOKUP to reach the Drug RxCUI other searches take."
          }
        },
        "required": [
          "dailymed_url",
          "product_ndcs",
          "set_id"
        ],
        "type": "object"
      },
      "PillMatch": {
        "additionalProperties": false,
        "properties": {
          "drug": {
            "minLength": 1,
            "type": "string",
            "description": "The drug name, such as hydrocodone bitartrate and acetaminophen."
          },
          "strength": {
            "type": "string",
            "description": "Strength; absent when unknown."
          },
          "dosage_form": {
            "type": "string",
            "description": "Dosage form; absent when unknown."
          },
          "imprint": {
            "type": "string",
            "description": "The imprint from the label, with its printed parts separated by semicolons."
          },
          "colors": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "description": "The pill’s colors."
          },
          "shape": {
            "type": "string",
            "description": "The pill’s shape; absent when unknown."
          },
          "scored": {
            "type": "boolean",
            "description": "Whether the pill is scored; absent when the label does not say."
          },
          "discontinued": {
            "type": "boolean",
            "description": "True when the SPL marketing dates record every product behind this pill as ended, false when any is recorded as marketed; absent when unknown. It does not say whether the pill can still be bought."
          },
          "companies": {
            "items": {
              "$ref": "#/components/schemas/PillCompany"
            },
            "type": "array",
            "description": "The companies that label this pill."
          },
          "labels": {
            "items": {
              "$ref": "#/components/schemas/PillLabel"
            },
            "type": "array",
            "description": "The DailyMed labels that carry this pill."
          }
        },
        "required": [
          "colors",
          "companies",
          "drug",
          "imprint",
          "labels"
        ],
        "type": "object"
      },
      "RxNormConcept": {
        "additionalProperties": false,
        "properties": {
          "rxcui": {
            "pattern": "^[1-9][0-9]{0,15}$",
            "type": "string",
            "description": "The concept’s RxCUI."
          },
          "concept_type": {
            "type": "string",
            "description": "Its RxNorm term type, such as SCD or SBD."
          },
          "name": {
            "type": "string",
            "description": "Its RxNorm name."
          }
        },
        "required": [
          "concept_type",
          "name",
          "rxcui"
        ],
        "type": "object"
      },
      "PillSearchData": {
        "items": {
          "$ref": "#/components/schemas/PillMatch"
        },
        "type": "array"
      },
      "PillSearchRequest": {
        "additionalProperties": false,
        "properties": {
          "imprint": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Both sides, any order. The printed letters and numbers. Matching ignores case, spaces and punctuation."
          },
          "colors": {
            "items": {
              "type": "string"
            },
            "maxItems": 3,
            "type": "array",
            "description": "Up to three FDA pill colors, such as white or blue. Every color you send must be recorded for the pill. A pill with no recorded color matches no color filter. Common words like off-white are accepted. Other values return 400 with the accepted list."
          },
          "shape": {
            "maxLength": 60,
            "minLength": 1,
            "type": "string",
            "description": "An FDA pill shape, such as round, oval or capsule. A pill with no recorded shape matches no shape filter. Common words like oblong are accepted. Other values return 400 with the accepted list."
          },
          "dosage_form": {
            "maxLength": 60,
            "minLength": 1,
            "type": "string",
            "description": "Dosage form. Tablet or capsule also matches its extended- and delayed-release forms."
          },
          "scored": {
            "type": "boolean",
            "description": "Whether the pill is scored. Pills with unknown scoring match neither value."
          },
          "limit": {
            "default": 20,
            "maximum": 100,
            "minimum": 1,
            "type": "integer",
            "description": "The most candidates to return, from 1 to 100; defaults to 20. Candidates come in a fixed order that is not a confidence score."
          },
          "cursor": {
            "maxLength": 4096,
            "type": "string",
            "description": "The next-page cursor from the preceding response, with the same filters."
          }
        },
        "required": [
          "imprint"
        ],
        "type": "object"
      },
      "BarcodeRead": {
        "additionalProperties": false,
        "properties": {
          "gtin": {
            "type": "string",
            "description": "The GTIN the scan carried."
          },
          "lot": {
            "type": "string",
            "description": "The lot from the scan."
          },
          "serial": {
            "type": "string",
            "description": "The serial number from the scan."
          },
          "expiry": {
            "format": "date",
            "type": "string",
            "description": "The expiry date from the scan."
          },
          "package_match_scope": {
            "enum": [
              "ndc_package",
              "ndc_package_only_not_outer_case"
            ],
            "type": "string",
            "description": "ndc_package when the scanned package is the NDC’s package; ndc_package_only_not_outer_case when the scan was an outer case and the match is the package inside it."
          }
        },
        "required": [
          "package_match_scope"
        ],
        "type": "object"
      },
      "ClinicalScope": {
        "additionalProperties": false,
        "properties": {
          "kind": {
            "enum": [
              "formulation",
              "precise_ingredient",
              "product",
              "route",
              "salt"
            ],
            "type": "string",
            "description": "What the part describes: route, salt, precise_ingredient, formulation or product."
          },
          "value": {
            "type": "string",
            "description": "The part’s value, such as a route name or a salt name."
          },
          "rxcui": {
            "pattern": "^[1-9][0-9]{0,15}$",
            "type": "string",
            "description": "The salt’s or precise ingredient’s own RxCUI, when it has one."
          }
        },
        "required": [
          "kind",
          "value"
        ],
        "type": "object"
      },
      "CodedName": {
        "additionalProperties": false,
        "properties": {
          "name": {
            "type": "string",
            "description": "The term’s name."
          },
          "code": {
            "type": "string",
            "description": "The term’s SPL code."
          }
        },
        "type": "object"
      },
      "Drug": {
        "additionalProperties": false,
        "properties": {
          "rxcui": {
            "pattern": "^[1-9][0-9]{0,15}$",
            "type": "string",
            "description": "The drug’s RxCUI."
          },
          "concept_type": {
            "enum": [
              "IN",
              "MIN",
              "PIN"
            ],
            "type": "string",
            "description": "IN, PIN or MIN."
          },
          "preferred_name": {
            "type": "string",
            "description": "The RxNorm preferred name."
          },
          "ingredients": {
            "items": {
              "$ref": "#/components/schemas/DrugIngredient"
            },
            "minItems": 1,
            "type": "array",
            "description": "The exact IN and PIN members of the drug."
          }
        },
        "required": [
          "concept_type",
          "ingredients",
          "preferred_name",
          "rxcui"
        ],
        "type": "object"
      },
      "DrugClass": {
        "additionalProperties": false,
        "properties": {
          "type": {
            "enum": [
              "CS",
              "EPC",
              "MoA",
              "PE"
            ],
            "type": "string",
            "description": "EPC (established pharmacologic class), MoA (mechanism of action), PE (physiologic effect) or CS (chemical structure)."
          },
          "code": {
            "type": "string",
            "description": "The class code in its system."
          },
          "system": {
            "enum": [
              "MED-RT",
              "MeSH",
              "NDF-RT"
            ],
            "type": "string",
            "description": "MED-RT, NDF-RT or MeSH."
          },
          "name": {
            "type": "string",
            "description": "The class name."
          }
        },
        "required": [
          "code",
          "name",
          "system",
          "type"
        ],
        "type": "object"
      },
      "DrugIngredient": {
        "additionalProperties": false,
        "properties": {
          "rxcui": {
            "pattern": "^[1-9][0-9]{0,15}$",
            "type": "string",
            "description": "The ingredient’s RxCUI."
          },
          "concept_type": {
            "enum": [
              "IN",
              "PIN"
            ],
            "type": "string",
            "description": "IN or PIN."
          },
          "preferred_name": {
            "type": "string",
            "description": "The ingredient’s RxNorm preferred name."
          }
        },
        "required": [
          "concept_type",
          "preferred_name",
          "rxcui"
        ],
        "type": "object"
      },
      "DrugLookupResult": {
        "additionalProperties": false,
        "properties": {
          "requested_rxcui": {
            "pattern": "^[1-9][0-9]{0,15}$",
            "type": "string",
            "description": "The RxCUI the code names."
          },
          "status": {
            "enum": [
              "ingredient_of",
              "matched",
              "redirected"
            ],
            "type": "string",
            "description": "matched: the RxCUI is the drug. ingredient_of: a brand or product RxCUI, answered with its ingredient drug. redirected: a retired RxCUI with one successor, answered with the successor. Any other RxCUI is an error, not a status: 404 when RxNorm does not know it (reason unresolved when its history does not cover it), 409 with candidates when it names several drugs, 410 when it is retired with no single successor, 422 when it is not a drug."
          },
          "drug": {
            "$ref": "#/components/schemas/Drug",
            "description": "The drug."
          },
          "candidate_rxcuis": {
            "items": {
              "pattern": "^[1-9][0-9]{0,15}$",
              "type": "string"
            },
            "type": "array",
            "description": "The successor RxCUI when the status is redirected."
          }
        },
        "required": [
          "drug",
          "requested_rxcui",
          "status"
        ],
        "type": "object"
      },
      "ExcipientFlag": {
        "additionalProperties": false,
        "properties": {
          "category": {
            "enum": [
              "alcohol",
              "aspartame",
              "beeswax",
              "benzalkonium_chloride",
              "benzoate",
              "benzyl_alcohol",
              "bha_bht",
              "carboxymethylcellulose",
              "castor_oil",
              "cetostearyl_alcohol",
              "coconut",
              "corn",
              "dye",
              "edetate",
              "egg",
              "fish_shellfish",
              "formaldehyde",
              "fragrance",
              "gelatin",
              "gluten_source",
              "iodine",
              "isothiazolinone",
              "lactose",
              "lanolin",
              "latex",
              "maltodextrin_dextrin",
              "milk",
              "paraben",
              "peanut",
              "polyethylene_glycol",
              "polysorbate",
              "povidone",
              "propylene_glycol",
              "saccharin",
              "sesame",
              "shellac",
              "sorbate",
              "soy",
              "starch",
              "sugar",
              "sugar_alcohol",
              "sulfite",
              "tartrazine"
            ],
            "type": "string",
            "description": "The excipient category."
          },
          "ingredients": {
            "items": {
              "$ref": "#/components/schemas/ExcipientIngredient"
            },
            "minItems": 1,
            "type": "array",
            "description": "The ingredients that put the product in the category."
          }
        },
        "required": [
          "category",
          "ingredients"
        ],
        "type": "object"
      },
      "ExcipientIngredient": {
        "additionalProperties": false,
        "properties": {
          "name": {
            "type": "string",
            "description": "The ingredient’s name."
          },
          "unii": {
            "type": "string",
            "description": "The ingredient’s UNII."
          },
          "active": {
            "type": "boolean",
            "description": "True when the ingredient is also an active ingredient."
          }
        },
        "required": [
          "active",
          "unii"
        ],
        "type": "object"
      },
      "Excipients": {
        "additionalProperties": false,
        "properties": {
          "has": {
            "items": {
              "$ref": "#/components/schemas/ExcipientFlag"
            },
            "type": "array",
            "description": "The excipient categories the product has, each with the ingredients that put it there. A category not listed doesn’t mean the product is free of it."
          },
          "unclassified_count": {
            "minimum": 0,
            "type": "integer",
            "description": "Non-active ingredients that could not be classified."
          }
        },
        "required": [
          "has",
          "unclassified_count"
        ],
        "type": "object"
      },
      "IngredientNdc": {
        "additionalProperties": false,
        "properties": {
          "rxcui": {
            "pattern": "^[1-9][0-9]{0,15}$",
            "type": "string",
            "description": "The ingredient’s RxCUI."
          },
          "scope": {
            "items": {
              "$ref": "#/components/schemas/ClinicalScope"
            },
            "type": "array",
            "description": "What tells apart reference entries that share the RxCUI, such as a route or a salt. Left out when there is none."
          },
          "as_of": {
            "format": "date",
            "type": "string",
            "description": "The date of the NDC reference data."
          }
        },
        "required": [
          "as_of",
          "rxcui"
        ],
        "type": "object"
      },
      "InventoryRecall": {
        "additionalProperties": false,
        "properties": {
          "recall_id": {
            "type": "string",
            "description": "The event’s identifier, for RECALL-LOOKUP."
          },
          "recall_number": {
            "type": "string",
            "description": "The FDA recall number."
          },
          "classification": {
            "type": "string",
            "description": "The FDA classification."
          },
          "enforcement_status_as_published": {
            "type": "string",
            "description": "The enforcement status as FDA published it."
          },
          "report_date": {
            "type": "string",
            "description": "The report date."
          },
          "termination_date": {
            "type": "string",
            "description": "The date FDA terminated the recall, when it has; the recall stays listed and is matched and ordered like any other."
          },
          "match_level": {
            "enum": [
              "package",
              "product"
            ],
            "type": "string",
            "description": "package when the recall lists this package NDC, product when it lists the product NDC. There is no other value."
          },
          "matched_ndcs": {
            "items": {
              "type": "string"
            },
            "minItems": 1,
            "type": "array",
            "description": "The NDCs that matched."
          },
          "product_description": {
            "type": "string",
            "description": "The product description, at most 650 characters."
          },
          "product_description_truncated": {
            "const": true,
            "type": "boolean",
            "description": "True when the description was cut."
          },
          "code_information": {
            "type": "string",
            "description": "Lot and code information, at most 650 characters."
          },
          "code_information_truncated": {
            "const": true,
            "type": "boolean",
            "description": "True when the code information was cut."
          },
          "lot_match": {
            "enum": [
              "all_lots",
              "indeterminate",
              "matched",
              "not_found"
            ],
            "type": "string",
            "description": "matched: the lot appears as a whole code or falls inside a lot range the code text names. all_lots: the recall covers every lot. indeterminate: the lot sits inside a longer code, or the text gives a range that cannot be compared. not_found: no match in the code text. not_found does not clear the recall. Absent when the item sent no lot."
          },
          "expiry_match": {
            "enum": [
              "in_window",
              "no_window",
              "not_evaluated",
              "outside_window"
            ],
            "type": "string",
            "description": "Only with an expiry. in_window: the code text states an expiry window that overlaps the date. outside_window: the text states windows and none overlaps the date. no_window: the text states no expiry window. not_evaluated: the text has not been read for windows yet. Reported beside lot_match; neither clears a recall on its own."
          },
          "reason": {
            "type": "string",
            "description": "The reason for recall, with include=reason."
          },
          "reason_truncated": {
            "const": true,
            "type": "boolean",
            "description": "True when the reason was cut."
          }
        },
        "required": [
          "match_level",
          "matched_ndcs",
          "recall_id"
        ],
        "type": "object"
      },
      "InventoryShortage": {
        "additionalProperties": false,
        "properties": {
          "shortage_id": {
            "type": "string",
            "description": "The shortage’s ID. Pass it to SHORTAGE-SEARCH as shortage_id."
          },
          "package_ndc": {
            "type": "string",
            "description": "The package NDC FDA lists."
          },
          "generic_name": {
            "type": "string",
            "description": "FDA’s generic name for the presentation, at most 160 characters."
          },
          "company": {
            "type": "string",
            "description": "The company FDA lists, at most 160 characters."
          },
          "national_shortage_status": {
            "type": "string",
            "description": "FDA’s national shortage status, verbatim. FDA’s text: Current, To Be Discontinued or Resolved."
          },
          "manufacturer_availability_text": {
            "type": "string",
            "description": "The company’s availability text, verbatim, such as Available or Limited Availability. It never overrides the national status."
          },
          "first_posted_date": {
            "type": "string",
            "description": "The date FDA first posted the shortage."
          },
          "updated_date": {
            "type": "string",
            "description": "The date FDA last updated it."
          },
          "match_level": {
            "enum": [
              "package",
              "product"
            ],
            "type": "string",
            "description": "package when FDA lists this package, product when it lists another package of the same product. There is no other value."
          }
        },
        "required": [
          "match_level",
          "national_shortage_status",
          "shortage_id"
        ],
        "type": "object"
      },
      "KitPart": {
        "additionalProperties": false,
        "properties": {
          "product_ndc": {
            "type": "string",
            "description": "The part’s product NDC."
          },
          "product_name": {
            "type": "string",
            "description": "The part’s name."
          },
          "dosage_form": {
            "$ref": "#/components/schemas/CodedName",
            "description": "The part’s SPL dosage form, with its code."
          },
          "routes": {
            "items": {
              "$ref": "#/components/schemas/CodedName"
            },
            "type": "array",
            "description": "The part’s SPL routes, with their codes."
          },
          "ingredients": {
            "items": {
              "$ref": "#/components/schemas/ProfileIngredient"
            },
            "type": "array",
            "description": "The part’s ingredients with their roles and strengths."
          }
        },
        "required": [
          "ingredients",
          "routes"
        ],
        "type": "object"
      },
      "OrangeBookExclusivity": {
        "additionalProperties": false,
        "properties": {
          "code": {
            "type": "string",
            "description": "FDA’s exclusivity code, such as NCE, NPP, ODE-123 or M-14."
          },
          "expiration_date": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string",
            "description": "When the exclusivity expires (YYYY-MM-DD)."
          }
        },
        "required": [
          "code",
          "expiration_date"
        ],
        "type": "object"
      },
      "OrangeBookFacts": {
        "additionalProperties": false,
        "properties": {
          "application": {
            "type": "string",
            "description": "The application number."
          },
          "te_codes": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "description": "The product’s therapeutic equivalence codes, such as AB."
          },
          "reference_listed_drug": {
            "type": "boolean",
            "description": "True when the product is the reference listed drug."
          },
          "reference_standard": {
            "type": "boolean",
            "description": "True when the product is the reference standard."
          },
          "approval_date": {
            "type": "string",
            "description": "The approval date, present when every active product of the application shares it, or for a product rated by its own book row, that row’s date."
          },
          "exclusivity": {
            "items": {
              "$ref": "#/components/schemas/OrangeBookExclusivity"
            },
            "type": "array",
            "description": "Every exclusivity FDA’s Orange Book lists for the product, as FDA publishes it: its code and expiration date, in date order. A date already past is still listed, so compare it with today. Absent when FDA lists none, and when the products it is read from don’t share one set."
          }
        },
        "required": [
          "application",
          "te_codes"
        ],
        "type": "object"
      },
      "PackageQuantity": {
        "additionalProperties": false,
        "properties": {
          "value": {
            "type": "string",
            "description": "The amount, such as 60 or 3."
          },
          "unit": {
            "type": "string",
            "description": "The unit, such as TABLET or mL."
          }
        },
        "required": [
          "unit",
          "value"
        ],
        "type": "object"
      },
      "ProductLabel": {
        "additionalProperties": false,
        "properties": {
          "set_id": {
            "type": "string",
            "description": "The label’s set ID."
          },
          "version": {
            "type": "integer",
            "description": "The label’s SPL version."
          },
          "effective_date": {
            "format": "date",
            "type": "string",
            "description": "The label’s effective date."
          },
          "title": {
            "type": "string",
            "description": "The label’s title."
          },
          "boxed_warning": {
            "type": "boolean",
            "description": "True when the label carries a boxed warning."
          },
          "labeler": {
            "type": "string",
            "description": "The labeler named on the label."
          },
          "repackaged": {
            "type": "boolean",
            "description": "True when the label names another company’s source NDC, or its labeler declares a repack or relabel operation for it."
          }
        },
        "required": [
          "set_id"
        ],
        "type": "object"
      },
      "ProductPackage": {
        "additionalProperties": false,
        "properties": {
          "package_ndc": {
            "type": "string",
            "description": "The package NDC."
          },
          "description": {
            "type": "string",
            "description": "A DailyMed-style description, such as 60 TABLET in 1 BOTTLE."
          },
          "container": {
            "type": "string",
            "description": "The outer container."
          },
          "quantity": {
            "$ref": "#/components/schemas/PackageQuantity",
            "description": "How much this package level holds."
          },
          "inside": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "description": "The package NDCs this package sits inside. Absent for an outermost package."
          },
          "listing_status": {
            "enum": [
              "active_listing",
              "ended",
              "future",
              "not_fda_listed",
              "unknown"
            ],
            "type": "string",
            "description": "The package’s own status, from its marketing records alone. A package with none is unknown."
          },
          "billing_unit": {
            "enum": [
              "EA",
              "GM",
              "ML"
            ],
            "type": "string",
            "description": "The package’s NCPDP billing unit: EA, ML or GM."
          }
        },
        "required": [
          "listing_status"
        ],
        "type": "object"
      },
      "ProductProfile": {
        "additionalProperties": false,
        "properties": {
          "product_ndc": {
            "type": "string",
            "description": "The product NDC, the product’s identifier."
          },
          "product_name": {
            "type": "string",
            "description": "The proprietary name, or the generic name when the label has none."
          },
          "generic_name": {
            "type": "string",
            "description": "The generic name on the label."
          },
          "brand_generic": {
            "enum": [
              "brand",
              "generic"
            ],
            "type": "string",
            "description": "brand, or generic for an ANDA or an NDA authorized generic."
          },
          "labeler": {
            "type": "string",
            "description": "The labeler named on the label."
          },
          "dosage_form": {
            "$ref": "#/components/schemas/CodedName",
            "description": "The SPL dosage form, with its code."
          },
          "routes": {
            "items": {
              "$ref": "#/components/schemas/CodedName"
            },
            "type": "array",
            "description": "The SPL routes of administration, with their codes."
          },
          "legal_status": {
            "enum": [
              "otc",
              "prescription"
            ],
            "type": "string",
            "description": "prescription or otc, for document types that state one."
          },
          "product_type": {
            "enum": [
              "allergenic",
              "cellular_therapy",
              "plasma_derivative",
              "vaccine"
            ],
            "type": "string",
            "description": "vaccine, plasma_derivative, allergenic (an allergenic extract) or cellular_therapy; absent for an ordinary drug label."
          },
          "dea_schedule": {
            "enum": [
              "CI",
              "CII",
              "CIII",
              "CIV",
              "CV"
            ],
            "type": "string",
            "description": "FDA’s NDC Directory schedule for this product NDC, else the label’s own (the most restrictive over a kit’s parts)."
          },
          "marketing_category": {
            "type": "string",
            "description": "The marketing category on the label."
          },
          "shortage_import": {
            "const": true,
            "type": "boolean",
            "description": "True when FDA lists the product as an unapproved drug for use in a drug shortage: imported or marketed only while the shortage lasts."
          },
          "application_numbers": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "description": "The NDA, ANDA or BLA numbers the label cites."
          },
          "is_generic": {
            "const": true,
            "type": "boolean",
            "description": "True for an ANDA product."
          },
          "is_combination": {
            "type": "boolean",
            "description": "True when the product has more than one active ingredient."
          },
          "ingredients": {
            "items": {
              "$ref": "#/components/schemas/ProfileIngredient"
            },
            "type": "array",
            "description": "Every ingredient with its role and strength, inactive ones included."
          },
          "parts": {
            "items": {
              "$ref": "#/components/schemas/KitPart"
            },
            "type": "array",
            "description": "A kit’s parts, each with its own ingredients."
          },
          "packages": {
            "items": {
              "$ref": "#/components/schemas/ProductPackage"
            },
            "type": "array",
            "description": "Every package of the product, each with its own listing status."
          },
          "labels": {
            "items": {
              "$ref": "#/components/schemas/ProductLabel"
            },
            "minItems": 1,
            "type": "array",
            "description": "Every label that lists the product, with version, effective date and boxed-warning flag."
          },
          "listing_status": {
            "enum": [
              "active_listing",
              "ended",
              "future",
              "not_fda_listed",
              "unknown"
            ],
            "type": "string",
            "description": "active_listing, ended, future, unknown or not_fda_listed, judged at as_of from the product’s own and its packages’ SPL marketing records. unknown means the SPL does not settle it."
          },
          "as_of": {
            "format": "date",
            "type": "string",
            "description": "The date the listing status applies to."
          },
          "excipients": {
            "$ref": "#/components/schemas/Excipients",
            "description": "The excipient categories the product has, each with the ingredients behind it."
          },
          "rating": {
            "$ref": "#/components/schemas/Rating",
            "description": "Which FDA book rates the product and its facts there."
          },
          "safety": {
            "$ref": "#/components/schemas/ProductSafety",
            "description": "The product’s FDA recalls and its shortages whose national status is Current, matched as INVENTORY-CHECK matches them."
          },
          "rems": {
            "$ref": "#/components/schemas/RemsCoverage",
            "description": "The current REMS programs covering the product’s own FDA applications."
          },
          "safety_label_changes": {
            "$ref": "#/components/schemas/RecentSafetyLabelChanges",
            "description": "FDA safety labeling changes of the last year to the product’s own applications."
          }
        },
        "required": [
          "application_numbers",
          "listing_status",
          "product_name",
          "product_ndc",
          "routes"
        ],
        "type": "object"
      },
      "ProductSafety": {
        "additionalProperties": false,
        "properties": {
          "status": {
            "enum": [
              "checked",
              "unavailable"
            ],
            "type": "string",
            "description": "checked when recalls and shortages were consulted; unavailable when they were not."
          },
          "recalls": {
            "items": {
              "$ref": "#/components/schemas/InventoryRecall"
            },
            "type": "array",
            "description": "The product’s FDA recalls, at most 25."
          },
          "recalls_more": {
            "const": true,
            "type": "boolean",
            "description": "True when more than 25 recalls match."
          },
          "shortages": {
            "items": {
              "$ref": "#/components/schemas/InventoryShortage"
            },
            "type": "array",
            "description": "The product’s FDA shortage presentations that are current or to be discontinued, each with its status, at most 25."
          },
          "shortages_more": {
            "const": true,
            "type": "boolean",
            "description": "True when more than 25 shortages match."
          }
        },
        "required": [
          "status"
        ],
        "type": "object"
      },
      "ProductSummary": {
        "additionalProperties": false,
        "properties": {
          "product_ndc": {
            "type": "string",
            "description": "The product NDC."
          },
          "product_name": {
            "type": "string",
            "description": "The product’s name."
          },
          "labeler": {
            "type": "string",
            "description": "The labeler."
          },
          "dosage_form": {
            "type": "string",
            "description": "The dosage form."
          },
          "listing_status": {
            "enum": [
              "active_listing",
              "ended",
              "future",
              "not_fda_listed",
              "unknown"
            ],
            "type": "string",
            "description": "active_listing, ended, future, unknown, or not_fda_listed when FDA’s NDC Directory does not list the product."
          },
          "set_ids": {
            "items": {
              "type": "string"
            },
            "minItems": 1,
            "type": "array",
            "description": "The set IDs of the labels that list the product."
          }
        },
        "required": [
          "listing_status",
          "product_name",
          "product_ndc",
          "set_ids"
        ],
        "type": "object"
      },
      "ProfileIngredient": {
        "additionalProperties": false,
        "properties": {
          "name": {
            "type": "string",
            "description": "The ingredient’s name."
          },
          "unii": {
            "type": "string",
            "description": "The ingredient’s UNII."
          },
          "role": {
            "enum": [
              "active",
              "inactive",
              "other"
            ],
            "type": "string",
            "description": "active, inactive or other."
          },
          "strength": {
            "$ref": "#/components/schemas/Strength",
            "description": "The strength, with its unit and denominator."
          },
          "strength_basis": {
            "enum": [
              "active_ingredient",
              "active_moiety",
              "reference_substance"
            ],
            "type": "string",
            "description": "What the strength is measured for: the ingredient, its active moiety or a reference substance."
          },
          "classes": {
            "items": {
              "$ref": "#/components/schemas/DrugClass"
            },
            "type": "array",
            "description": "FDA’s pharmacologic classes for an active ingredient, by its active moiety."
          }
        },
        "required": [
          "role"
        ],
        "type": "object"
      },
      "ProfileSafetyLabelChange": {
        "additionalProperties": false,
        "properties": {
          "change_id": {
            "type": "string",
            "description": "The change’s ID. Pass it to SAFETY-LABEL-CHANGE-SEARCH as change_id for the full text."
          },
          "changed_date": {
            "type": "string",
            "description": "The date of the change."
          },
          "application_number": {
            "type": "string",
            "description": "The FDA application number changed."
          },
          "sections": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "description": "The changed sections’ titles."
          }
        },
        "required": [
          "application_number",
          "change_id",
          "changed_date",
          "sections"
        ],
        "type": "object"
      },
      "PurpleBookFacts": {
        "additionalProperties": false,
        "properties": {
          "bla": {
            "type": "string",
            "description": "The BLA number."
          },
          "designation": {
            "enum": [
              "biosimilar",
              "interchangeable",
              "reference"
            ],
            "type": "string",
            "description": "reference, biosimilar or interchangeable."
          },
          "licensure": {
            "type": "string",
            "description": "The licensure status FDA lists."
          },
          "reference_product": {
            "$ref": "#/components/schemas/ReferenceProduct",
            "description": "The reference product FDA names."
          },
          "exclusivity_expiration": {
            "type": "string",
            "description": "The exclusivity expiration date FDA publishes."
          },
          "first_interchangeable_exclusivity": {
            "type": "string",
            "description": "The first interchangeable exclusivity date FDA publishes."
          },
          "reference_product_exclusivity": {
            "type": "string",
            "description": "The reference product exclusivity date FDA publishes."
          }
        },
        "required": [
          "bla"
        ],
        "type": "object"
      },
      "Rating": {
        "additionalProperties": false,
        "properties": {
          "book": {
            "enum": [
              "orange_book",
              "purple_book"
            ],
            "type": "string",
            "description": "orange_book or purple_book, from the product’s own application."
          },
          "rated": {
            "type": "boolean",
            "description": "True when FDA rates the product."
          },
          "reason": {
            "type": "string",
            "description": "Why the product is not rated."
          },
          "orange_book": {
            "$ref": "#/components/schemas/OrangeBookFacts",
            "description": "The Orange Book facts for an NDA or ANDA product."
          },
          "purple_book": {
            "$ref": "#/components/schemas/PurpleBookFacts",
            "description": "The Purple Book facts for a BLA product."
          }
        },
        "required": [
          "rated"
        ],
        "type": "object"
      },
      "RecentSafetyLabelChanges": {
        "additionalProperties": false,
        "properties": {
          "status": {
            "enum": [
              "checked",
              "unavailable"
            ],
            "type": "string",
            "description": "checked, or unavailable when safety labeling change data isn’t part of this answer."
          },
          "since": {
            "type": "string",
            "description": "The first day covered: one year before the data date."
          },
          "changes": {
            "items": {
              "$ref": "#/components/schemas/ProfileSafetyLabelChange"
            },
            "type": "array",
            "description": "The changes since then to the applications, newest first, at most 25."
          },
          "more": {
            "const": true,
            "type": "boolean",
            "description": "True when more changes fall in the window."
          }
        },
        "required": [
          "status"
        ],
        "type": "object"
      },
      "ReferenceProduct": {
        "additionalProperties": false,
        "properties": {
          "name": {
            "type": "string",
            "description": "The reference product FDA names."
          },
          "bla": {
            "type": "string",
            "description": "The reference product’s BLA number."
          },
          "bla_ambiguous": {
            "type": "boolean",
            "description": "True when more than one BLA carries the name."
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "RemsCoverage": {
        "additionalProperties": false,
        "properties": {
          "status": {
            "enum": [
              "checked",
              "unavailable"
            ],
            "type": "string",
            "description": "checked, or unavailable when REMS data isn’t part of this answer."
          },
          "programs": {
            "items": {
              "$ref": "#/components/schemas/RemsProfileProgram"
            },
            "type": "array",
            "description": "The current REMS programs covering the applications, possibly none."
          }
        },
        "required": [
          "status"
        ],
        "type": "object"
      },
      "RemsProfileProgram": {
        "additionalProperties": false,
        "properties": {
          "rems_id": {
            "type": "string",
            "description": "The program’s identifier, for REMS-LOOKUP."
          },
          "name": {
            "type": "string",
            "description": "The program’s name."
          },
          "requirements": {
            "items": {
              "enum": [
                "communication_plan",
                "dispenser_certification",
                "elements_to_assure_safe_use",
                "implementation_system",
                "medication_guide",
                "patient_enrollment",
                "prescriber_certification",
                "prescriber_training"
              ],
              "type": "string"
            },
            "type": "array",
            "description": "FDA’s requirement flags on the program’s latest version."
          },
          "application_numbers": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "description": "The FDA application numbers here that the program covers."
          }
        },
        "required": [
          "application_numbers",
          "name",
          "rems_id",
          "requirements"
        ],
        "type": "object"
      },
      "SearchHint": {
        "additionalProperties": false,
        "properties": {
          "endpoint_id": {
            "const": "MARKETED-PRODUCT-SEARCH",
            "type": "string",
            "description": "The operation to call."
          },
          "filter": {
            "const": "contains_substance",
            "type": "string",
            "description": "The filter to send."
          },
          "value": {
            "type": "string",
            "description": "The value to send."
          }
        },
        "required": [
          "endpoint_id",
          "filter",
          "value"
        ],
        "type": "object"
      },
      "Strength": {
        "additionalProperties": false,
        "properties": {
          "value": {
            "type": "string",
            "description": "The strength value, as a string to keep the decimal exact."
          },
          "unit": {
            "type": "string",
            "description": "The unit."
          },
          "denominator_value": {
            "type": "string",
            "description": "The denominator value, for a strength per volume or per unit."
          },
          "denominator_unit": {
            "type": "string",
            "description": "The denominator unit."
          }
        },
        "required": [
          "value"
        ],
        "type": "object"
      },
      "CodeLookupData": {
        "additionalProperties": false,
        "properties": {
          "code": {
            "type": "string",
            "description": "The code exactly as you sent it, untrimmed."
          },
          "code_type": {
            "enum": [
              "application",
              "barcode",
              "ndc",
              "rxcui",
              "set_id",
              "unii"
            ],
            "type": "string",
            "description": "What the code is: ndc, barcode, rxcui, unii, set_id or application."
          },
          "outcome": {
            "enum": [
              "drug",
              "excipient",
              "ingredient_ndc",
              "ingredient_of",
              "product",
              "products",
              "redirected",
              "rxnorm_ndc"
            ],
            "type": "string",
            "description": "product: one product. products: several. drug: an ingredient RxCUI or active UNII. A brand RxCUI whose branded drugs have products answers products, with its ingredient drug. ingredient_of: a brand or product RxCUI no listed product carries, answered with its ingredient drug. rxnorm_ndc: an NDC DailyMed no longer lists but RxNorm does. ingredient_ndc: an NDC neither lists, tied to an ingredient (not a product) by Entropy’s reference data. excipient: a UNII used only as an inactive ingredient. redirected: a retired RxCUI with one successor, answered with the successor. A code that names nothing, several things, a retired RxCUI with no single successor, or something that is not a drug is an error (404, 409 with candidates, 410, 422), not an outcome."
          },
          "product": {
            "$ref": "#/components/schemas/ProductProfile",
            "description": "The product’s full profile when the code names one product: identity, ingredients and strengths, packages, labels, listing status, excipient flags, FDA rating, recalls, shortages, REMS and recent safety labeling changes."
          },
          "package": {
            "$ref": "#/components/schemas/ProductPackage",
            "description": "The package the code names, when it is a package NDC, or a GTIN or scan that names one package of the product. Absent for a product NDC."
          },
          "barcode": {
            "$ref": "#/components/schemas/BarcodeRead",
            "description": "What the scan carried: GTIN, lot, serial and expiry, and whether the package is the scanned one or the one its NDC names. A ]C0 scan carries the NDC alone, so only the package scope is present. An expiry day of 00 means the last day of that month, and the two-digit year falls within 49 years before to 50 years after the current year."
          },
          "drug": {
            "$ref": "#/components/schemas/DrugLookupResult",
            "description": "The drug result as DRUG-LOOKUP returns it, without the profile. Call DRUG-LOOKUP for the profile."
          },
          "rxnorm": {
            "$ref": "#/components/schemas/RxNormConcept",
            "description": "For an NDC DailyMed no longer lists but RxNorm does: the RxNorm concept (or RxCUI) it names."
          },
          "ingredient_ndc": {
            "$ref": "#/components/schemas/IngredientNdc",
            "description": "For an NDC neither DailyMed nor RxNorm lists: the ingredient it belongs to. It names no product or package, so strength, form, labeler and package are not known."
          },
          "products": {
            "items": {
              "$ref": "#/components/schemas/ProductSummary"
            },
            "type": "array",
            "description": "Product summaries when the code names several products. For an RxCUI, set ID or application number, one page of them: FDA-listed products first, makers before repackagers. For a shared package NDC, up to 25."
          },
          "more_products": {
            "type": "boolean",
            "description": "True when more products than those shown carry the code. For a paged list, meta.page.next_cursor gets the next page."
          },
          "search": {
            "$ref": "#/components/schemas/SearchHint",
            "description": "Where to ask instead: the MARKETED-PRODUCT-SEARCH filter and value that list the products containing an excipient."
          }
        },
        "required": [
          "code",
          "code_type",
          "outcome"
        ],
        "type": "object"
      },
      "CodeDrug": {
        "additionalProperties": false,
        "properties": {
          "rxcui": {
            "pattern": "^[1-9][0-9]{0,15}$",
            "type": "string",
            "description": "The drug’s RxCUI."
          },
          "preferred_name": {
            "type": "string",
            "description": "The drug’s RxNorm preferred name."
          }
        },
        "required": [
          "preferred_name",
          "rxcui"
        ],
        "type": "object"
      },
      "CodeResolution": {
        "additionalProperties": false,
        "properties": {
          "code": {
            "type": "string",
            "description": "The code exactly as you sent it, untrimmed."
          },
          "code_type": {
            "enum": [
              "application",
              "barcode",
              "ndc",
              "rxcui",
              "set_id",
              "unii"
            ],
            "type": "string",
            "description": "What the code is: ndc, barcode, rxcui, unii, set_id or application."
          },
          "outcome": {
            "anyOf": [
              {
                "enum": [
                  "ambiguous",
                  "drug",
                  "excipient",
                  "historical",
                  "ingredient_ndc",
                  "ingredient_of",
                  "not_found",
                  "product",
                  "products",
                  "redirected",
                  "rxnorm_ndc",
                  "unresolved",
                  "unsupported"
                ],
                "type": "string"
              },
              {
                "enum": [
                  "unavailable",
                  "unrecognized"
                ],
                "type": "string"
              }
            ],
            "description": "What the code names, as CODE-LOOKUP reports it, plus ambiguous, not_found, unrecognized, unavailable, historical (a retired RxCUI with no single successor), unresolved (an RxCUI or UNII with no drug) and unsupported (an RxCUI that is not a drug) in place of an error. A package NDC that several products carry is products."
          },
          "reason": {
            "enum": [
              "package_matches_exceed_limit",
              "product_labels_exceed_limit",
              "product_list_exceeds_limit"
            ],
            "type": "string",
            "description": "Why a row is unavailable: package_matches_exceed_limit (a package NDC in more than 1000 catalog rows), product_labels_exceed_limit (a product NDC on more than 64 labels) or product_list_exceeds_limit (the batch’s product lists passed 5,000 catalog rows; send that code alone). Only that row is affected."
          },
          "product": {
            "$ref": "#/components/schemas/ProductSummary",
            "description": "The product summary when the code names one product."
          },
          "package_ndc": {
            "type": "string",
            "description": "The package NDC when the code names a package."
          },
          "drug": {
            "$ref": "#/components/schemas/CodeDrug",
            "description": "The drug’s RxCUI and preferred name when the code names a drug. A redirected row always has it: the successor."
          },
          "rxcui": {
            "pattern": "^[1-9][0-9]{0,15}$",
            "type": "string",
            "description": "For an NDC DailyMed no longer lists but RxNorm does: the RxCUI it names."
          },
          "ingredient_ndc": {
            "$ref": "#/components/schemas/IngredientNdc",
            "description": "For an NDC neither DailyMed nor RxNorm lists: the ingredient it belongs to, not a product."
          },
          "product_ndcs": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "description": "The product NDCs when the code names several products, or the products an ambiguous code could be, in ascending order, at most 25."
          },
          "more_products": {
            "type": "boolean",
            "description": "True when more products than those listed may carry the code."
          },
          "candidate_rxcuis": {
            "items": {
              "pattern": "^[1-9][0-9]{0,15}$",
              "type": "string"
            },
            "type": "array",
            "description": "The RxCUIs to choose from when the code is ambiguous or retired with no single successor, including a code whose layouts reach different RxNorm concepts or clinical profiles. A redirected row lists its one successor. An ambiguous row always has this or product_ndcs, never both."
          }
        },
        "required": [
          "code",
          "outcome"
        ],
        "type": "object"
      },
      "CodeResolveData": {
        "items": {
          "$ref": "#/components/schemas/CodeResolution"
        },
        "type": "array"
      },
      "CodeResolveRequest": {
        "additionalProperties": false,
        "properties": {
          "codes": {
            "items": {
              "maxLength": 512,
              "minLength": 1,
              "type": "string"
            },
            "maxItems": 100,
            "minItems": 1,
            "type": "array",
            "description": "1 to 100 codes, each any code CODE-LOOKUP accepts. Results keep their order and duplicates. An empty list, an empty string or an item over 512 characters is 400; more than 100 is 413. Any other code gets its own row."
          }
        },
        "required": [
          "codes"
        ],
        "type": "object"
      },
      "DrugMatchedName": {
        "additionalProperties": false,
        "properties": {
          "field": {
            "enum": [
              "brand_name",
              "official_name",
              "product_name",
              "substance_name"
            ],
            "type": "string",
            "description": "brand_name, official_name, product_name or substance_name."
          },
          "whole": {
            "type": "boolean",
            "description": "True when q matched the whole name."
          },
          "text": {
            "type": "string",
            "description": "The matched name."
          }
        },
        "required": [
          "field",
          "text",
          "whole"
        ],
        "type": "object"
      },
      "DrugSearchHit": {
        "additionalProperties": false,
        "properties": {
          "rxcui": {
            "pattern": "^[1-9][0-9]{0,15}$",
            "type": "string",
            "description": "The drug’s RxCUI."
          },
          "concept_type": {
            "enum": [
              "IN",
              "MIN",
              "PIN"
            ],
            "type": "string",
            "description": "IN for one ingredient, PIN for a precise ingredient, MIN for a combination."
          },
          "preferred_name": {
            "type": "string",
            "description": "The RxNorm preferred name."
          },
          "ingredients": {
            "items": {
              "$ref": "#/components/schemas/DrugIngredient"
            },
            "minItems": 1,
            "type": "array",
            "description": "The exact ingredient members, each with its RxCUI and type."
          },
          "brand_names": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "description": "Brand names of current products, most common first, at most ten."
          },
          "more_brand_names": {
            "type": "boolean",
            "description": "True when the drug has more brand names than the ten shown."
          },
          "dosage_forms": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "description": "The dosage forms of the drug’s current products."
          },
          "has_products": {
            "type": "boolean",
            "description": "False for an RxNorm-only drug with no DailyMed product; these come after the others."
          },
          "matched_name": {
            "$ref": "#/components/schemas/DrugMatchedName",
            "description": "Which of the drug’s names q matched, whether whole, and its text."
          }
        },
        "required": [
          "concept_type",
          "has_products",
          "ingredients",
          "preferred_name",
          "rxcui"
        ],
        "type": "object"
      },
      "DrugSearchData": {
        "items": {
          "$ref": "#/components/schemas/DrugSearchHit"
        },
        "type": "array"
      },
      "DrugBrandName": {
        "additionalProperties": false,
        "properties": {
          "name": {
            "type": "string",
            "description": "The proprietary name."
          },
          "brand_generic": {
            "enum": [
              "bla",
              "brand",
              "generic"
            ],
            "type": "string",
            "description": "brand, generic, or bla for a biologic."
          },
          "listing_status": {
            "enum": [
              "active_listing",
              "unknown"
            ],
            "type": "string",
            "description": "active_listing, or unknown when it can’t be determined."
          },
          "kit": {
            "type": "boolean",
            "description": "True when every product with this name is a kit that holds this drug as one of its parts."
          }
        },
        "required": [
          "listing_status",
          "name"
        ],
        "type": "object"
      },
      "DrugFormGroup": {
        "additionalProperties": false,
        "properties": {
          "group_key": {
            "type": "string",
            "description": "The key MARKETED-PRODUCT-SEARCH’s drug_group filter takes. It is fg_ and 32 lowercase hex digits. A drug’s groups are ordered by this key as text, which carries no meaning."
          },
          "dosage_form": {
            "$ref": "#/components/schemas/CodedName",
            "description": "The SPL dosage form, with its code."
          },
          "kit": {
            "type": "boolean",
            "description": "True for kits that hold this drug as a part; the form, routes and strengths are that part’s."
          },
          "routes": {
            "items": {
              "$ref": "#/components/schemas/CodedName"
            },
            "type": "array",
            "description": "The SPL routes, with their codes."
          },
          "strengths": {
            "items": {
              "$ref": "#/components/schemas/DrugGroupStrength"
            },
            "type": "array",
            "description": "The active ingredients with their strengths."
          },
          "product_count": {
            "type": "integer",
            "description": "How many products are in the group."
          },
          "active_count": {
            "type": "integer",
            "description": "How many are actively listed."
          },
          "unknown_count": {
            "type": "integer",
            "description": "How many have an unknown listing status."
          },
          "brand_names": {
            "items": {
              "$ref": "#/components/schemas/DrugBrandName"
            },
            "type": "array",
            "description": "Up to ten proprietary names in the group."
          },
          "more_brand_names": {
            "type": "boolean",
            "description": "True when the group has more brand names than the ten shown."
          }
        },
        "required": [
          "active_count",
          "brand_names",
          "group_key",
          "product_count",
          "routes",
          "strengths",
          "unknown_count"
        ],
        "type": "object"
      },
      "DrugGroupStrength": {
        "additionalProperties": false,
        "properties": {
          "name": {
            "type": "string",
            "description": "The ingredient’s name."
          },
          "unii": {
            "type": "string",
            "description": "The ingredient’s UNII."
          },
          "strength": {
            "$ref": "#/components/schemas/Strength",
            "description": "The strength, with its unit and denominator."
          }
        },
        "type": "object"
      },
      "DrugMechanism": {
        "additionalProperties": false,
        "properties": {
          "text": {
            "type": "string",
            "description": "The section’s text."
          },
          "basis": {
            "enum": [
              "reference_listed_drug",
              "reference_product",
              "reference_standard"
            ],
            "type": "string",
            "description": "Whose label it is: reference_listed_drug, or reference_standard when FDA names no reference listed drug."
          },
          "application_number": {
            "type": "string",
            "description": "The reference product’s FDA application number."
          },
          "set_id": {
            "type": "string",
            "description": "The set ID of the label the text comes from."
          }
        },
        "required": [
          "application_number",
          "basis",
          "set_id",
          "text"
        ],
        "type": "object"
      },
      "DrugProfile": {
        "additionalProperties": false,
        "properties": {
          "rxcui": {
            "pattern": "^[1-9][0-9]{0,15}$",
            "type": "string",
            "description": "The drug the facts belong to; a salt returns its parent drug’s profile."
          },
          "product_count": {
            "type": "integer",
            "description": "How many products contain the drug, by product NDC."
          },
          "active_count": {
            "type": "integer",
            "description": "How many are actively listed."
          },
          "unknown_count": {
            "type": "integer",
            "description": "How many have an unknown listing status."
          },
          "generic_available": {
            "enum": [
              "no",
              "unknown",
              "yes"
            ],
            "type": "string",
            "description": "About FDA approval and the market, not the product counts. yes when FDA lists an ANDA or authorized generic as active (a firm can list one before it ships it), or when FDA’s Orange Book shows an approved ANDA or an A-rated product that is not the reference listed drug, even if none is on the market now. no when none is listed. unknown when neither settles it."
          },
          "biosimilar_available": {
            "enum": [
              "no",
              "unknown",
              "yes"
            ],
            "type": "string",
            "description": "For a biologic: yes when a marketed biologic is a biosimilar or interchangeable biosimilar on FDA’s Purple Book, or is sold under the nonproprietary name alone; no when none is; unknown when it can’t be determined."
          },
          "rx_otc": {
            "items": {
              "enum": [
                "otc",
                "rx"
              ],
              "type": "string"
            },
            "type": "array",
            "description": "rx, otc or both, across the active and unknown products."
          },
          "dea_schedules": {
            "items": {
              "enum": [
                "CI",
                "CII",
                "CIII",
                "CIV",
                "CV",
                "unrecognized"
              ],
              "type": "string"
            },
            "type": "array",
            "description": "The DEA schedules across the active and unknown products. unrecognized marks a schedule code the API does not know."
          },
          "brand_names": {
            "items": {
              "$ref": "#/components/schemas/DrugBrandName"
            },
            "type": "array",
            "description": "Every proprietary name among the active and unknown products, with its brand or generic flag."
          },
          "groups": {
            "items": {
              "$ref": "#/components/schemas/DrugFormGroup"
            },
            "type": "array",
            "description": "The products grouped by dosage form, routes and strengths, each with its counts and brand names."
          },
          "application_numbers": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "description": "Every product’s FDA application number."
          },
          "salts": {
            "items": {
              "$ref": "#/components/schemas/DrugSalt"
            },
            "type": "array",
            "description": "The salt and ester forms grouped under the drug."
          },
          "substances": {
            "items": {
              "$ref": "#/components/schemas/DrugSubstance"
            },
            "type": "array",
            "description": "Each ingredient’s active-moiety substance, with its FDA classes and names."
          },
          "mechanism_of_action": {
            "$ref": "#/components/schemas/DrugMechanism",
            "description": "Label section 12.1 from FDA’s reference product, with include=mechanism_of_action; absent when no reference product’s label has it."
          },
          "rems": {
            "$ref": "#/components/schemas/RemsCoverage",
            "description": "The current REMS programs covering the drug’s FDA applications, each with the ones it covers."
          },
          "safety_label_changes": {
            "$ref": "#/components/schemas/RecentSafetyLabelChanges",
            "description": "FDA safety labeling changes of the last year to the drug’s applications."
          }
        },
        "required": [
          "active_count",
          "application_numbers",
          "brand_names",
          "dea_schedules",
          "generic_available",
          "groups",
          "product_count",
          "rems",
          "rx_otc",
          "rxcui",
          "safety_label_changes",
          "salts",
          "substances",
          "unknown_count"
        ],
        "type": "object"
      },
      "DrugSalt": {
        "additionalProperties": false,
        "properties": {
          "rxcui": {
            "pattern": "^[1-9][0-9]{0,15}$",
            "type": "string",
            "description": "The salt’s RxCUI."
          },
          "preferred_name": {
            "type": "string",
            "description": "The salt’s RxNorm preferred name."
          }
        },
        "required": [
          "preferred_name",
          "rxcui"
        ],
        "type": "object"
      },
      "DrugSubstance": {
        "additionalProperties": false,
        "properties": {
          "rxcui": {
            "pattern": "^[1-9][0-9]{0,15}$",
            "type": "string",
            "description": "The ingredient the substance belongs to."
          },
          "unii": {
            "type": "string",
            "description": "The substance’s UNII."
          },
          "classes": {
            "items": {
              "$ref": "#/components/schemas/DrugClass"
            },
            "type": "array",
            "description": "FDA’s pharmacologic classes for the substance, with MeSH chemical-structure classes."
          },
          "names": {
            "items": {
              "$ref": "#/components/schemas/DrugSubstanceName"
            },
            "type": "array",
            "description": "FDA’s preferred, official and common names for the substance."
          }
        },
        "required": [
          "classes",
          "names",
          "rxcui",
          "unii"
        ],
        "type": "object"
      },
      "DrugSubstanceName": {
        "additionalProperties": false,
        "properties": {
          "name": {
            "type": "string",
            "description": "The substance name."
          },
          "type": {
            "enum": [
              "common",
              "official",
              "preferred"
            ],
            "type": "string",
            "description": "preferred, official or common."
          }
        },
        "required": [
          "name",
          "type"
        ],
        "type": "object"
      },
      "DrugLookupData": {
        "additionalProperties": false,
        "properties": {
          "requested_rxcui": {
            "pattern": "^[1-9][0-9]{0,15}$",
            "type": "string",
            "description": "The RxCUI you asked for."
          },
          "status": {
            "enum": [
              "ingredient_of",
              "matched",
              "redirected"
            ],
            "type": "string",
            "description": "matched: the RxCUI is the drug. ingredient_of: a brand or product RxCUI, answered with its ingredient drug. redirected: a retired RxCUI with one successor, answered with the successor. Any other RxCUI is an error, not a status: 404 when RxNorm does not know it (reason unresolved when its history does not cover it), 409 with candidates when it names several drugs, 410 when it is retired with no single successor, 422 when it is not a drug."
          },
          "drug": {
            "$ref": "#/components/schemas/Drug",
            "description": "The drug."
          },
          "candidate_rxcuis": {
            "items": {
              "pattern": "^[1-9][0-9]{0,15}$",
              "type": "string"
            },
            "type": "array",
            "description": "The successor RxCUI when the status is redirected."
          },
          "profile": {
            "$ref": "#/components/schemas/DrugProfile",
            "description": "What is marketed for the drug, its salts and its substances; a salt returns its parent drug’s profile."
          }
        },
        "required": [
          "drug",
          "profile",
          "requested_rxcui",
          "status"
        ],
        "type": "object"
      },
      "Alternative": {
        "additionalProperties": false,
        "properties": {
          "product": {
            "$ref": "#/components/schemas/ProductSummary",
            "description": "The alternative product."
          },
          "rating": {
            "$ref": "#/components/schemas/Rating",
            "description": "The alternative’s FDA rating."
          },
          "interchangeable": {
            "type": "boolean",
            "description": "True where an FDA rating establishes it, false where FDA’s rating says no, absent otherwise."
          },
          "outcome": {
            "enum": [
              "biosimilar_not_interchangeable",
              "biosimilars_of_one_reference",
              "different_books",
              "different_formulation",
              "different_te_group",
              "equivalent",
              "interchangeable_biologic",
              "not_equivalent_rating",
              "not_evaluated",
              "not_rated",
              "not_related",
              "presentation_differs",
              "presentation_unverified",
              "reference_ambiguous",
              "same_biologic_license",
              "same_product"
            ],
            "type": "string",
            "description": "Why the product is or is not interchangeable, as INTERCHANGEABILITY-CHECK names it."
          },
          "reason": {
            "type": "string",
            "description": "The detail behind outcome, such as shared_A_rated_group."
          },
          "is_reference": {
            "type": "boolean",
            "description": "True for the Orange Book reference listed drug or the Purple Book reference product."
          }
        },
        "required": [
          "is_reference",
          "outcome",
          "product",
          "rating"
        ],
        "type": "object"
      },
      "RatedProduct": {
        "additionalProperties": false,
        "properties": {
          "product": {
            "$ref": "#/components/schemas/ProductSummary",
            "description": "The product summary."
          },
          "rating": {
            "$ref": "#/components/schemas/Rating",
            "description": "Which FDA book rates the product and its facts there."
          }
        },
        "required": [
          "product",
          "rating"
        ],
        "type": "object"
      },
      "InterchangeabilityAlternativesData": {
        "additionalProperties": false,
        "properties": {
          "subject": {
            "$ref": "#/components/schemas/RatedProduct",
            "description": "The product you asked about, with its FDA rating."
          },
          "alternatives": {
            "items": {
              "$ref": "#/components/schemas/Alternative"
            },
            "type": "array",
            "description": "The products FDA rates interchangeable with it, each with its rating and outcome."
          }
        },
        "required": [
          "alternatives",
          "subject"
        ],
        "type": "object"
      },
      "InterchangeabilityCheckData": {
        "additionalProperties": false,
        "properties": {
          "interchangeable": {
            "type": "boolean",
            "description": "True where an FDA rating establishes it, false where FDA’s rating says no, absent where FDA rates no such pair."
          },
          "outcome": {
            "enum": [
              "biosimilar_not_interchangeable",
              "biosimilars_of_one_reference",
              "different_books",
              "different_formulation",
              "different_te_group",
              "equivalent",
              "interchangeable_biologic",
              "not_equivalent_rating",
              "not_evaluated",
              "not_rated",
              "not_related",
              "presentation_differs",
              "presentation_unverified",
              "reference_ambiguous",
              "same_biologic_license",
              "same_product"
            ],
            "type": "string",
            "description": "Why: equivalent or interchangeable_biologic when FDA rates the pair; same_product for one product sent twice; otherwise the reason FDA rates no such pair."
          },
          "reason": {
            "type": "string",
            "description": "The detail behind outcome, such as no_application or different_strength. When both products are unrated for different reasons, the one that sorts first."
          },
          "subject": {
            "$ref": "#/components/schemas/RatedProduct",
            "description": "The first product, with its FDA rating."
          },
          "comparator": {
            "$ref": "#/components/schemas/RatedProduct",
            "description": "The second product, with its FDA rating."
          }
        },
        "required": [
          "comparator",
          "outcome",
          "subject"
        ],
        "type": "object"
      },
      "InterchangeabilityCheckRequest": {
        "additionalProperties": false,
        "properties": {
          "code": {
            "maxLength": 512,
            "minLength": 1,
            "type": "string",
            "description": "Any code CODE-LOOKUP reads as one product. A code naming several products or a Drug is 409 with candidates."
          },
          "compare_with": {
            "maxLength": 512,
            "minLength": 1,
            "type": "string",
            "description": "The other product’s code, read the same way."
          }
        },
        "required": [
          "code",
          "compare_with"
        ],
        "type": "object"
      },
      "LabelMatchedName": {
        "additionalProperties": false,
        "properties": {
          "field": {
            "enum": [
              "generic_name",
              "ingredient_name",
              "product_name",
              "title"
            ],
            "type": "string",
            "description": "title, product_name, generic_name or ingredient_name."
          },
          "whole": {
            "type": "boolean",
            "description": "True when q matched the whole title or name."
          },
          "text": {
            "type": "string",
            "description": "The title or name matched."
          }
        },
        "required": [
          "field",
          "text",
          "whole"
        ],
        "type": "object"
      },
      "LabelProduct": {
        "additionalProperties": false,
        "properties": {
          "product_ndc": {
            "type": "string",
            "description": "The product NDC."
          },
          "product_name": {
            "type": "string",
            "description": "The product’s name."
          }
        },
        "required": [
          "product_name",
          "product_ndc"
        ],
        "type": "object"
      },
      "LabelSearchHit": {
        "additionalProperties": false,
        "properties": {
          "set_id": {
            "type": "string",
            "description": "The label’s set ID."
          },
          "version": {
            "type": "integer",
            "description": "The label’s current version number."
          },
          "title": {
            "type": "string",
            "description": "The label’s title."
          },
          "document_type": {
            "enum": [
              "allergenic",
              "cellular_therapy",
              "otc",
              "plasma_derivative",
              "prescription",
              "vaccine"
            ],
            "type": "string",
            "description": "prescription, otc, vaccine, plasma_derivative, allergenic or cellular_therapy."
          },
          "effective_date": {
            "format": "date",
            "type": "string",
            "description": "The label’s effective date."
          },
          "labeler": {
            "type": "string",
            "description": "The labeler."
          },
          "repackaged": {
            "type": "boolean",
            "description": "True when the label names another company’s source NDC, or its labeler declares a repack or relabel operation for it."
          },
          "boxed_warning": {
            "type": "boolean",
            "description": "True when the label has a boxed warning."
          },
          "products": {
            "items": {
              "$ref": "#/components/schemas/LabelProduct"
            },
            "type": "array",
            "description": "Up to 10 of the label’s products, by NDC."
          },
          "product_count": {
            "minimum": 0,
            "type": "integer",
            "description": "How many products the label lists."
          },
          "matched_name": {
            "$ref": "#/components/schemas/LabelMatchedName",
            "description": "What q matched: the title or a name, whole or by its start."
          }
        },
        "required": [
          "boxed_warning",
          "product_count",
          "products",
          "set_id",
          "title",
          "version"
        ],
        "type": "object"
      },
      "LabelSearchData": {
        "items": {
          "$ref": "#/components/schemas/LabelSearchHit"
        },
        "type": "array"
      },
      "LabelSection": {
        "additionalProperties": false,
        "properties": {
          "section_key": {
            "type": "string",
            "description": "The section’s key, accepted by section."
          },
          "title": {
            "type": "string",
            "description": "The section’s title."
          },
          "loinc_code": {
            "pattern": "^[0-9]{1,7}-[0-9]$",
            "type": "string",
            "description": "The section’s LOINC code."
          },
          "text_length": {
            "minimum": 1,
            "type": "integer",
            "description": "Characters of text in the section."
          },
          "text": {
            "type": "string",
            "description": "The section’s text, with paragraphs, lists and table rows kept, when requested."
          },
          "text_fidelity": {
            "const": "normalized_fallback",
            "type": "string",
            "description": "normalized_fallback when the section is shown as plain text."
          }
        },
        "required": [
          "section_key",
          "text_length",
          "title"
        ],
        "type": "object"
      },
      "LabelLookupData": {
        "additionalProperties": false,
        "properties": {
          "set_id": {
            "type": "string",
            "description": "The label’s set ID."
          },
          "version": {
            "maximum": 9999999999,
            "minimum": 1,
            "type": "integer",
            "description": "The label’s current version number."
          },
          "document_id": {
            "type": "string",
            "description": "The version’s document ID."
          },
          "title": {
            "type": "string",
            "description": "The label’s title."
          },
          "document_type": {
            "enum": [
              "allergenic",
              "cellular_therapy",
              "otc",
              "plasma_derivative",
              "prescription",
              "vaccine"
            ],
            "type": "string",
            "description": "prescription, otc, vaccine, plasma_derivative, allergenic or cellular_therapy."
          },
          "effective_date": {
            "format": "date",
            "type": "string",
            "description": "The label’s effective date."
          },
          "published_date": {
            "format": "date",
            "type": "string",
            "description": "The date DailyMed published the version."
          },
          "labeler": {
            "type": "string",
            "description": "The labeler."
          },
          "repackaged": {
            "type": "boolean",
            "description": "True when the label names another company’s source NDC, or its labeler declares a repack or relabel operation for it."
          },
          "boxed_warning": {
            "type": "boolean",
            "description": "True when the label has a boxed warning."
          },
          "dailymed_url": {
            "type": "string",
            "description": "The label on DailyMed."
          },
          "products": {
            "items": {
              "$ref": "#/components/schemas/LabelProduct"
            },
            "type": "array",
            "description": "The label’s products by NDC."
          },
          "product_count": {
            "minimum": 0,
            "type": "integer",
            "description": "How many products the label lists."
          },
          "sections": {
            "items": {
              "$ref": "#/components/schemas/LabelSection"
            },
            "type": "array",
            "description": "Every non-empty section, in label order. Text comes only for sections named in section."
          },
          "absent_sections": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "description": "Requested sections the label has no text for, spelled as you sent them. A well-formed LOINC code no section carries is listed here too."
          }
        },
        "required": [
          "boxed_warning",
          "dailymed_url",
          "product_count",
          "products",
          "sections",
          "set_id",
          "title",
          "version"
        ],
        "type": "object"
      },
      "MatchedName": {
        "additionalProperties": false,
        "properties": {
          "field": {
            "enum": [
              "generic_name",
              "ingredient_name",
              "product_name"
            ],
            "type": "string",
            "description": "product_name, generic_name or ingredient_name."
          },
          "whole": {
            "type": "boolean",
            "description": "True when q matched the whole name."
          },
          "text": {
            "type": "string",
            "description": "The matched name."
          }
        },
        "required": [
          "field",
          "text",
          "whole"
        ],
        "type": "object"
      },
      "ProductIngredient": {
        "additionalProperties": false,
        "properties": {
          "name": {
            "type": "string",
            "description": "The ingredient’s name."
          },
          "unii": {
            "type": "string",
            "description": "The ingredient’s UNII."
          },
          "role": {
            "enum": [
              "active",
              "inactive",
              "other"
            ],
            "type": "string",
            "description": "active, inactive or other."
          },
          "strength": {
            "$ref": "#/components/schemas/Strength",
            "description": "The strength, with its unit and denominator."
          },
          "strength_basis": {
            "enum": [
              "active_ingredient",
              "active_moiety",
              "reference_substance"
            ],
            "type": "string",
            "description": "What the strength is measured for: the ingredient, its active moiety or a reference substance."
          }
        },
        "required": [
          "role"
        ],
        "type": "object"
      },
      "ProductSearchHit": {
        "additionalProperties": false,
        "properties": {
          "product_ndc": {
            "type": "string",
            "description": "The product NDC."
          },
          "product_name": {
            "type": "string",
            "description": "The proprietary name, or the generic name when the label has none."
          },
          "generic_name": {
            "type": "string",
            "description": "The generic name on the label."
          },
          "brand_generic": {
            "enum": [
              "brand",
              "generic"
            ],
            "type": "string",
            "description": "brand, or generic for an ANDA or an NDA authorized generic."
          },
          "labeler": {
            "type": "string",
            "description": "The labeler named on the label."
          },
          "dosage_form": {
            "$ref": "#/components/schemas/CodedName",
            "description": "The SPL dosage form, with its code."
          },
          "routes": {
            "items": {
              "$ref": "#/components/schemas/CodedName"
            },
            "type": "array",
            "description": "The SPL routes of administration, with their codes."
          },
          "strengths": {
            "items": {
              "$ref": "#/components/schemas/ProductIngredient"
            },
            "type": "array",
            "description": "The active ingredients with their strengths; a kit’s come from its parts."
          },
          "legal_status": {
            "enum": [
              "otc",
              "prescription"
            ],
            "type": "string",
            "description": "prescription or otc."
          },
          "product_type": {
            "enum": [
              "allergenic",
              "cellular_therapy",
              "plasma_derivative",
              "vaccine"
            ],
            "type": "string",
            "description": "vaccine, plasma_derivative, allergenic (an allergenic extract) or cellular_therapy; absent for an ordinary drug label."
          },
          "dea_schedule": {
            "enum": [
              "CI",
              "CII",
              "CIII",
              "CIV",
              "CV"
            ],
            "type": "string",
            "description": "FDA’s NDC Directory schedule for this product NDC, else the label’s own."
          },
          "repackaged": {
            "type": "boolean",
            "description": "True when the label names another company’s source NDC, or its labeler declares a repack or relabel operation for it."
          },
          "listing_status": {
            "enum": [
              "active_listing",
              "ended",
              "future",
              "not_fda_listed",
              "unknown"
            ],
            "type": "string",
            "description": "active_listing, ended, future, unknown, or not_fda_listed when FDA’s NDC Directory does not list the product."
          },
          "shortage_import": {
            "const": true,
            "type": "boolean",
            "description": "True when FDA lists the product as an unapproved drug for use in a drug shortage: imported or marketed only while the shortage lasts."
          },
          "set_ids": {
            "items": {
              "type": "string"
            },
            "minItems": 1,
            "type": "array",
            "description": "The set IDs of the labels that list the product."
          },
          "matched_name": {
            "$ref": "#/components/schemas/MatchedName",
            "description": "Which of the product’s names q matched, whether whole, and its text."
          }
        },
        "required": [
          "listing_status",
          "product_name",
          "product_ndc",
          "routes",
          "set_ids",
          "strengths"
        ],
        "type": "object"
      },
      "MarketedProductSearchData": {
        "items": {
          "$ref": "#/components/schemas/ProductSearchHit"
        },
        "type": "array"
      },
      "RecalledProductPreview": {
        "additionalProperties": false,
        "properties": {
          "recall_number": {
            "type": "string",
            "description": "The product’s FDA recall number."
          },
          "product_description": {
            "type": "string",
            "description": "The product description from the recall."
          },
          "product_description_truncated": {
            "const": true,
            "type": "boolean",
            "description": "True when the description was cut."
          },
          "classification": {
            "type": "string",
            "description": "The product’s own FDA classification."
          },
          "enforcement_status_as_published": {
            "type": "string",
            "description": "The product’s own published status."
          },
          "termination_date": {
            "type": "string",
            "description": "The date FDA terminated the recall, when it has; the recall stays listed."
          },
          "reason": {
            "type": "string",
            "description": "The product’s reason for recall, for events with mixed reasons."
          },
          "reason_truncated": {
            "const": true,
            "type": "boolean",
            "description": "True when the reason was cut."
          },
          "affected_ndcs": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "description": "The NDCs printed in the recall text."
          }
        },
        "type": "object"
      },
      "RecallCard": {
        "additionalProperties": false,
        "properties": {
          "recall_id": {
            "type": "string",
            "description": "The event’s identifier, for RECALL-LOOKUP."
          },
          "event_id": {
            "type": "string",
            "description": "FDA’s event ID."
          },
          "recalling_firm": {
            "type": "string",
            "description": "The recalling firm."
          },
          "classifications": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "description": "The FDA classifications of the event’s recalls."
          },
          "enforcement_status_as_published": {
            "type": "string",
            "description": "The recall’s status as FDA published it, such as Ongoing or Terminated."
          },
          "reason": {
            "type": "string",
            "description": "The reason for recall, when the event’s products share one."
          },
          "report_date": {
            "type": "string",
            "description": "The report date."
          },
          "initiated_date": {
            "type": "string",
            "description": "The date the firm initiated the recall."
          },
          "recalled_product_count": {
            "minimum": 1,
            "type": "integer",
            "description": "How many recalled products the event has."
          },
          "product_preview": {
            "items": {
              "$ref": "#/components/schemas/RecalledProductPreview"
            },
            "type": "array",
            "description": "The first recalled products, with their NDCs."
          },
          "product_preview_truncated": {
            "const": true,
            "type": "boolean",
            "description": "True when the preview holds fewer products than the event has."
          },
          "source_url": {
            "type": "string",
            "description": "Link to the recall on FDA’s site."
          }
        },
        "required": [
          "recall_id",
          "recalled_product_count"
        ],
        "type": "object"
      },
      "RecallSearchData": {
        "items": {
          "$ref": "#/components/schemas/RecallCard"
        },
        "type": "array"
      },
      "PageMeta": {
        "additionalProperties": false,
        "properties": {
          "limit": {
            "type": "integer",
            "description": "Items per page."
          },
          "has_more": {
            "type": "boolean",
            "description": "True when another page follows."
          },
          "next_cursor": {
            "type": "string",
            "description": "The cursor for the next page. Keep sending it until it is absent: a page can hold fewer than limit rows, or none, and still have one."
          },
          "total": {
            "type": "integer",
            "description": "The number of matches for the whole request, when the operation counts them. Absent when it does not."
          },
          "total_relation": {
            "const": "lower_bound",
            "type": "string",
            "description": "lower_bound when the total is a floor."
          }
        },
        "required": [
          "has_more",
          "limit"
        ],
        "type": "object"
      },
      "RecallProduct": {
        "additionalProperties": false,
        "properties": {
          "recall_number": {
            "type": "string",
            "description": "The product’s FDA recall number."
          },
          "product_description": {
            "type": "string",
            "description": "The product description from the recall."
          },
          "classification": {
            "type": "string",
            "description": "The product’s FDA classification."
          },
          "enforcement_status_as_published": {
            "type": "string",
            "description": "The product’s published status."
          },
          "report_date": {
            "type": "string",
            "description": "The product’s FDA report date."
          },
          "initiated_date": {
            "type": "string",
            "description": "The product’s FDA recall initiation date."
          },
          "termination_date": {
            "type": "string",
            "description": "The date FDA terminated the recall, when it has; the recall stays listed."
          },
          "reason": {
            "type": "string",
            "description": "The product’s reason for recall."
          },
          "recalling_firm": {
            "type": "string",
            "description": "The product’s recalling firm."
          },
          "product_quantity": {
            "type": "string",
            "description": "The quantity recalled."
          },
          "code_information": {
            "type": "string",
            "description": "Lot and code information from the recall."
          },
          "distribution": {
            "type": "string",
            "description": "The distribution pattern."
          },
          "affected_ndcs": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "description": "The NDCs printed in the recall text."
          },
          "source_url": {
            "type": "string",
            "description": "Link to the recall on FDA’s site."
          }
        },
        "type": "object"
      },
      "RecallLookupData": {
        "additionalProperties": false,
        "properties": {
          "recall_id": {
            "type": "string",
            "description": "The event’s identifier."
          },
          "event_id": {
            "type": "string",
            "description": "FDA’s event ID."
          },
          "recalling_firm": {
            "type": "string",
            "description": "The recalling firm."
          },
          "classifications": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "description": "The FDA classifications of the event’s recalls."
          },
          "enforcement_status_as_published": {
            "type": "string",
            "description": "The recall’s status as FDA published it, such as Ongoing or Terminated."
          },
          "reason": {
            "type": "string",
            "description": "The reason for recall, when the event’s products share one."
          },
          "report_date": {
            "type": "string",
            "description": "The report date."
          },
          "initiated_date": {
            "type": "string",
            "description": "The date the firm initiated the recall."
          },
          "products": {
            "items": {
              "$ref": "#/components/schemas/RecallProduct"
            },
            "type": "array",
            "description": "The recalled products on this page."
          },
          "products_page": {
            "$ref": "#/components/schemas/PageMeta",
            "description": "The page’s limit, whether more follow, the next cursor and the total."
          },
          "source_url": {
            "type": "string",
            "description": "Link to the recall on FDA’s site."
          }
        },
        "required": [
          "recall_id"
        ],
        "type": "object"
      },
      "InventoryItem": {
        "additionalProperties": false,
        "properties": {
          "ndc": {
            "type": "string",
            "description": "The NDC as you sent it."
          },
          "lot": {
            "type": "string",
            "description": "The lot as you sent it, or the scan’s own lot when you sent none."
          },
          "lot_source": {
            "enum": [
              "request",
              "scan"
            ],
            "type": "string",
            "description": "request when the lot is yours, scan when it came from the GS1 scan in ndc."
          },
          "expiry": {
            "type": "string",
            "description": "The expiry as you sent it, or the scan’s own expiry when you sent none."
          },
          "expiry_source": {
            "enum": [
              "request",
              "scan"
            ],
            "type": "string",
            "description": "request when the expiry is yours, scan when it came from the GS1 scan in ndc."
          },
          "normalization_status": {
            "enum": [
              "ambiguous",
              "invalid",
              "normalized",
              "source_representation_only",
              "unchanged"
            ],
            "type": "string",
            "description": "unchanged, normalized, ambiguous when a 10-digit NDC has several readings (each is checked), source_representation_only for an 11-digit code no NDC layout reads (matched only as printed), or invalid when nothing was checked."
          },
          "normalized_ndcs": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "description": "The NDC readings that were checked."
          },
          "recalls": {
            "items": {
              "$ref": "#/components/schemas/InventoryRecall"
            },
            "type": "array",
            "description": "Each recalled product whose recall lists this NDC, at most 25."
          },
          "recalls_more": {
            "const": true,
            "type": "boolean",
            "description": "True when more than 25 recalls match."
          },
          "shortages": {
            "items": {
              "$ref": "#/components/schemas/InventoryShortage"
            },
            "type": "array",
            "description": "Each FDA shortage presentation for this NDC, at most 25."
          },
          "shortages_more": {
            "const": true,
            "type": "boolean",
            "description": "True when more than 25 shortages match."
          }
        },
        "required": [
          "ndc",
          "normalization_status"
        ],
        "type": "object"
      },
      "InventoryCheckData": {
        "items": {
          "$ref": "#/components/schemas/InventoryItem"
        },
        "type": "array"
      },
      "InventoryItemInput": {
        "additionalProperties": false,
        "properties": {
          "ndc": {
            "type": "string",
            "description": "An NDC in any layout, or a package’s UPC, GTIN or scan."
          },
          "lot": {
            "maxLength": 64,
            "type": "string",
            "description": "The lot number, when you have it: at most 64 characters with a letter or digit, or the whole request is refused with 400. Without it, a GS1 scan’s own lot is used."
          },
          "expiry": {
            "type": "string",
            "description": "The expiry date on the stock, as YYYY-MM or YYYY-MM-DD, when you have it. A year from 1980 to 2099 and a real day; anything else refuses the whole request with 400."
          }
        },
        "required": [
          "ndc"
        ],
        "type": "object"
      },
      "InventoryCheckRequest": {
        "additionalProperties": false,
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/InventoryItemInput"
            },
            "maxItems": 100,
            "minItems": 1,
            "type": "array",
            "description": "1 to 100 items, each an NDC in any layout or a package barcode, with an optional lot and an optional expiry as YYYY-MM or YYYY-MM-DD. Results keep their order and duplicates."
          },
          "include": {
            "items": {
              "const": "reason",
              "type": "string"
            },
            "type": "array",
            "description": "reason adds each matched recall’s reason for recall."
          }
        },
        "required": [
          "items"
        ],
        "type": "object"
      },
      "ShortageDateWindow": {
        "additionalProperties": false,
        "properties": {
          "text": {
            "type": "string",
            "description": "FDA’s words for the date, or TBD."
          },
          "earliest": {
            "type": "string",
            "description": "The first day the words can mean, YYYY-MM-DD. Left out for TBD."
          },
          "latest": {
            "type": "string",
            "description": "The last day the words can mean, YYYY-MM-DD. Left out for TBD."
          }
        },
        "required": [
          "text"
        ],
        "type": "object"
      },
      "ShortageDiscontinuation": {
        "additionalProperties": false,
        "properties": {
          "text": {
            "type": "string",
            "description": "FDA’s words saying the product is discontinued."
          },
          "discontinued_date": {
            "type": "string",
            "description": "The discontinued date FDA lists, YYYY-MM-DD."
          },
          "supply_end": {
            "$ref": "#/components/schemas/ShortageDateWindow",
            "description": "When FDA says supply or distribution ends."
          }
        },
        "type": "object"
      },
      "ShortageSearchHit": {
        "additionalProperties": false,
        "properties": {
          "shortage_id": {
            "type": "string",
            "description": "The presentation’s identifier, accepted by the shortage_id filter."
          },
          "generic_name": {
            "type": "string",
            "description": "The generic name."
          },
          "proprietary_name": {
            "type": "string",
            "description": "The brand name, when the product has one."
          },
          "presentation": {
            "type": "string",
            "description": "The presentation as FDA describes it."
          },
          "dosage_form": {
            "type": "string",
            "description": "The dosage form."
          },
          "strengths": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "description": "The strengths FDA lists."
          },
          "package_ndc": {
            "type": "string",
            "description": "The package NDC FDA lists."
          },
          "company": {
            "type": "string",
            "description": "The company."
          },
          "national_shortage_status": {
            "type": "string",
            "description": "FDA’s national shortage status."
          },
          "manufacturer_availability_text": {
            "type": "string",
            "description": "The manufacturer’s availability statement."
          },
          "shortage_reason": {
            "type": "string",
            "description": "The reason FDA lists for the shortage."
          },
          "related_information": {
            "type": "string",
            "description": "FDA’s notes on the shortage, as FDA wrote them."
          },
          "estimated_recovery": {
            "$ref": "#/components/schemas/ShortageDateWindow",
            "description": "When FDA expects supply to recover: FDA’s words, with the earliest and latest dates they mean."
          },
          "next_delivery": {
            "$ref": "#/components/schemas/ShortageDateWindow",
            "description": "When the next delivery is expected: FDA’s words, with the earliest and latest dates they mean."
          },
          "allocation": {
            "type": "string",
            "description": "FDA’s words saying the product is on allocation."
          },
          "discontinuation": {
            "$ref": "#/components/schemas/ShortageDiscontinuation",
            "description": "FDA’s discontinuation wording, its discontinued date and when supply ends."
          },
          "resolved_note": {
            "type": "string",
            "description": "FDA’s note on a resolved shortage."
          },
          "update_type": {
            "type": "string",
            "description": "The type of FDA’s latest update."
          },
          "first_posted_date": {
            "type": "string",
            "description": "The date FDA first posted the shortage."
          },
          "updated_date": {
            "type": "string",
            "description": "The date FDA last updated it."
          },
          "therapeutic_categories": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "description": "FDA’s therapeutic categories for the drug."
          },
          "contact_information": {
            "type": "string",
            "description": "The contact FDA lists."
          }
        },
        "required": [
          "company",
          "generic_name",
          "national_shortage_status",
          "presentation",
          "shortage_id"
        ],
        "type": "object"
      },
      "ShortageSearchData": {
        "items": {
          "$ref": "#/components/schemas/ShortageSearchHit"
        },
        "type": "array"
      },
      "RemsCoveredProduct": {
        "additionalProperties": false,
        "properties": {
          "trade_name": {
            "type": "string",
            "description": "The product’s trade name."
          },
          "established_name": {
            "type": "string",
            "description": "The product’s established name."
          },
          "dosage_form": {
            "type": "string",
            "description": "The dosage form."
          },
          "application_number": {
            "type": "string",
            "description": "The FDA application number."
          }
        },
        "type": "object"
      },
      "RemsProgram": {
        "additionalProperties": false,
        "properties": {
          "rems_id": {
            "type": "string",
            "description": "The program’s identifier."
          },
          "name": {
            "type": "string",
            "description": "The program’s name."
          },
          "status": {
            "enum": [
              "current",
              "inactive",
              "moved_to_shared_system",
              "released"
            ],
            "type": "string",
            "description": "current; inactive when every covered product was withdrawn; released; or moved_to_shared_system when a shared-system program replaced it."
          },
          "requirements": {
            "items": {
              "enum": [
                "communication_plan",
                "dispenser_certification",
                "elements_to_assure_safe_use",
                "implementation_system",
                "medication_guide",
                "patient_enrollment",
                "prescriber_certification",
                "prescriber_training"
              ],
              "type": "string"
            },
            "type": "array",
            "description": "FDA’s requirement flags on the program’s latest version."
          },
          "approved_date": {
            "type": "string",
            "description": "When FDA first approved the REMS. Absent when FDA leaves a version undated."
          },
          "updated_date": {
            "type": "string",
            "description": "The date of the program’s latest version: its latest change or release. Absent when FDA gives none."
          },
          "covered_product_count": {
            "minimum": 0,
            "type": "integer",
            "description": "How many products the program covers, withdrawn ones left out."
          },
          "covered_products": {
            "items": {
              "$ref": "#/components/schemas/RemsCoveredProduct"
            },
            "type": "array",
            "description": "The covered products on this page."
          },
          "products_page": {
            "$ref": "#/components/schemas/PageMeta",
            "description": "The page’s limit, whether more follow, the next cursor and the total."
          }
        },
        "required": [
          "covered_product_count",
          "name",
          "rems_id",
          "requirements",
          "status"
        ],
        "type": "object"
      },
      "RemsSearchData": {
        "items": {
          "$ref": "#/components/schemas/RemsProgram"
        },
        "type": "array"
      },
      "RemsNdcAnswer": {
        "additionalProperties": false,
        "properties": {
          "ndc": {
            "type": "string",
            "description": "By NDC: the NDC as you sent it."
          },
          "rems_required": {
            "type": "boolean",
            "description": "By NDC: true when a current REMS program covers the product’s FDA application. false does not rule out a REMS: a kit’s parts and a product with no FDA application of its own are not evaluated."
          },
          "program": {
            "$ref": "#/components/schemas/RemsProgram",
            "description": "By NDC: that current program, with its covered products paged as by rems_id; absent when none covers the product. A 409 lists the product NDCs or the programs to choose from in details.candidates."
          },
          "past_programs": {
            "items": {
              "$ref": "#/components/schemas/RemsPastProgram"
            },
            "type": "array",
            "description": "By NDC: released or shared-system programs that covered the same application."
          }
        },
        "required": [
          "ndc",
          "past_programs",
          "rems_required"
        ],
        "type": "object"
      },
      "RemsPastProgram": {
        "additionalProperties": false,
        "properties": {
          "rems_id": {
            "type": "string",
            "description": "The program’s identifier."
          },
          "name": {
            "type": "string",
            "description": "The program’s name."
          },
          "status": {
            "enum": [
              "moved_to_shared_system",
              "released"
            ],
            "type": "string",
            "description": "released, or moved_to_shared_system when a shared-system program replaced it."
          }
        },
        "required": [
          "name",
          "rems_id",
          "status"
        ],
        "type": "object"
      },
      "RemsLookupData": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/RemsProgram"
          },
          {
            "$ref": "#/components/schemas/RemsNdcAnswer"
          }
        ]
      },
      "SafetyLabelChangeAskedProduct": {
        "additionalProperties": false,
        "properties": {
          "application_number": {
            "type": "string",
            "description": "The product’s FDA application number."
          },
          "trade_name": {
            "type": "string",
            "description": "The product’s trade name in the Orange Book."
          }
        },
        "required": [
          "application_number"
        ],
        "type": "object"
      },
      "SafetyLabelChangeViaReference": {
        "additionalProperties": false,
        "properties": {
          "reference_name": {
            "type": "string",
            "description": "The reference drug whose label FDA changed."
          },
          "reference_application_number": {
            "type": "string",
            "description": "The reference drug’s FDA application number."
          },
          "for_products": {
            "items": {
              "$ref": "#/components/schemas/SafetyLabelChangeAskedProduct"
            },
            "type": "array",
            "description": "The products you asked about that have this reference drug in the Orange Book."
          }
        },
        "required": [
          "for_products",
          "reference_application_number",
          "reference_name"
        ],
        "type": "object"
      },
      "SafetyLabelSectionChange": {
        "additionalProperties": false,
        "properties": {
          "section_code": {
            "type": "string",
            "description": "The section’s code, when FDA gives one."
          },
          "section_title": {
            "type": "string",
            "description": "The section’s title."
          },
          "new_text": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "description": "The wording FDA underlined as new, passage by passage."
          },
          "source_text": {
            "type": "string",
            "description": "The section’s text: an excerpt when FDA underlined nothing, in full with include=section_text."
          },
          "source_text_truncated": {
            "type": "boolean",
            "description": "True when the text was cut."
          },
          "underline_spans": {
            "items": {
              "$ref": "#/components/schemas/SafetyLabelUnderlineSpan"
            },
            "type": "array",
            "description": "FDA’s underline spans, with include=source_formatting."
          }
        },
        "required": [
          "section_title"
        ],
        "type": "object"
      },
      "SafetyLabelUnderlineSpan": {
        "additionalProperties": false,
        "properties": {
          "start": {
            "minimum": 0,
            "type": "integer",
            "description": "Where the underline starts in source_text, as a character offset."
          },
          "end": {
            "exclusiveMinimum": 0,
            "type": "integer",
            "description": "Where it ends (exclusive)."
          }
        },
        "required": [
          "end",
          "start"
        ],
        "type": "object"
      },
      "SafetyLabelingChange": {
        "additionalProperties": false,
        "properties": {
          "change_id": {
            "type": "string",
            "description": "The change’s identifier, accepted by the change_id filter."
          },
          "drug_name": {
            "type": "string",
            "description": "The drug name FDA lists."
          },
          "active_ingredient": {
            "type": "string",
            "description": "The active ingredient FDA lists."
          },
          "application_number": {
            "type": "string",
            "description": "The FDA application number."
          },
          "application_type": {
            "type": "string",
            "description": "NDA, ANDA or BLA."
          },
          "supplement_type": {
            "type": "string",
            "description": "FDA’s supplement type, such as SLR."
          },
          "supplement_number": {
            "type": "string",
            "description": "The supplement number."
          },
          "changed_date": {
            "type": "string",
            "description": "The date FDA lists for the change."
          },
          "source_url": {
            "type": "string",
            "description": "The change at FDA."
          },
          "label_url": {
            "type": "string",
            "description": "The approved label FDA links, when it links one."
          },
          "changed_sections": {
            "items": {
              "$ref": "#/components/schemas/SafetyLabelSectionChange"
            },
            "type": "array",
            "description": "Every section the change touched, with its text."
          },
          "via_reference": {
            "$ref": "#/components/schemas/SafetyLabelChangeViaReference",
            "description": "Only on a reference drug’s change found for a generic: the reference drug and the products it is the reference for."
          }
        },
        "required": [
          "application_number",
          "application_type",
          "change_id",
          "changed_date",
          "changed_sections",
          "drug_name",
          "source_url",
          "supplement_number",
          "supplement_type"
        ],
        "type": "object"
      },
      "SafetyLabelChangeSearchData": {
        "items": {
          "$ref": "#/components/schemas/SafetyLabelingChange"
        },
        "type": "array"
      },
      "ChangeFamily": {
        "additionalProperties": false,
        "properties": {
          "family": {
            "enum": [
              "recalls",
              "shortages"
            ],
            "type": "string",
            "description": "recalls or shortages."
          },
          "status": {
            "enum": [
              "behind",
              "complete",
              "not_started"
            ],
            "type": "string",
            "description": "complete: changes are up to date with FDA’s latest release. behind: a newer FDA release is still being processed. not_started: no history yet."
          },
          "history_starts_at": {
            "type": "string",
            "description": "When the family’s history starts."
          },
          "covered_through": {
            "type": "string",
            "description": "Changes are complete through this time. Poll again from the earliest one."
          }
        },
        "required": [
          "family",
          "status"
        ],
        "type": "object"
      },
      "ChangeGap": {
        "additionalProperties": false,
        "properties": {
          "from_first_seen_at": {
            "type": "string",
            "description": "Where the gap starts; absent when that is unknown too."
          },
          "reason": {
            "enum": [
              "history_unavailable",
              "releases_not_recorded",
              "source_release_unavailable",
              "source_sequence_changed"
            ],
            "type": "string",
            "description": "Why the period has no change data."
          }
        },
        "required": [
          "reason"
        ],
        "type": "object"
      },
      "FieldChange": {
        "additionalProperties": false,
        "properties": {
          "field": {
            "type": "string",
            "description": "The field that changed."
          },
          "from": {
            "type": "string",
            "description": "Its value before; absent when it was empty."
          },
          "to": {
            "type": "string",
            "description": "Its value after; absent when it is empty."
          }
        },
        "required": [
          "field"
        ],
        "type": "object"
      },
      "RecallChange": {
        "additionalProperties": false,
        "properties": {
          "recall_number": {
            "type": "string",
            "description": "The product’s FDA recall number."
          },
          "product_description": {
            "type": "string",
            "description": "The product description from the recall."
          },
          "classification": {
            "type": "string",
            "description": "The product’s FDA classification."
          },
          "enforcement_status_as_published": {
            "type": "string",
            "description": "The product’s published status."
          },
          "report_date": {
            "type": "string",
            "description": "The product’s report date, when it differs from the event’s."
          },
          "initiated_date": {
            "type": "string",
            "description": "The product’s initiation date, when it differs from the event’s."
          },
          "termination_date": {
            "type": "string",
            "description": "The date FDA terminated the recall, when it has; the recall stays listed."
          },
          "reason": {
            "type": "string",
            "description": "The product’s reason for recall, when it differs from the event’s."
          },
          "recalling_firm": {
            "type": "string",
            "description": "The product’s recalling firm, when it differs from the event’s."
          },
          "product_quantity": {
            "type": "string",
            "description": "The quantity recalled."
          },
          "code_information": {
            "type": "string",
            "description": "Lot and code information from the recall."
          },
          "distribution": {
            "type": "string",
            "description": "The distribution pattern."
          },
          "affected_ndcs": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "description": "The NDCs printed in the recall text."
          },
          "recall_id": {
            "type": "string",
            "description": "The ID of the product’s recall, for RECALL-LOOKUP."
          },
          "source_url": {
            "type": "string",
            "description": "Link to the recall on FDA’s site."
          }
        },
        "required": [
          "recall_id"
        ],
        "type": "object"
      },
      "DrugShortagePresentation": {
        "additionalProperties": false,
        "properties": {
          "shortage_id": {
            "type": "string",
            "description": "The presentation’s identifier, accepted by the shortage_id filter."
          },
          "generic_name": {
            "type": "string",
            "description": "The generic name."
          },
          "proprietary_name": {
            "type": "string",
            "description": "The brand name, when the product has one."
          },
          "presentation": {
            "type": "string",
            "description": "The presentation as FDA describes it."
          },
          "dosage_form": {
            "type": "string",
            "description": "The dosage form."
          },
          "strengths": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "description": "The strengths FDA lists."
          },
          "package_ndc": {
            "type": "string",
            "description": "The package NDC FDA lists."
          },
          "company": {
            "type": "string",
            "description": "The company."
          },
          "national_shortage_status": {
            "type": "string",
            "description": "FDA’s national shortage status. FDA’s text: Current, To Be Discontinued or Resolved."
          },
          "manufacturer_availability_text": {
            "type": "string",
            "description": "The manufacturer’s availability statement."
          },
          "shortage_reason": {
            "type": "string",
            "description": "The reason FDA lists for the shortage."
          },
          "related_information": {
            "type": "string",
            "description": "FDA’s notes on the shortage, as FDA wrote them."
          },
          "estimated_recovery": {
            "$ref": "#/components/schemas/ShortageDateWindow",
            "description": "When FDA expects supply to recover: FDA’s words, with the earliest and latest dates they mean."
          },
          "next_delivery": {
            "$ref": "#/components/schemas/ShortageDateWindow",
            "description": "When the next delivery is expected: FDA’s words, with the earliest and latest dates they mean."
          },
          "allocation": {
            "type": "string",
            "description": "FDA’s words saying the product is on allocation."
          },
          "discontinuation": {
            "$ref": "#/components/schemas/ShortageDiscontinuation",
            "description": "FDA’s discontinuation wording, its discontinued date and when supply ends."
          },
          "resolved_note": {
            "type": "string",
            "description": "FDA’s note on a resolved shortage."
          },
          "update_type": {
            "type": "string",
            "description": "The type of FDA’s latest update."
          },
          "first_posted_date": {
            "type": "string",
            "description": "The date FDA first posted the shortage."
          },
          "updated_date": {
            "type": "string",
            "description": "The date FDA last updated it."
          },
          "therapeutic_categories": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "description": "FDA’s therapeutic categories for the drug."
          },
          "contact_information": {
            "type": "string",
            "description": "The contact FDA lists."
          }
        },
        "required": [
          "company",
          "generic_name",
          "national_shortage_status",
          "presentation",
          "shortage_id"
        ],
        "type": "object"
      },
      "SafetyEventChange": {
        "additionalProperties": false,
        "properties": {
          "family": {
            "enum": [
              "recalls",
              "shortages"
            ],
            "type": "string",
            "description": "recalls or shortages."
          },
          "event": {
            "enum": [
              "changed",
              "gap",
              "new",
              "removed"
            ],
            "type": "string",
            "description": "new, changed or removed; gap marks a period with no change data."
          },
          "event_id": {
            "type": "string",
            "description": "The change’s stable identifier; deduplicate on it. It never changes and is never reused."
          },
          "record_id": {
            "type": "string",
            "description": "The ID of the record that changed. Pass it as record_id to follow one record."
          },
          "first_seen_at": {
            "type": "string",
            "description": "When we first saw the change, in UTC."
          },
          "source_as_of": {
            "type": "string",
            "description": "The date of the FDA release the change arrived in."
          },
          "changes": {
            "items": {
              "$ref": "#/components/schemas/FieldChange"
            },
            "type": "array",
            "description": "For changed: each tracked field before and after."
          },
          "recall": {
            "$ref": "#/components/schemas/RecallChange",
            "description": "The recalled product as published after the change."
          },
          "shortage": {
            "$ref": "#/components/schemas/DrugShortagePresentation",
            "description": "The shortage presentation as published after the change."
          },
          "gap": {
            "$ref": "#/components/schemas/ChangeGap",
            "description": "A period with no change data."
          }
        },
        "required": [
          "event",
          "event_id",
          "family",
          "first_seen_at"
        ],
        "type": "object"
      },
      "SafetyEventChangesData": {
        "additionalProperties": false,
        "properties": {
          "families": {
            "items": {
              "$ref": "#/components/schemas/ChangeFamily"
            },
            "type": "array",
            "description": "Coverage of each family you asked for with family, or both without it: status, start and the time changes are complete through."
          },
          "changes": {
            "items": {
              "$ref": "#/components/schemas/SafetyEventChange"
            },
            "type": "array",
            "description": "The changes, newest first."
          }
        },
        "required": [
          "changes",
          "families"
        ],
        "type": "object"
      },
      "PillSearchResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "data",
          "meta"
        ],
        "properties": {
          "data": {
            "description": "The operation's result.",
            "$ref": "#/components/schemas/PillSearchData"
          },
          "meta": {
            "description": "The request ID, paging fields, warnings and the sources behind the answer.",
            "$ref": "#/components/schemas/Meta"
          }
        }
      },
      "CodeLookupResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "data",
          "meta"
        ],
        "properties": {
          "data": {
            "description": "The operation's result.",
            "$ref": "#/components/schemas/CodeLookupData"
          },
          "meta": {
            "description": "The request ID, paging fields, warnings and the sources behind the answer.",
            "$ref": "#/components/schemas/Meta"
          }
        }
      },
      "CodeResolveResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "data",
          "meta"
        ],
        "properties": {
          "data": {
            "description": "The operation's result.",
            "$ref": "#/components/schemas/CodeResolveData"
          },
          "meta": {
            "description": "The request ID, paging fields, warnings and the sources behind the answer.",
            "$ref": "#/components/schemas/Meta"
          }
        }
      },
      "DrugSearchResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "data",
          "meta"
        ],
        "properties": {
          "data": {
            "description": "The operation's result.",
            "$ref": "#/components/schemas/DrugSearchData"
          },
          "meta": {
            "description": "The request ID, paging fields, warnings and the sources behind the answer.",
            "$ref": "#/components/schemas/Meta"
          }
        }
      },
      "DrugLookupResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "data",
          "meta"
        ],
        "properties": {
          "data": {
            "description": "The operation's result.",
            "$ref": "#/components/schemas/DrugLookupData"
          },
          "meta": {
            "description": "The request ID, paging fields, warnings and the sources behind the answer.",
            "$ref": "#/components/schemas/Meta"
          }
        }
      },
      "InterchangeabilityAlternativesResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "data",
          "meta"
        ],
        "properties": {
          "data": {
            "description": "The operation's result.",
            "$ref": "#/components/schemas/InterchangeabilityAlternativesData"
          },
          "meta": {
            "description": "The request ID, paging fields, warnings and the sources behind the answer.",
            "$ref": "#/components/schemas/Meta"
          }
        }
      },
      "InterchangeabilityCheckResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "data",
          "meta"
        ],
        "properties": {
          "data": {
            "description": "The operation's result.",
            "$ref": "#/components/schemas/InterchangeabilityCheckData"
          },
          "meta": {
            "description": "The request ID, paging fields, warnings and the sources behind the answer.",
            "$ref": "#/components/schemas/Meta"
          }
        }
      },
      "LabelSearchResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "data",
          "meta"
        ],
        "properties": {
          "data": {
            "description": "The operation's result.",
            "$ref": "#/components/schemas/LabelSearchData"
          },
          "meta": {
            "description": "The request ID, paging fields, warnings and the sources behind the answer.",
            "$ref": "#/components/schemas/Meta"
          }
        }
      },
      "LabelLookupResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "data",
          "meta"
        ],
        "properties": {
          "data": {
            "description": "The operation's result.",
            "$ref": "#/components/schemas/LabelLookupData"
          },
          "meta": {
            "description": "The request ID, paging fields, warnings and the sources behind the answer.",
            "$ref": "#/components/schemas/Meta"
          }
        }
      },
      "MarketedProductSearchResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "data",
          "meta"
        ],
        "properties": {
          "data": {
            "description": "The operation's result.",
            "$ref": "#/components/schemas/MarketedProductSearchData"
          },
          "meta": {
            "description": "The request ID, paging fields, warnings and the sources behind the answer.",
            "$ref": "#/components/schemas/Meta"
          }
        }
      },
      "RecallSearchResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "data",
          "meta"
        ],
        "properties": {
          "data": {
            "description": "The operation's result.",
            "$ref": "#/components/schemas/RecallSearchData"
          },
          "meta": {
            "description": "The request ID, paging fields, warnings and the sources behind the answer.",
            "$ref": "#/components/schemas/Meta"
          }
        }
      },
      "RecallLookupResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "data",
          "meta"
        ],
        "properties": {
          "data": {
            "description": "The operation's result.",
            "$ref": "#/components/schemas/RecallLookupData"
          },
          "meta": {
            "description": "The request ID, paging fields, warnings and the sources behind the answer.",
            "$ref": "#/components/schemas/Meta"
          }
        }
      },
      "InventoryCheckResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "data",
          "meta"
        ],
        "properties": {
          "data": {
            "description": "The operation's result.",
            "$ref": "#/components/schemas/InventoryCheckData"
          },
          "meta": {
            "description": "The request ID, paging fields, warnings and the sources behind the answer.",
            "$ref": "#/components/schemas/Meta"
          }
        }
      },
      "ShortageSearchResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "data",
          "meta"
        ],
        "properties": {
          "data": {
            "description": "The operation's result.",
            "$ref": "#/components/schemas/ShortageSearchData"
          },
          "meta": {
            "description": "The request ID, paging fields, warnings and the sources behind the answer.",
            "$ref": "#/components/schemas/Meta"
          }
        }
      },
      "RemsSearchResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "data",
          "meta"
        ],
        "properties": {
          "data": {
            "description": "The operation's result.",
            "$ref": "#/components/schemas/RemsSearchData"
          },
          "meta": {
            "description": "The request ID, paging fields, warnings and the sources behind the answer.",
            "$ref": "#/components/schemas/Meta"
          }
        }
      },
      "RemsLookupResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "data",
          "meta"
        ],
        "properties": {
          "data": {
            "description": "The operation's result.",
            "$ref": "#/components/schemas/RemsLookupData"
          },
          "meta": {
            "description": "The request ID, paging fields, warnings and the sources behind the answer.",
            "$ref": "#/components/schemas/Meta"
          }
        }
      },
      "SafetyLabelChangeSearchResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "data",
          "meta"
        ],
        "properties": {
          "data": {
            "description": "The operation's result.",
            "$ref": "#/components/schemas/SafetyLabelChangeSearchData"
          },
          "meta": {
            "description": "The request ID, paging fields, warnings and the sources behind the answer.",
            "$ref": "#/components/schemas/Meta"
          }
        }
      },
      "SafetyEventChangesResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "data",
          "meta"
        ],
        "properties": {
          "data": {
            "description": "The operation's result.",
            "$ref": "#/components/schemas/SafetyEventChangesData"
          },
          "meta": {
            "description": "The request ID, paging fields, warnings and the sources behind the answer.",
            "$ref": "#/components/schemas/Meta"
          }
        }
      }
    }
  }
}
