{
  "info": {
    "title": "Substradium read API",
    "version": "1.0.1"
  },
  "openapi": "3.1.0",
  "paths": {
    "/v1/carrier/mc/{docket}": {
      "get": {
        "parameters": [
          {
            "in": "path",
            "name": "usdot",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "as_of",
            "required": true,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "version",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "https://substradium.com/schema/v1/record.schema.json"
                }
              }
            },
            "description": "Carrier record. The SHA-256 of the response bytes is its fingerprint, sent as X-Substradium-Fingerprint (and ETag where the edge preserves it)."
          }
        },
        "summary": "Return a carrier record by docket for an as-of date.",
        "x-rate-limit": {
          "description": "Keyless limits are counted per service process and reset on deploy; phase 3 moves counting to the database.",
          "keyed": {
            "requests": "daily_quota",
            "window": "day"
          },
          "keyless": {
            "daily_requests": 20,
            "requests": 10,
            "window": "minute"
          }
        },
        "x-status": "live"
      }
    },
    "/v1/carrier/{usdot}": {
      "get": {
        "parameters": [
          {
            "in": "path",
            "name": "usdot",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "as_of",
            "required": true,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "version",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "https://substradium.com/schema/v1/record.schema.json"
                }
              }
            },
            "description": "Carrier record. The SHA-256 of the response bytes is its fingerprint, sent as X-Substradium-Fingerprint (and ETag where the edge preserves it)."
          }
        },
        "summary": "Return a carrier record for an as-of date.",
        "x-rate-limit": {
          "description": "Keyless limits are counted per service process and reset on deploy; phase 3 moves counting to the database.",
          "keyed": {
            "requests": "daily_quota",
            "window": "day"
          },
          "keyless": {
            "daily_requests": 20,
            "requests": 10,
            "window": "minute"
          }
        },
        "x-status": "live"
      }
    },
    "/v1/specimens": {
      "get": {
        "summary": "List published specimens.",
        "x-status": "live"
      }
    },
    "/v1/specimens/{name}": {
      "get": {
        "summary": "Return a published specimen.",
        "x-status": "live"
      }
    },
    "/v1/verify": {
      "get": {
        "parameters": [
          {
            "in": "query",
            "name": "fingerprint",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Verification result"
          }
        },
        "summary": "Verify a record fingerprint.",
        "x-rate-limit": {
          "description": "Keyless limits are counted per service process and reset on deploy; phase 3 moves counting to the database.",
          "keyed": {
            "requests": "daily_quota",
            "window": "day"
          },
          "keyless": {
            "daily_requests": 20,
            "requests": 10,
            "window": "minute"
          }
        },
        "x-status": "live"
      }
    }
  },
  "x-status": "live"
}
