{
  "openapi": "3.0.3",
  "info": {
    "title": "wszfin API Reference",
    "version": "0.1.0",
    "description": "WallStreetZen source API for bluedoor Financial Data.\nFocused WallStreetZen company lookup, prices, news, and screener data.\nCoverage: Company search; Company price series; Company news; Screener companies.\nGenerated from the live source contract and representative live API responses on 2026-06-07T01:30:59.456Z."
  },
  "servers": [
    {
      "url": "https://api.wszfin.bluedoor.sh",
      "description": "wszfin source API"
    }
  ],
  "externalDocs": {
    "description": "WallStreetZen source API docs",
    "url": "https://bluedoor.sh/apis/financial-data/sources/wszfin"
  },
  "tags": [
    {
      "name": "Companies"
    }
  ],
  "paths": {
    "/v1/companies/search": {
      "get": {
        "operationId": "wszfin_get_companies_search",
        "summary": "Search",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "example": "AAPL",
              "maxLength": 64
            }
          },
          {
            "name": "refresh",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "description": "Bypass the edge cache when truthy."
          },
          {
            "name": "x-wszfin-contact",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "format": "email"
            },
            "description": "Optional contact email for higher public rate limits and support diagnostics."
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "example": "Bearer <key>"
            },
            "description": "Optional API-key authorization for higher-volume access tiers."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/wszfin_get_companies_searchResponse"
                },
                "examples": {
                  "live": {
                    "summary": "Live response",
                    "value": {
                      "meta": {
                        "provider": "wallstreetzen",
                        "route": "companies_search",
                        "contract": "wallstreetzen.companies.search",
                        "ttl_seconds": 3600,
                        "generated_at": "2026-06-07T01:36:06.955Z"
                      },
                      "data": {
                        "query": "AAPL",
                        "companies": [
                          {
                            "id": 36,
                            "ticker": "AAPL",
                            "name": "Apple Inc",
                            "exchange": "NASDAQ",
                            "url": "https://www.wallstreetzen.com/stocks/us/nasdaq/aapl"
                          }
                        ],
                        "errors": null
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request. A required parameter is missing, malformed, or outside the supported range.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                },
                "examples": {
                  "default": {
                    "summary": "HTTP 400 error",
                    "value": {
                      "ok": false,
                      "error": {
                        "code": "bad_request",
                        "message": "Required query parameter is missing or invalid."
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized. API-key authenticated tiers use an Authorization bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                },
                "examples": {
                  "default": {
                    "summary": "HTTP 401 error",
                    "value": {
                      "ok": false,
                      "error": {
                        "code": "unauthorized",
                        "message": "A valid API key is required for this tier."
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not found. The requested route, resource, or symbol could not be resolved.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                },
                "examples": {
                  "default": {
                    "summary": "HTTP 404 error",
                    "value": {
                      "ok": false,
                      "error": {
                        "code": "not_found",
                        "message": "The requested resource was not found."
                      }
                    }
                  }
                }
              }
            }
          },
          "405": {
            "description": "Method not allowed. Source API routes are documented as HTTP GET unless otherwise specified.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                },
                "examples": {
                  "default": {
                    "summary": "HTTP 405 error",
                    "value": {
                      "ok": false,
                      "error": {
                        "code": "method_not_allowed",
                        "message": "This route does not support the requested HTTP method."
                      }
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                },
                "examples": {
                  "default": {
                    "summary": "HTTP 429 error",
                    "value": {
                      "ok": false,
                      "error": {
                        "code": "rate_limited",
                        "message": "Too many requests. Retry after the rate-limit reset."
                      }
                    }
                  }
                }
              }
            }
          },
          "502": {
            "description": "Upstream source error. The source service rejected or failed the upstream request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                },
                "examples": {
                  "default": {
                    "summary": "HTTP 502 error",
                    "value": {
                      "ok": false,
                      "error": {
                        "code": "upstream_error",
                        "message": "The upstream source returned an error."
                      }
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Origin circuit open or origin failure detected.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                },
                "examples": {
                  "default": {
                    "summary": "HTTP 503 error",
                    "value": {
                      "ok": false,
                      "error": {
                        "code": "service_unavailable",
                        "message": "The service is temporarily unavailable."
                      }
                    }
                  }
                }
              }
            }
          },
          "504": {
            "description": "Upstream timeout. The upstream source did not return within the source API timeout window.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                },
                "examples": {
                  "default": {
                    "summary": "HTTP 504 error",
                    "value": {
                      "ok": false,
                      "error": {
                        "code": "upstream_timeout",
                        "message": "The upstream source timed out."
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {},
          {
            "ContactEmail": []
          },
          {
            "BearerAuth": []
          },
          {
            "WszfinApiKey": []
          }
        ],
        "description": "Returns search with source-native fields and identifiers.",
        "tags": [
          "Companies"
        ],
        "x-source-api": "wszfin",
        "x-source-name": "WallStreetZen",
        "x-source-upstream": "wallstreetzen.com",
        "x-docs-example-url": "https://api.wszfin.bluedoor.sh/v1/companies/search?q=AAPL",
        "x-docs-example-status": 200,
        "x-docs-captured-at": "2026-06-07T01:36:06.976Z"
      }
    },
    "/v1/screener/companies": {
      "get": {
        "operationId": "wszfin_get_screener_companies",
        "summary": "Company screener",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 1
            },
            "description": "1-based page index. WallStreetZen returns ~100 rows per page; check data.pagination.total_pages for the live ceiling."
          },
          {
            "name": "refresh",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "description": "Bypass the edge cache when truthy."
          },
          {
            "name": "x-wszfin-contact",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "format": "email"
            },
            "description": "Optional contact email for higher public rate limits and support diagnostics."
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "example": "Bearer <key>"
            },
            "description": "Optional API-key authorization for higher-volume access tiers."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/wszfin_get_screener_companiesResponse"
                },
                "examples": {
                  "live": {
                    "summary": "Live response",
                    "value": {
                      "meta": {
                        "provider": "wallstreetzen",
                        "route": "screener_companies",
                        "contract": "wallstreetzen.screener.companies",
                        "ttl_seconds": 300,
                        "generated_at": "2026-06-07T01:36:08.094Z"
                      },
                      "data": {
                        "pagination": {
                          "page": 1,
                          "total_pages": 55,
                          "total_filtered": 5487,
                          "sort_column": "market_cap",
                          "sort_direction": "desc"
                        },
                        "companies": [
                          {
                            "id": 11037,
                            "ticker": "NVDA",
                            "name": "NVIDIA CORP",
                            "exchange": "NASDAQ",
                            "industry": "Semiconductors",
                            "market_cap": 4963420000000,
                            "price": 205.1,
                            "change_percent_1d": -0.062014085795298636,
                            "ebitda": 192970000000,
                            "pe": 31.265243902439025,
                            "debt_to_equity": 0.327,
                            "zen_score": null,
                            "zen_rating": null,
                            "country": "United States",
                            "url": "https://www.wallstreetzen.com/stocks/us/nasdaq/nvda"
                          },
                          {
                            "id": 36,
                            "ticker": "AAPL",
                            "name": "APPLE INC",
                            "exchange": "NASDAQ",
                            "industry": "Consumer Electronics",
                            "market_cap": 4514011993040,
                            "price": 307.34,
                            "change_percent_1d": -0.01249879510329981,
                            "ebitda": 160280000000,
                            "pe": 37.073582629674306,
                            "debt_to_equity": 2.485,
                            "zen_score": null,
                            "zen_rating": null,
                            "country": "United States",
                            "url": "https://www.wallstreetzen.com/stocks/us/nasdaq/aapl"
                          },
                          {
                            "id": 6715,
                            "ticker": "GOOGL",
                            "name": "ALPHABET INC",
                            "exchange": "NASDAQ",
                            "industry": "Internet Content & Information",
                            "market_cap": 4465109480000,
                            "price": 368.53,
                            "change_percent_1d": -0.009833687095300787,
                            "ebitda": 218815000000,
                            "pe": 27.834592145015105,
                            "debt_to_equity": 0.47,
                            "zen_score": null,
                            "zen_rating": null,
                            "country": "United States",
                            "url": "https://www.wallstreetzen.com/stocks/us/nasdaq/googl"
                          }
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request. A required parameter is missing, malformed, or outside the supported range.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                },
                "examples": {
                  "default": {
                    "summary": "HTTP 400 error",
                    "value": {
                      "ok": false,
                      "error": {
                        "code": "bad_request",
                        "message": "Required query parameter is missing or invalid."
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized. API-key authenticated tiers use an Authorization bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                },
                "examples": {
                  "default": {
                    "summary": "HTTP 401 error",
                    "value": {
                      "ok": false,
                      "error": {
                        "code": "unauthorized",
                        "message": "A valid API key is required for this tier."
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not found. The requested route, resource, or symbol could not be resolved.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                },
                "examples": {
                  "default": {
                    "summary": "HTTP 404 error",
                    "value": {
                      "ok": false,
                      "error": {
                        "code": "not_found",
                        "message": "The requested resource was not found."
                      }
                    }
                  }
                }
              }
            }
          },
          "405": {
            "description": "Method not allowed. Source API routes are documented as HTTP GET unless otherwise specified.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                },
                "examples": {
                  "default": {
                    "summary": "HTTP 405 error",
                    "value": {
                      "ok": false,
                      "error": {
                        "code": "method_not_allowed",
                        "message": "This route does not support the requested HTTP method."
                      }
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                },
                "examples": {
                  "default": {
                    "summary": "HTTP 429 error",
                    "value": {
                      "ok": false,
                      "error": {
                        "code": "rate_limited",
                        "message": "Too many requests. Retry after the rate-limit reset."
                      }
                    }
                  }
                }
              }
            }
          },
          "502": {
            "description": "Upstream source error. The source service rejected or failed the upstream request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                },
                "examples": {
                  "default": {
                    "summary": "HTTP 502 error",
                    "value": {
                      "ok": false,
                      "error": {
                        "code": "upstream_error",
                        "message": "The upstream source returned an error."
                      }
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Origin circuit open or origin failure detected.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                },
                "examples": {
                  "default": {
                    "summary": "HTTP 503 error",
                    "value": {
                      "ok": false,
                      "error": {
                        "code": "service_unavailable",
                        "message": "The service is temporarily unavailable."
                      }
                    }
                  }
                }
              }
            }
          },
          "504": {
            "description": "Upstream timeout. The upstream source did not return within the source API timeout window.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                },
                "examples": {
                  "default": {
                    "summary": "HTTP 504 error",
                    "value": {
                      "ok": false,
                      "error": {
                        "code": "upstream_timeout",
                        "message": "The upstream source timed out."
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {},
          {
            "ContactEmail": []
          },
          {
            "BearerAuth": []
          },
          {
            "WszfinApiKey": []
          }
        ],
        "description": "Returns company screener with source-native fields and identifiers.",
        "x-source-api": "wszfin",
        "x-source-name": "WallStreetZen",
        "x-source-upstream": "wallstreetzen.com",
        "x-docs-example-url": "https://api.wszfin.bluedoor.sh/v1/screener/companies",
        "x-docs-example-status": 200,
        "x-docs-captured-at": "2026-06-07T01:36:08.118Z"
      }
    },
    "/v1/companies/{id}/news": {
      "get": {
        "operationId": "wszfin_get_companies_id_news",
        "summary": "News",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "example": 36
            },
            "description": "Numeric WallStreetZen company id (from companies_search)."
          },
          {
            "name": "refresh",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "description": "Bypass the edge cache when truthy."
          },
          {
            "name": "x-wszfin-contact",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "format": "email"
            },
            "description": "Optional contact email for higher public rate limits and support diagnostics."
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "example": "Bearer <key>"
            },
            "description": "Optional API-key authorization for higher-volume access tiers."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/wszfin_get_companies_id_newsResponse"
                },
                "examples": {
                  "live": {
                    "summary": "Live response",
                    "value": {
                      "meta": {
                        "provider": "wallstreetzen",
                        "route": "company_news",
                        "contract": "wallstreetzen.companies.news",
                        "ttl_seconds": 600,
                        "generated_at": "2026-06-07T01:36:08.794Z"
                      },
                      "data": {
                        "company_id": 1,
                        "articles": []
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request. A required parameter is missing, malformed, or outside the supported range.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                },
                "examples": {
                  "default": {
                    "summary": "HTTP 400 error",
                    "value": {
                      "ok": false,
                      "error": {
                        "code": "bad_request",
                        "message": "Required query parameter is missing or invalid."
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized. API-key authenticated tiers use an Authorization bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                },
                "examples": {
                  "default": {
                    "summary": "HTTP 401 error",
                    "value": {
                      "ok": false,
                      "error": {
                        "code": "unauthorized",
                        "message": "A valid API key is required for this tier."
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not found. The requested route, resource, or symbol could not be resolved.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                },
                "examples": {
                  "default": {
                    "summary": "HTTP 404 error",
                    "value": {
                      "ok": false,
                      "error": {
                        "code": "not_found",
                        "message": "The requested resource was not found."
                      }
                    }
                  }
                }
              }
            }
          },
          "405": {
            "description": "Method not allowed. Source API routes are documented as HTTP GET unless otherwise specified.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                },
                "examples": {
                  "default": {
                    "summary": "HTTP 405 error",
                    "value": {
                      "ok": false,
                      "error": {
                        "code": "method_not_allowed",
                        "message": "This route does not support the requested HTTP method."
                      }
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                },
                "examples": {
                  "default": {
                    "summary": "HTTP 429 error",
                    "value": {
                      "ok": false,
                      "error": {
                        "code": "rate_limited",
                        "message": "Too many requests. Retry after the rate-limit reset."
                      }
                    }
                  }
                }
              }
            }
          },
          "502": {
            "description": "Upstream source error. The source service rejected or failed the upstream request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                },
                "examples": {
                  "default": {
                    "summary": "HTTP 502 error",
                    "value": {
                      "ok": false,
                      "error": {
                        "code": "upstream_error",
                        "message": "The upstream source returned an error."
                      }
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Origin circuit open or origin failure detected.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                },
                "examples": {
                  "default": {
                    "summary": "HTTP 503 error",
                    "value": {
                      "ok": false,
                      "error": {
                        "code": "service_unavailable",
                        "message": "The service is temporarily unavailable."
                      }
                    }
                  }
                }
              }
            }
          },
          "504": {
            "description": "Upstream timeout. The upstream source did not return within the source API timeout window.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                },
                "examples": {
                  "default": {
                    "summary": "HTTP 504 error",
                    "value": {
                      "ok": false,
                      "error": {
                        "code": "upstream_timeout",
                        "message": "The upstream source timed out."
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {},
          {
            "ContactEmail": []
          },
          {
            "BearerAuth": []
          },
          {
            "WszfinApiKey": []
          }
        ],
        "description": "Returns news with source-native fields and identifiers.",
        "tags": [
          "Companies"
        ],
        "x-source-api": "wszfin",
        "x-source-name": "WallStreetZen",
        "x-source-upstream": "wallstreetzen.com",
        "x-docs-example-url": "https://api.wszfin.bluedoor.sh/v1/companies/1/news",
        "x-docs-example-status": 200,
        "x-docs-captured-at": "2026-06-07T01:36:08.809Z"
      }
    },
    "/v1/companies/{id}/prices": {
      "get": {
        "operationId": "wszfin_get_companies_id_prices",
        "summary": "Prices",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "example": 36
            },
            "description": "Numeric WallStreetZen company id (from companies_search)."
          },
          {
            "name": "refresh",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "description": "Bypass the edge cache when truthy."
          },
          {
            "name": "x-wszfin-contact",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "format": "email"
            },
            "description": "Optional contact email for higher public rate limits and support diagnostics."
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "example": "Bearer <key>"
            },
            "description": "Optional API-key authorization for higher-volume access tiers."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/wszfin_get_companies_id_pricesResponse"
                },
                "examples": {
                  "live": {
                    "summary": "Live response",
                    "value": {
                      "meta": {
                        "provider": "wallstreetzen",
                        "route": "company_prices",
                        "contract": "wallstreetzen.companies.prices",
                        "ttl_seconds": 900,
                        "generated_at": "2026-06-07T01:36:10.553Z"
                      },
                      "data": {
                        "company_id": 1,
                        "prices": [
                          {
                            "timestamp_ms": -630979200000,
                            "timestamp_iso": "1950-01-03T00:00:00.000Z",
                            "price": 16.66,
                            "volume": 1260000,
                            "fair_value": null
                          },
                          {
                            "timestamp_ms": -630892800000,
                            "timestamp_iso": "1950-01-04T00:00:00.000Z",
                            "price": 16.85,
                            "volume": 1890000,
                            "fair_value": null
                          },
                          {
                            "timestamp_ms": -630806400000,
                            "timestamp_iso": "1950-01-05T00:00:00.000Z",
                            "price": 16.93,
                            "volume": 2550000,
                            "fair_value": null
                          }
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request. A required parameter is missing, malformed, or outside the supported range.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                },
                "examples": {
                  "default": {
                    "summary": "HTTP 400 error",
                    "value": {
                      "ok": false,
                      "error": {
                        "code": "bad_request",
                        "message": "Required query parameter is missing or invalid."
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized. API-key authenticated tiers use an Authorization bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                },
                "examples": {
                  "default": {
                    "summary": "HTTP 401 error",
                    "value": {
                      "ok": false,
                      "error": {
                        "code": "unauthorized",
                        "message": "A valid API key is required for this tier."
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not found. The requested route, resource, or symbol could not be resolved.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                },
                "examples": {
                  "default": {
                    "summary": "HTTP 404 error",
                    "value": {
                      "ok": false,
                      "error": {
                        "code": "not_found",
                        "message": "The requested resource was not found."
                      }
                    }
                  }
                }
              }
            }
          },
          "405": {
            "description": "Method not allowed. Source API routes are documented as HTTP GET unless otherwise specified.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                },
                "examples": {
                  "default": {
                    "summary": "HTTP 405 error",
                    "value": {
                      "ok": false,
                      "error": {
                        "code": "method_not_allowed",
                        "message": "This route does not support the requested HTTP method."
                      }
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                },
                "examples": {
                  "default": {
                    "summary": "HTTP 429 error",
                    "value": {
                      "ok": false,
                      "error": {
                        "code": "rate_limited",
                        "message": "Too many requests. Retry after the rate-limit reset."
                      }
                    }
                  }
                }
              }
            }
          },
          "502": {
            "description": "Upstream source error. The source service rejected or failed the upstream request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                },
                "examples": {
                  "default": {
                    "summary": "HTTP 502 error",
                    "value": {
                      "ok": false,
                      "error": {
                        "code": "upstream_error",
                        "message": "The upstream source returned an error."
                      }
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Origin circuit open or origin failure detected.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                },
                "examples": {
                  "default": {
                    "summary": "HTTP 503 error",
                    "value": {
                      "ok": false,
                      "error": {
                        "code": "service_unavailable",
                        "message": "The service is temporarily unavailable."
                      }
                    }
                  }
                }
              }
            }
          },
          "504": {
            "description": "Upstream timeout. The upstream source did not return within the source API timeout window.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                },
                "examples": {
                  "default": {
                    "summary": "HTTP 504 error",
                    "value": {
                      "ok": false,
                      "error": {
                        "code": "upstream_timeout",
                        "message": "The upstream source timed out."
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {},
          {
            "ContactEmail": []
          },
          {
            "BearerAuth": []
          },
          {
            "WszfinApiKey": []
          }
        ],
        "description": "Returns prices with source-native fields and identifiers.",
        "tags": [
          "Companies"
        ],
        "x-source-api": "wszfin",
        "x-source-name": "WallStreetZen",
        "x-source-upstream": "wallstreetzen.com",
        "x-docs-example-url": "https://api.wszfin.bluedoor.sh/v1/companies/1/prices",
        "x-docs-example-status": 200,
        "x-docs-captured-at": "2026-06-07T01:36:10.755Z"
      }
    }
  },
  "components": {
    "securitySchemes": {
      "ContactEmail": {
        "type": "apiKey",
        "in": "header",
        "name": "X-Wszfin-Contact"
      },
      "BearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "description": "API keys are available by emailing sam@bluedoor.sh."
      },
      "WszfinApiKey": {
        "type": "apiKey",
        "in": "header",
        "name": "X-Wszfin-Key"
      }
    },
    "schemas": {
      "ErrorEnvelope": {
        "type": "object",
        "additionalProperties": true,
        "properties": {
          "ok": {
            "type": "boolean",
            "example": false
          },
          "error": {
            "type": "object",
            "additionalProperties": true,
            "properties": {
              "code": {
                "type": "string"
              },
              "message": {
                "type": "string"
              }
            }
          },
          "meta": {
            "type": "object",
            "additionalProperties": true
          }
        }
      },
      "wszfin_get_companies_searchResponse": {
        "type": "object",
        "additionalProperties": true,
        "properties": {
          "meta": {
            "type": "object",
            "additionalProperties": true,
            "properties": {
              "provider": {
                "type": "string"
              },
              "route": {
                "type": "string"
              },
              "contract": {
                "type": "string"
              },
              "ttl_seconds": {
                "type": "integer"
              },
              "generated_at": {
                "type": "string"
              }
            },
            "required": [
              "contract",
              "generated_at",
              "provider",
              "route",
              "ttl_seconds"
            ]
          },
          "data": {
            "type": "object",
            "additionalProperties": true,
            "properties": {
              "query": {
                "type": "string"
              },
              "companies": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": true,
                  "properties": {
                    "id": {
                      "type": "integer"
                    },
                    "ticker": {
                      "type": "string"
                    },
                    "name": {
                      "type": "string"
                    },
                    "exchange": {
                      "type": "string"
                    },
                    "url": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "exchange",
                    "id",
                    "name",
                    "ticker",
                    "url"
                  ]
                }
              },
              "errors": {
                "nullable": true
              }
            },
            "required": [
              "companies",
              "errors",
              "query"
            ]
          }
        },
        "required": [
          "data",
          "meta"
        ]
      },
      "wszfin_get_screener_companiesResponse": {
        "type": "object",
        "additionalProperties": true,
        "properties": {
          "meta": {
            "type": "object",
            "additionalProperties": true,
            "properties": {
              "provider": {
                "type": "string"
              },
              "route": {
                "type": "string"
              },
              "contract": {
                "type": "string"
              },
              "ttl_seconds": {
                "type": "integer"
              },
              "generated_at": {
                "type": "string"
              }
            },
            "required": [
              "contract",
              "generated_at",
              "provider",
              "route",
              "ttl_seconds"
            ]
          },
          "data": {
            "type": "object",
            "additionalProperties": true,
            "properties": {
              "pagination": {
                "type": "object",
                "additionalProperties": true,
                "properties": {
                  "page": {
                    "type": "integer"
                  },
                  "total_pages": {
                    "type": "integer"
                  },
                  "total_filtered": {
                    "type": "integer"
                  },
                  "sort_column": {
                    "type": "string"
                  },
                  "sort_direction": {
                    "type": "string"
                  }
                },
                "required": [
                  "page",
                  "sort_column",
                  "sort_direction",
                  "total_filtered",
                  "total_pages"
                ]
              },
              "companies": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": true,
                  "properties": {
                    "id": {
                      "type": "integer"
                    },
                    "ticker": {
                      "type": "string"
                    },
                    "name": {
                      "type": "string"
                    },
                    "exchange": {
                      "type": "string"
                    },
                    "industry": {
                      "type": "string"
                    },
                    "market_cap": {
                      "type": "integer"
                    },
                    "price": {
                      "oneOf": [
                        {
                          "type": "number"
                        },
                        {
                          "type": "integer"
                        }
                      ]
                    },
                    "change_percent_1d": {
                      "type": "number"
                    },
                    "ebitda": {
                      "type": "integer"
                    },
                    "pe": {
                      "oneOf": [
                        {
                          "type": "number"
                        },
                        {
                          "nullable": true
                        }
                      ]
                    },
                    "debt_to_equity": {
                      "type": "number"
                    },
                    "zen_score": {
                      "nullable": true
                    },
                    "zen_rating": {
                      "nullable": true
                    },
                    "country": {
                      "type": "string"
                    },
                    "url": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "change_percent_1d",
                    "country",
                    "debt_to_equity",
                    "ebitda",
                    "exchange",
                    "id",
                    "industry",
                    "market_cap",
                    "name",
                    "pe",
                    "price",
                    "ticker",
                    "url",
                    "zen_rating",
                    "zen_score"
                  ]
                }
              }
            },
            "required": [
              "companies",
              "pagination"
            ]
          }
        },
        "required": [
          "data",
          "meta"
        ]
      },
      "wszfin_get_companies_id_newsResponse": {
        "type": "object",
        "additionalProperties": true,
        "properties": {
          "meta": {
            "type": "object",
            "additionalProperties": true,
            "properties": {
              "provider": {
                "type": "string"
              },
              "route": {
                "type": "string"
              },
              "contract": {
                "type": "string"
              },
              "ttl_seconds": {
                "type": "integer"
              },
              "generated_at": {
                "type": "string"
              }
            },
            "required": [
              "contract",
              "generated_at",
              "provider",
              "route",
              "ttl_seconds"
            ]
          },
          "data": {
            "type": "object",
            "additionalProperties": true,
            "properties": {
              "company_id": {
                "type": "integer"
              },
              "articles": {
                "type": "array",
                "items": {}
              }
            },
            "required": [
              "articles",
              "company_id"
            ]
          }
        },
        "required": [
          "data",
          "meta"
        ]
      },
      "wszfin_get_companies_id_pricesResponse": {
        "type": "object",
        "additionalProperties": true,
        "properties": {
          "meta": {
            "type": "object",
            "additionalProperties": true,
            "properties": {
              "provider": {
                "type": "string"
              },
              "route": {
                "type": "string"
              },
              "contract": {
                "type": "string"
              },
              "ttl_seconds": {
                "type": "integer"
              },
              "generated_at": {
                "type": "string"
              }
            },
            "required": [
              "contract",
              "generated_at",
              "provider",
              "route",
              "ttl_seconds"
            ]
          },
          "data": {
            "type": "object",
            "additionalProperties": true,
            "properties": {
              "company_id": {
                "type": "integer"
              },
              "prices": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": true,
                  "properties": {
                    "timestamp_ms": {
                      "type": "integer"
                    },
                    "timestamp_iso": {
                      "type": "string"
                    },
                    "price": {
                      "type": "number"
                    },
                    "volume": {
                      "type": "integer"
                    },
                    "fair_value": {
                      "nullable": true
                    }
                  },
                  "required": [
                    "fair_value",
                    "price",
                    "timestamp_iso",
                    "timestamp_ms",
                    "volume"
                  ]
                }
              }
            },
            "required": [
              "company_id",
              "prices"
            ]
          }
        },
        "required": [
          "data",
          "meta"
        ]
      }
    }
  },
  "x-generated-at": "2026-06-07T01:30:59.456Z",
  "x-source-api": "wszfin",
  "x-source-base-url": "https://api.wszfin.bluedoor.sh"
}
