{
 "openapi": "3.1.0",
 "info": {
  "title": "cmbs.news API",
  "version": "1.0.0",
  "description": "Loan-level data on every loan in every public CMBS trust, from SEC filings (Form ABS-EE Schedule AL and Form 10-D trustee reports). Free; CC BY 4.0, credit cmbs.news. Also available as an MCP server at https://cmbs.news/mcp.",
  "contact": {
   "email": "hello@cmbs.news"
  },
  "license": {
   "name": "CC BY 4.0",
   "url": "https://creativecommons.org/licenses/by/4.0/"
  }
 },
 "servers": [
  {
   "url": "https://cmbs.news/api/v1"
  }
 ],
 "paths": {
  "/meta": {
   "get": {
    "operationId": "meta",
    "summary": "Coverage, as-of dates, counts and the headline index",
    "responses": {
     "200": {
      "description": "Metadata",
      "content": {
       "application/json": {
        "schema": {
         "type": "object"
        }
       }
      }
     },
     "400": {
      "description": "Bad parameter"
     },
     "404": {
      "description": "Not found"
     }
    }
   }
  },
  "/loans": {
   "get": {
    "operationId": "searchLoans",
    "summary": "Search loans",
    "parameters": [
     {
      "name": "q",
      "in": "query",
      "required": false,
      "description": "Words in the property name, city or metro",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "status",
      "in": "query",
      "required": false,
      "description": "special_servicing | delinquent | distressed | watch | matured_unpaid | current",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "type",
      "in": "query",
      "required": false,
      "description": "office | retail | multifamily | lodging | industrial | mixed-use | self-storage | manufactured-housing | healthcare | other",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "state",
      "in": "query",
      "required": false,
      "description": "Two-letter state code",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "cbsa",
      "in": "query",
      "required": false,
      "description": "Census CBSA code",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "tenant",
      "in": "query",
      "required": false,
      "description": "A tenant among the three largest",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "maturing_after",
      "in": "query",
      "required": false,
      "description": "YYYY-MM or YYYY-MM-DD",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "maturing_before",
      "in": "query",
      "required": false,
      "description": "YYYY-MM or YYYY-MM-DD",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "min_balance",
      "in": "query",
      "required": false,
      "description": "Dollars",
      "schema": {
       "type": "number"
      }
     },
     {
      "name": "max_dscr",
      "in": "query",
      "required": false,
      "description": "Latest DSCR at or below",
      "schema": {
       "type": "number"
      }
     },
     {
      "name": "sort",
      "in": "query",
      "required": false,
      "description": "balance | maturity | dscr | transfer",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "limit",
      "in": "query",
      "required": false,
      "description": "1-100 (default 25)",
      "schema": {
       "type": "integer"
      }
     },
     {
      "name": "offset",
      "in": "query",
      "required": false,
      "description": "Paging offset",
      "schema": {
       "type": "integer"
      }
     }
    ],
    "responses": {
     "200": {
      "description": "Matching loans",
      "content": {
       "application/json": {
        "schema": {
         "type": "object"
        }
       }
      }
     },
     "400": {
      "description": "Bad parameter"
     },
     "404": {
      "description": "Not found"
     }
    }
   }
  },
  "/loans/{slug}": {
   "get": {
    "operationId": "getLoan",
    "summary": "One loan: full record, history, trusts, servicer comment facts",
    "parameters": [
     {
      "name": "slug",
      "in": "path",
      "required": true,
      "schema": {
       "type": "string"
      }
     }
    ],
    "responses": {
     "200": {
      "description": "The loan",
      "content": {
       "application/json": {
        "schema": {
         "type": "object"
        }
       }
      }
     },
     "400": {
      "description": "Bad parameter"
     },
     "404": {
      "description": "Not found"
     }
    }
   }
  },
  "/trusts": {
   "get": {
    "operationId": "listTrusts",
    "summary": "Trusts, most distressed first",
    "parameters": [
     {
      "name": "q",
      "in": "query",
      "required": false,
      "description": "Name fragment",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "limit",
      "in": "query",
      "required": false,
      "description": "1-400",
      "schema": {
       "type": "integer"
      }
     }
    ],
    "responses": {
     "200": {
      "description": "Trusts",
      "content": {
       "application/json": {
        "schema": {
         "type": "object"
        }
       }
      }
     },
     "400": {
      "description": "Bad parameter"
     },
     "404": {
      "description": "Not found"
     }
    }
   }
  },
  "/trusts/{slug}": {
   "get": {
    "operationId": "getTrust",
    "summary": "One trust: parties, bond classes, liquidations",
    "parameters": [
     {
      "name": "slug",
      "in": "path",
      "required": true,
      "schema": {
       "type": "string"
      }
     }
    ],
    "responses": {
     "200": {
      "description": "The trust",
      "content": {
       "application/json": {
        "schema": {
         "type": "object"
        }
       }
      }
     },
     "400": {
      "description": "Bad parameter"
     },
     "404": {
      "description": "Not found"
     }
    }
   }
  },
  "/cusips/{cusip}": {
   "get": {
    "operationId": "findCusip",
    "summary": "A certificate class by CUSIP, with its trust",
    "parameters": [
     {
      "name": "cusip",
      "in": "path",
      "required": true,
      "schema": {
       "type": "string"
      }
     }
    ],
    "responses": {
     "200": {
      "description": "The class",
      "content": {
       "application/json": {
        "schema": {
         "type": "object"
        }
       }
      }
     },
     "400": {
      "description": "Bad parameter"
     },
     "404": {
      "description": "Not found"
     }
    }
   }
  },
  "/metros": {
   "get": {
    "operationId": "metros",
    "summary": "Metro areas (Census CBSA codes) with loan counts",
    "responses": {
     "200": {
      "description": "Metros",
      "content": {
       "application/json": {
        "schema": {
         "type": "object"
        }
       }
      }
     },
     "400": {
      "description": "Bad parameter"
     },
     "404": {
      "description": "Not found"
     }
    }
   }
  },
  "/index": {
   "get": {
    "operationId": "distressIndex",
    "summary": "The cmbs.news distress index",
    "responses": {
     "200": {
      "description": "Monthly series and breakdowns",
      "content": {
       "application/json": {
        "schema": {
         "type": "object"
        }
       }
      }
     },
     "400": {
      "description": "Bad parameter"
     },
     "404": {
      "description": "Not found"
     }
    }
   }
  },
  "/wire": {
   "get": {
    "operationId": "wire",
    "summary": "This month's transfers, delinquencies, appraisal reductions and losses",
    "parameters": [
     {
      "name": "section",
      "in": "query",
      "required": false,
      "description": "transfers | returns | delinquent | worse | appraisals | liquidations | updates",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "limit",
      "in": "query",
      "required": false,
      "description": "Items per section",
      "schema": {
       "type": "integer"
      }
     }
    ],
    "responses": {
     "200": {
      "description": "The latest issue",
      "content": {
       "application/json": {
        "schema": {
         "type": "object"
        }
       }
      }
     },
     "400": {
      "description": "Bad parameter"
     },
     "404": {
      "description": "Not found"
     }
    }
   }
  },
  "/tenants": {
   "get": {
    "operationId": "listTenants",
    "summary": "Tenants with the most CMBS exposure",
    "parameters": [
     {
      "name": "limit",
      "in": "query",
      "required": false,
      "description": "1-400",
      "schema": {
       "type": "integer"
      }
     }
    ],
    "responses": {
     "200": {
      "description": "Tenants",
      "content": {
       "application/json": {
        "schema": {
         "type": "object"
        }
       }
      }
     },
     "400": {
      "description": "Bad parameter"
     },
     "404": {
      "description": "Not found"
     }
    }
   }
  },
  "/tenants/{name}": {
   "get": {
    "operationId": "tenantExposure",
    "summary": "Every loan a tenant backs",
    "parameters": [
     {
      "name": "name",
      "in": "path",
      "required": true,
      "schema": {
       "type": "string"
      }
     }
    ],
    "responses": {
     "200": {
      "description": "Tenant and loans",
      "content": {
       "application/json": {
        "schema": {
         "type": "object"
        }
       }
      }
     },
     "400": {
      "description": "Bad parameter"
     },
     "404": {
      "description": "Not found"
     }
    }
   }
  },
  "/comps": {
   "get": {
    "operationId": "comps",
    "summary": "Property comps with medians",
    "parameters": [
     {
      "name": "type",
      "in": "query",
      "required": false,
      "description": "Property type",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "cbsa",
      "in": "query",
      "required": false,
      "description": "Census CBSA code",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "state",
      "in": "query",
      "required": false,
      "description": "Two-letter state code",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "min_sqft",
      "in": "query",
      "required": false,
      "description": "Square feet",
      "schema": {
       "type": "number"
      }
     },
     {
      "name": "max_sqft",
      "in": "query",
      "required": false,
      "description": "Square feet",
      "schema": {
       "type": "number"
      }
     },
     {
      "name": "built_after",
      "in": "query",
      "required": false,
      "description": "Year",
      "schema": {
       "type": "integer"
      }
     },
     {
      "name": "limit",
      "in": "query",
      "required": false,
      "description": "1-500",
      "schema": {
       "type": "integer"
      }
     }
    ],
    "responses": {
     "200": {
      "description": "Comps",
      "content": {
       "application/json": {
        "schema": {
         "type": "object"
        }
       }
      }
     },
     "400": {
      "description": "Bad parameter"
     },
     "404": {
      "description": "Not found"
     }
    }
   }
  },
  "/changelog": {
   "get": {
    "operationId": "changelog",
    "summary": "Every data refresh and product change",
    "responses": {
     "200": {
      "description": "Entries",
      "content": {
       "application/json": {
        "schema": {
         "type": "object"
        }
       }
      }
     },
     "400": {
      "description": "Bad parameter"
     },
     "404": {
      "description": "Not found"
     }
    }
   }
  }
 }
}