{"openapi":"3.1.0","info":{"title":"OTC Markets Adapter API","version":"0.1.0","description":"OTC Markets adapter contract for bluedoor.\n\nOTC Markets-backed routes for securities search, company profiles, quotes, disclosures, and market data.\n\nOTC Markets source API for bluedoor Financial Data.\nOTC-specific issuer, disclosure, compliance, and market-status coverage.\nCoverage: OTC issuer lists; Compliance flags; Financial reports and filings; Dividends, splits, and insiders.\nGenerated from the live source contract and representative live API responses on 2026-06-07T01:30:59.456Z.","x-bluedoor-adapter":{"slug":"otc-markets","source_id":"ofin","upstream":"otcmarkets.com","docs_url":"https://bluedoor.sh/adapters/otc-markets/docs"}},"servers":[{"url":"https://api.bluedoor.sh/adapters/otc-markets","description":"bluedoor adapter namespace"},{"url":"https://api.ofin.bluedoor.sh","description":"Current source API host"}],"externalDocs":{"description":"OTC Markets adapter docs","url":"https://bluedoor.sh/adapters/otc-markets/docs"},"tags":[{"name":"Compliance"},{"name":"Markets"},{"name":"News"},{"name":"Reg SHO"},{"name":"SEC Filings"},{"name":"Securities"}],"paths":{"/v1/reg-sho":{"get":{"summary":"List","operationId":"ofin_get_reg_sho","parameters":[{"name":"positionDate","in":"query","required":false,"schema":{"type":"string"}},{"name":"symbol","in":"query","required":false,"schema":{"type":"string"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer"}},{"name":"pageSize","in":"query","required":false,"schema":{"type":"integer"}},{"name":"refresh","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"x-ofin-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."}],"security":[{},{"ContactEmail":[]},{"BearerAuth":[]},{"OfinApiKey":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ofin_get_reg_shoResponse"},"examples":{"live":{"summary":"Live response","value":{"meta":{"provider":"otcmarkets","route":"reg_sho.list","status":"ok","cache":"miss","generated_at":"2026-06-07T01:34:17.902Z","freshness":{"as_of":"2026-06-07T01:34:17.902Z","ttl_seconds":300,"stale_seconds":3600,"stale":false},"params":{}},"data":{"totalRecords":79,"pages":27,"currentPage":1,"pageSize":3,"sortOn":"symbol","sortDir":"DESC","records":[{"positionDate":1777867200000,"securityId":405683,"securityName":"ZEO ENERGY CORP CL A","symbol":"ZEO","isCaveatEmptor":false,"venue":"Nasdaq","regShoFlag":true,"isRule4320":false,"tierId":0,"tierCode":"NT","tierName":"No Tier","rule4320":false},{"positionDate":1777867200000,"securityId":421965,"securityName":"YY GROUP HOLDING LIMITED CLASS","symbol":"YYGH","isCaveatEmptor":false,"venue":"Nasdaq","regShoFlag":true,"isRule4320":false,"tierId":0,"tierCode":"NT","tierName":"No Tier","rule4320":false},{"positionDate":1777867200000,"securityId":208388,"securityName":"YASKAWA ELECTRIC UNSP/ADR","symbol":"YASKY","isCaveatEmptor":false,"venue":"Pink Limited","regShoFlag":false,"isRule4320":true,"tierId":21,"tierCode":"PL","tierName":"Pink Limited","tierGroupId":"PS","rule4320":true}],"singular":"Threshold Security","plural":"Threshold Securities","empty":false}}}}}}},"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 limited. Retry after the limit reset or include the documented contact/API-key headers.","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":"Service unavailable. The source API or an upstream dependency is temporarily unavailable.","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."}}}}}}}},"description":"Returns list with source-native fields and identifiers.","tags":["Reg SHO"],"x-source-api":"ofin","x-source-name":"OTC Markets","x-source-upstream":"otcmarkets.com","x-docs-example-url":"https://api.ofin.bluedoor.sh/v1/reg-sho?pageSize=3","x-docs-example-status":200,"x-docs-captured-at":"2026-06-07T01:34:17.921Z"}},"/v1/sec-filings":{"get":{"summary":"List","operationId":"ofin_get_sec_filings","parameters":[{"name":"symbol","in":"query","required":false,"schema":{"type":"string"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer"}},{"name":"pageSize","in":"query","required":false,"schema":{"type":"integer"}},{"name":"refresh","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"x-ofin-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."}],"security":[{},{"ContactEmail":[]},{"BearerAuth":[]},{"OfinApiKey":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ofin_get_sec_filingsResponse"},"examples":{"live":{"summary":"Live response","value":{"meta":{"provider":"otcmarkets","route":"sec_filings.list","status":"ok","cache":"miss","generated_at":"2026-06-07T01:34:18.407Z","freshness":{"as_of":"2026-06-07T01:34:18.407Z","ttl_seconds":1800,"stale_seconds":21600,"stale":false},"params":{}},"data":{"totalRecords":299,"pages":12,"currentPage":1,"pageSize":25,"sortOn":"receivedDate","sortDir":"DESC","records":[{"exchangeId":8,"id":19519401,"dcn":"0001213900-26-065928","secFileNo":"001-40964","formTypeId":135,"formType":"8-K","receivedDate":1780694867000,"filedDate":1780632000000,"periodEndDate":1780372800000,"sizeOfFiling":1995178,"hasPdf":false,"hasExcel":true,"filedAsHtml":true,"beenViewed":true,"paperOnly":false,"valid":true,"companyId":1180320,"companyName":"ZOOMCAR HOLDINGS, INC.","companyCik":"0001854275","symbol":"ZCAR","tierCode":"QB","guid":"FWOBEuQhrXkukrs-y0W-kqWDgxJ1V3h-rnYasSjdMCKoSjI"},{"exchangeId":8,"id":19519389,"dcn":"0001104659-26-071050","secFileNo":"001-31556","formTypeId":125,"formType":"6-K","receivedDate":1780694818000,"filedDate":1780632000000,"periodEndDate":1780632000000,"sizeOfFiling":19290,"hasPdf":false,"hasExcel":true,"filedAsHtml":true,"beenViewed":true,"paperOnly":false,"valid":true,"companyId":11605,"companyName":"FAIRFAX FINANCIAL HOLDINGS LTD/ CAN","companyCik":"0000915191","symbol":"FRFHF","tierCode":"PL","guid":"FWOBEuQhrXkukrs-y0W-kqWDgxJ1V3h-rnYasSjdMCKoSjI"},{"exchangeId":8,"id":19519343,"dcn":"0001750155-26-000097","secFileNo":"000-56364","formTypeId":135,"formType":"8-K","receivedDate":1780694487000,"filedDate":1780632000000,"periodEndDate":1780459200000,"sizeOfFiling":187033,"hasPdf":false,"hasExcel":true,"filedAsHtml":true,"beenViewed":true,"paperOnly":false,"valid":true,"companyId":1063708,"companyName":"CHARLOTTE'S WEB HOLDINGS, INC.","companyCik":"0001750155","symbol":"CWBHF","tierCode":"QX","guid":"FWOBEuQhrXkukrs-y0W-kqWDgxJ1V3h-rnYasSjdMCKoSjI"}],"singular":"Sec Filing","plural":"Sec Filings","empty":false}}}}}}},"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 limited. Retry after the limit reset or include the documented contact/API-key headers.","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":"Service unavailable. The source API or an upstream dependency is temporarily unavailable.","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."}}}}}}}},"description":"Returns list with source-native fields and identifiers.","tags":["SEC Filings"],"x-source-api":"ofin","x-source-name":"OTC Markets","x-source-upstream":"otcmarkets.com","x-docs-example-url":"https://api.ofin.bluedoor.sh/v1/sec-filings","x-docs-example-status":200,"x-docs-captured-at":"2026-06-07T01:34:18.428Z"}},"/v1/securities":{"get":{"summary":"List","operationId":"ofin_get_securities","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer"}},{"name":"pageSize","in":"query","required":false,"schema":{"type":"integer"}},{"name":"country","in":"query","required":false,"schema":{"type":"string"}},{"name":"refresh","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"x-ofin-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."}],"security":[{},{"ContactEmail":[]},{"BearerAuth":[]},{"OfinApiKey":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ofin_get_securitiesResponse"},"examples":{"live":{"summary":"Live response","value":{"meta":{"provider":"otcmarkets","route":"securities.list","status":"ok","cache":"edge","generated_at":"2026-06-07T01:34:18.698Z","freshness":{"as_of":"2026-06-07T01:34:18.698Z","ttl_seconds":3600,"stale_seconds":43200,"stale":false},"params":{}},"data":{"totalRecords":2041,"pages":681,"currentPage":1,"pageSize":3,"records":[{"symbol":"AABB","tierCode":"ID","tierName":"OTCID","isCaveatEmptor":false,"marketCap":62251674.8541,"companyName":"Asia Broadband, Inc.","industry":"Metal Mining","country":"United States","joined":1630641600000},{"symbol":"AAGC","tierCode":"ID","tierName":"OTCID","isCaveatEmptor":false,"marketCap":1237364.28,"companyName":"All American Gold Corp.","industry":"Gold and Silver Ores","country":"United States","joined":1711512000000},{"symbol":"AAMTF","tierCode":"PL","tierName":"Pink Limited","isCaveatEmptor":false,"marketCap":4621725.9,"companyName":"Armada Mercantile Ltd.","industry":"Finance Services","country":"United States","joined":1334548800000}],"singular":"Company","plural":"Companies","empty":false}}}}}}},"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 limited. Retry after the limit reset or include the documented contact/API-key headers.","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":"Service unavailable. The source API or an upstream dependency is temporarily unavailable.","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."}}}}}}}},"description":"Returns list with source-native security, issuer, quote, or disclosure fields.","tags":["Securities"],"x-source-api":"ofin","x-source-name":"OTC Markets","x-source-upstream":"otcmarkets.com","x-docs-example-url":"https://api.ofin.bluedoor.sh/v1/securities?pageSize=3","x-docs-example-status":200,"x-docs-captured-at":"2026-06-07T01:34:18.714Z"}},"/v1/compliance/caveat-emptor":{"get":{"summary":"Caveat emptor","operationId":"ofin_get_compliance_caveat_emptor","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer"}},{"name":"pageSize","in":"query","required":false,"schema":{"type":"integer"}},{"name":"refresh","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"x-ofin-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."}],"security":[{},{"ContactEmail":[]},{"BearerAuth":[]},{"OfinApiKey":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ofin_get_compliance_caveat_emptorResponse"},"examples":{"live":{"summary":"Live response","value":{"meta":{"provider":"otcmarkets","route":"compliance.caveat_emptor","status":"ok","cache":"miss","generated_at":"2026-06-07T01:34:19.129Z","freshness":{"as_of":"2026-06-07T01:34:19.129Z","ttl_seconds":1800,"stale_seconds":21600,"stale":false},"params":{}},"data":{"totalRecords":10,"pages":1,"currentPage":1,"pageSize":10,"sortOn":"changeDate","sortDir":"DESC","records":[{"changeDate":1780286400000,"symbol":"QGAI","isCaveatEmptor":false,"tierId":20,"tierCode":"ID","tierName":"OTCID","oldValue":"Y","newValue":"N","closingPrice":0.44,"marketCap":18027702,"caveatEmptor":false},{"changeDate":1778472000000,"symbol":"EMRH","isCaveatEmptor":false,"tierId":20,"tierCode":"ID","tierName":"OTCID","oldValue":"Y","newValue":"N","closingPrice":0.016,"marketCap":4361321.072,"caveatEmptor":false},{"changeDate":1778472000000,"symbol":"HIPH","isCaveatEmptor":false,"tierId":20,"tierCode":"ID","tierName":"OTCID","oldValue":"Y","newValue":"N","closingPrice":0.0007,"marketCap":45077329.283,"caveatEmptor":false}],"singular":"Compliance Stat Caveat Emptor Change","plural":"Compliance Stat Caveat Emptor Changes","empty":false}}}}}}},"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 limited. Retry after the limit reset or include the documented contact/API-key headers.","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":"Service unavailable. The source API or an upstream dependency is temporarily unavailable.","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."}}}}}}}},"description":"Returns caveat emptor with source-native fields and identifiers.","tags":["Compliance"],"x-source-api":"ofin","x-source-name":"OTC Markets","x-source-upstream":"otcmarkets.com","x-docs-example-url":"https://api.ofin.bluedoor.sh/v1/compliance/caveat-emptor","x-docs-example-status":200,"x-docs-captured-at":"2026-06-07T01:34:19.144Z"}},"/v1/compliance/company-name-changes":{"get":{"summary":"Company name changes","operationId":"ofin_get_compliance_company_name_changes","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer"}},{"name":"pageSize","in":"query","required":false,"schema":{"type":"integer"}},{"name":"refresh","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"x-ofin-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."}],"security":[{},{"ContactEmail":[]},{"BearerAuth":[]},{"OfinApiKey":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ofin_get_compliance_company_name_changesResponse"},"examples":{"live":{"summary":"Live response","value":{"meta":{"provider":"otcmarkets","route":"compliance.company_name_changes","status":"ok","cache":"miss","generated_at":"2026-06-07T01:34:19.615Z","freshness":{"as_of":"2026-06-07T01:34:19.615Z","ttl_seconds":1800,"stale_seconds":21600,"stale":false},"params":{}},"data":{"totalRecords":188,"pages":19,"currentPage":1,"pageSize":10,"sortOn":"effectiveDate","sortDir":"DESC","records":[{"effectiveDate":1780545600000,"oldSymbol":"EDRVY","oldTierId":21,"oldTierCode":"PL","oldTierName":"Pink Limited","oldCompanyName":"EDP Renovaveis SA","newSymbol":"EDRVY","isCaveatEmptor":false,"newTierId":21,"newTierCode":"PL","newTierName":"Pink Limited","newCompanyName":"EDP Renewables S.A.","caveatEmptor":false},{"effectiveDate":1780545600000,"oldSymbol":"MGIDF","oldTierId":40,"oldTierCode":"EM","oldTierName":"OTC Expert Market","oldCompanyName":"Magnum Goldcorp Inc.","newSymbol":"MGIDF","isCaveatEmptor":false,"newTierId":21,"newTierCode":"PL","newTierName":"Pink Limited","newCompanyName":"ATLANTICO ENERGY METALS CORP.","caveatEmptor":false},{"effectiveDate":1780459200000,"oldSymbol":"LOTT","oldTierId":10,"oldTierCode":"QB","oldTierName":"OTCQB","oldCompanyName":"APPYEA, Inc.","oldSic":"7371 - Custom computer programming services","newSymbol":"LOTT","isCaveatEmptor":false,"newTierId":10,"newTierCode":"QB","newTierName":"OTCQB","newCompanyName":"Techlott Inc.","newSic":"7371 - Custom computer programming services","caveatEmptor":false}],"singular":"Compliance Stat Company Name Change","plural":"Compliance Stat Company Name Changes","empty":false}}}}}}},"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 limited. Retry after the limit reset or include the documented contact/API-key headers.","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":"Service unavailable. The source API or an upstream dependency is temporarily unavailable.","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."}}}}}}}},"description":"Returns company name changes with source-native fields and identifiers.","tags":["Compliance"],"x-source-api":"ofin","x-source-name":"OTC Markets","x-source-upstream":"otcmarkets.com","x-docs-example-url":"https://api.ofin.bluedoor.sh/v1/compliance/company-name-changes","x-docs-example-status":200,"x-docs-captured-at":"2026-06-07T01:34:19.629Z"}},"/v1/compliance/grace-period":{"get":{"summary":"Grace period","operationId":"ofin_get_compliance_grace_period","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer"}},{"name":"pageSize","in":"query","required":false,"schema":{"type":"integer"}},{"name":"refresh","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"x-ofin-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."}],"security":[{},{"ContactEmail":[]},{"BearerAuth":[]},{"OfinApiKey":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ofin_get_compliance_grace_periodResponse"},"examples":{"live":{"summary":"Live response","value":{"meta":{"provider":"otcmarkets","route":"compliance.grace_period","status":"ok","cache":"miss","generated_at":"2026-06-07T01:34:20.060Z","freshness":{"as_of":"2026-06-07T01:34:20.060Z","ttl_seconds":1800,"stale_seconds":21600,"stale":false},"params":{}},"data":{"totalRecords":8,"pages":3,"currentPage":1,"pageSize":3,"sortOn":"startDate","sortDir":"DESC","records":[{"startDate":1780632000000,"endDate":1781841600000,"symbol":"BAKR","isCaveatEmptor":false,"tierId":10,"tierCode":"QB","tierName":"OTCQB","currentClosingPrice":7,"marketCap":13720000,"caveatEmptor":false},{"startDate":1780545600000,"endDate":1781755200000,"symbol":"DRNG","isCaveatEmptor":false,"tierId":21,"tierCode":"PL","tierName":"Pink Limited","currentClosingPrice":0.0002,"marketCap":522351.1092,"caveatEmptor":false},{"startDate":1780372800000,"endDate":1781582400000,"symbol":"LMMY","isCaveatEmptor":false,"tierId":21,"tierCode":"PL","tierName":"Pink Limited","currentClosingPrice":0.36,"marketCap":18900000,"caveatEmptor":false}],"singular":"Compliance Stat Grace Period","plural":"Compliance Stat Grace Periods","empty":false}}}}}}},"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 limited. Retry after the limit reset or include the documented contact/API-key headers.","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":"Service unavailable. The source API or an upstream dependency is temporarily unavailable.","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."}}}}}}}},"description":"Returns grace period with source-native fields and identifiers.","tags":["Compliance"],"x-source-api":"ofin","x-source-name":"OTC Markets","x-source-upstream":"otcmarkets.com","x-docs-example-url":"https://api.ofin.bluedoor.sh/v1/compliance/grace-period?pageSize=3","x-docs-example-status":200,"x-docs-captured-at":"2026-06-07T01:34:20.073Z"}},"/v1/compliance/promotions":{"get":{"summary":"Promotions","operationId":"ofin_get_compliance_promotions","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer"}},{"name":"pageSize","in":"query","required":false,"schema":{"type":"integer"}},{"name":"refresh","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"x-ofin-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."}],"security":[{},{"ContactEmail":[]},{"BearerAuth":[]},{"OfinApiKey":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ofin_get_compliance_promotionsResponse"},"examples":{"live":{"summary":"Live response","value":{"meta":{"provider":"otcmarkets","route":"compliance.promotions","status":"ok","cache":"miss","generated_at":"2026-06-07T01:34:20.481Z","freshness":{"as_of":"2026-06-07T01:34:20.481Z","ttl_seconds":1800,"stale_seconds":21600,"stale":false},"params":{}},"data":{"totalRecords":8,"pages":1,"currentPage":1,"pageSize":10,"sortOn":"latestPromoDate","sortDir":"DESC","records":[{"latestPromoDate":1780632000000,"symbol":"ESAUF","isCaveatEmptor":false,"tierId":10,"tierCode":"QB","tierName":"OTCQB","promoStartDate":1760932800000,"promoDuration":229,"startDatePrice":0.59,"currentClosingPrice":0.3468,"volume":54510,"thirtyDayAvg":141228,"volumeChangePct":-61.4,"caveatEmptor":false},{"latestPromoDate":1780632000000,"symbol":"LFLRF","isCaveatEmptor":false,"tierId":10,"tierCode":"QB","tierName":"OTCQB","promoStartDate":1761278400000,"promoDuration":225,"startDatePrice":0.4216,"currentClosingPrice":0.2922,"volume":294035,"thirtyDayAvg":130044,"volumeChangePct":126.1,"caveatEmptor":false},{"latestPromoDate":1780545600000,"symbol":"SAGMF","isCaveatEmptor":false,"tierId":10,"tierCode":"QB","tierName":"OTCQB","promoStartDate":1762318800000,"promoDuration":212,"startDatePrice":0.34359,"currentClosingPrice":0.40103,"volume":156578,"thirtyDayAvg":215720,"volumeChangePct":-27.42,"caveatEmptor":false}],"singular":"Compliance Stat Promotion Change","plural":"Compliance Stat Promotion Changes","empty":false}}}}}}},"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 limited. Retry after the limit reset or include the documented contact/API-key headers.","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":"Service unavailable. The source API or an upstream dependency is temporarily unavailable.","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."}}}}}}}},"description":"Returns promotions with source-native fields and identifiers.","tags":["Compliance"],"x-source-api":"ofin","x-source-name":"OTC Markets","x-source-upstream":"otcmarkets.com","x-docs-example-url":"https://api.ofin.bluedoor.sh/v1/compliance/promotions?pageSize=3","x-docs-example-status":200,"x-docs-captured-at":"2026-06-07T01:34:20.495Z"}},"/v1/compliance/reverse-splits":{"get":{"summary":"Reverse splits","operationId":"ofin_get_compliance_reverse_splits","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer"}},{"name":"pageSize","in":"query","required":false,"schema":{"type":"integer"}},{"name":"refresh","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"x-ofin-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."}],"security":[{},{"ContactEmail":[]},{"BearerAuth":[]},{"OfinApiKey":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ofin_get_compliance_reverse_splitsResponse"},"examples":{"live":{"summary":"Live response","value":{"meta":{"provider":"otcmarkets","route":"compliance.reverse_splits","status":"ok","cache":"miss","generated_at":"2026-06-07T01:34:20.947Z","freshness":{"as_of":"2026-06-07T01:34:20.947Z","ttl_seconds":1800,"stale_seconds":21600,"stale":false},"params":{}},"data":{"totalRecords":171,"pages":18,"currentPage":1,"pageSize":10,"sortOn":"splitEffectiveDate","sortDir":"DESC","records":[{"splitEffectiveDate":1780632000000,"oldSymbol":"VREOF","oldTierCode":"","oldTierName":"","newSymbol":"VREOD","isCaveatEmptor":false,"newTierId":6,"newTierCode":"QX","newTierName":"OTCQX U.S. Premier","splitRatio":"1:30","closePricePreSplit":0.4192,"marketCapPreSplit":609943260.1248,"caveatEmptor":false},{"splitEffectiveDate":1780632000000,"oldSymbol":"INEOF","oldTierCode":"","oldTierName":"","newSymbol":"INEOD","isCaveatEmptor":false,"newTierId":10,"newTierCode":"QB","newTierName":"OTCQB","splitRatio":"1:10","closePricePreSplit":0.008,"marketCapPreSplit":2597530.944,"caveatEmptor":false},{"splitEffectiveDate":1780632000000,"oldSymbol":"CURLF","oldTierCode":"","oldTierName":"","newSymbol":"CURLD","isCaveatEmptor":false,"newTierId":6,"newTierCode":"QX","newTierName":"OTCQX U.S. Premier","splitRatio":"1:3","closePricePreSplit":3.64,"marketCapPreSplit":2543384097.8,"caveatEmptor":false}],"singular":"Compliance Stat Reverse Split Change","plural":"Compliance Stat Reverse Split Changes","empty":false}}}}}}},"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 limited. Retry after the limit reset or include the documented contact/API-key headers.","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":"Service unavailable. The source API or an upstream dependency is temporarily unavailable.","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."}}}}}}}},"description":"Returns reverse splits with source-native fields and identifiers.","tags":["Compliance"],"x-source-api":"ofin","x-source-name":"OTC Markets","x-source-upstream":"otcmarkets.com","x-docs-example-url":"https://api.ofin.bluedoor.sh/v1/compliance/reverse-splits","x-docs-example-status":200,"x-docs-captured-at":"2026-06-07T01:34:20.960Z"}},"/v1/compliance/shell-status-changes":{"get":{"summary":"Shell status changes","operationId":"ofin_get_compliance_shell_status_changes","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer"}},{"name":"pageSize","in":"query","required":false,"schema":{"type":"integer"}},{"name":"refresh","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"x-ofin-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."}],"security":[{},{"ContactEmail":[]},{"BearerAuth":[]},{"OfinApiKey":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ofin_get_compliance_shell_status_changesResponse"},"examples":{"live":{"summary":"Live response","value":{"meta":{"provider":"otcmarkets","route":"compliance.shell_status_changes","status":"ok","cache":"miss","generated_at":"2026-06-07T01:34:21.375Z","freshness":{"as_of":"2026-06-07T01:34:21.375Z","ttl_seconds":1800,"stale_seconds":21600,"stale":false},"params":{}},"data":{"totalRecords":44,"pages":5,"currentPage":1,"pageSize":10,"sortOn":"shellChangeDate","sortDir":"DESC","records":[{"shellChangeDate":1780632000000,"symbol":"SHMP","isCaveatEmptor":false,"tierId":40,"tierCode":"EM","tierName":"OTC Expert Market","oldValue":"N","newValue":"Y","currentClosingPrice":0.0001,"marketCap":127754.6746,"caveatEmptor":false},{"shellChangeDate":1780545600000,"symbol":"IPRC","isCaveatEmptor":false,"tierId":40,"tierCode":"EM","tierName":"OTC Expert Market","oldValue":"N","newValue":"Y","currentClosingPrice":0.0092,"marketCap":1709200.472,"caveatEmptor":false},{"shellChangeDate":1780545600000,"symbol":"CCLX","isCaveatEmptor":false,"tierId":21,"tierCode":"PL","tierName":"Pink Limited","oldValue":"N","newValue":"Y","currentClosingPrice":0.0038,"marketCap":3798630.024,"caveatEmptor":false}],"singular":"Compliance Stat Shell Status Change","plural":"Compliance Stat Shell Status Changes","empty":false}}}}}}},"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 limited. Retry after the limit reset or include the documented contact/API-key headers.","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":"Service unavailable. The source API or an upstream dependency is temporarily unavailable.","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."}}}}}}}},"description":"Returns shell status changes with source-native fields and identifiers.","tags":["Compliance"],"x-source-api":"ofin","x-source-name":"OTC Markets","x-source-upstream":"otcmarkets.com","x-docs-example-url":"https://api.ofin.bluedoor.sh/v1/compliance/shell-status-changes","x-docs-example-status":200,"x-docs-captured-at":"2026-06-07T01:34:21.389Z"}},"/v1/compliance/suspensions-revocations":{"get":{"summary":"Suspensions and revocations","operationId":"ofin_get_compliance_suspensions_revocations","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer"}},{"name":"pageSize","in":"query","required":false,"schema":{"type":"integer"}},{"name":"refresh","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"x-ofin-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."}],"security":[{},{"ContactEmail":[]},{"BearerAuth":[]},{"OfinApiKey":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ofin_get_compliance_suspensions_revocationsResponse"},"examples":{"live":{"summary":"Live response","value":{"meta":{"provider":"otcmarkets","route":"compliance.suspensions_revocations","status":"ok","cache":"miss","generated_at":"2026-06-07T01:34:21.850Z","freshness":{"as_of":"2026-06-07T01:34:21.850Z","ttl_seconds":1800,"stale_seconds":21600,"stale":false},"params":{}},"data":{"totalRecords":24,"pages":3,"currentPage":1,"pageSize":10,"sortOn":"effectiveDate","sortDir":"DESC","records":[{"effectiveDate":1778817600000,"symbol":"ATCC","isCaveatEmptor":false,"tierId":40,"tierCode":"EM","tierName":"OTC Expert Market","currentStatus":"Revoked","closingPrice":0.0001,"marketCap":723964439.2886,"caveatEmptor":false},{"effectiveDate":1776225600000,"symbol":"MNKA","isCaveatEmptor":false,"tierId":40,"tierCode":"EM","tierName":"OTC Expert Market","currentStatus":"Revoked","closingPrice":0.0001,"marketCap":11203.3909,"caveatEmptor":false},{"effectiveDate":1776225600000,"symbol":"WESC","isCaveatEmptor":true,"tierId":40,"tierCode":"EM","tierName":"OTC Expert Market","currentStatus":"Revoked","closingPrice":0.0001,"marketCap":13008.5501,"caveatEmptor":true}],"singular":"Compliance Stat Suspension Status Change","plural":"Compliance Stat Suspension Status Changes","empty":false}}}}}}},"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 limited. Retry after the limit reset or include the documented contact/API-key headers.","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":"Service unavailable. The source API or an upstream dependency is temporarily unavailable.","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."}}}}}}}},"description":"Returns suspensions and revocations with source-native fields and identifiers.","tags":["Compliance"],"x-source-api":"ofin","x-source-name":"OTC Markets","x-source-upstream":"otcmarkets.com","x-docs-example-url":"https://api.ofin.bluedoor.sh/v1/compliance/suspensions-revocations","x-docs-example-status":200,"x-docs-captured-at":"2026-06-07T01:34:21.870Z"}},"/v1/markets/totals":{"get":{"summary":"Totals","operationId":"ofin_get_markets_totals","parameters":[{"name":"tierGroup","in":"query","required":false,"schema":{"type":"string"}},{"name":"refresh","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"x-ofin-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."}],"security":[{},{"ContactEmail":[]},{"BearerAuth":[]},{"OfinApiKey":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ofin_get_markets_totalsResponse"},"examples":{"live":{"summary":"Live response","value":{"meta":{"provider":"otcmarkets","route":"markets.totals","status":"ok","cache":"miss","generated_at":"2026-06-07T01:34:22.297Z","freshness":{"as_of":"2026-06-07T01:34:22.297Z","ttl_seconds":30,"stale_seconds":360,"stale":false},"params":{}},"data":{"securities":"12,351","dollarVolume":"$4.9B","shareVolume":"2.5B","trades":"544,656"}}}}}}},"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 limited. Retry after the limit reset or include the documented contact/API-key headers.","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":"Service unavailable. The source API or an upstream dependency is temporarily unavailable.","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."}}}}}}}},"description":"Returns totals with source-native market snapshot, mover, or table fields.","tags":["Markets"],"x-source-api":"ofin","x-source-name":"OTC Markets","x-source-upstream":"otcmarkets.com","x-docs-example-url":"https://api.ofin.bluedoor.sh/v1/markets/totals","x-docs-example-status":200,"x-docs-captured-at":"2026-06-07T01:34:22.311Z"}},"/v1/news/{news_id}":{"get":{"summary":"Metadata","operationId":"ofin_get_news_news_id","parameters":[{"name":"news_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"refresh","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"x-ofin-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."}],"security":[{},{"ContactEmail":[]},{"BearerAuth":[]},{"OfinApiKey":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ofin_get_news_news_idResponse"},"examples":{"live":{"summary":"Live response","value":{"meta":{"provider":"otcmarkets","route":"news.item","status":"ok","cache":"miss","generated_at":"2026-06-07T01:34:22.920Z","freshness":{"as_of":"2026-06-07T01:34:22.920Z","ttl_seconds":300,"stale_seconds":3600,"stale":false},"params":{"news_id":"522875"}},"data":{"id":522875,"title":"Mike Lindell Media Corp., OTC: MLMC and Mike Lindell Continue Reaching Goals with the Addition of AskChapter.org/Lindell to the LindellTV Client-Media Relationship Lineup","companyId":626902,"releaseDate":"2026-05-27T07:00:00.000-0400","sourceId":"PRIMZONE","sourceDesc":"GlobeNewswire","typeId":"PR","typeDesc":"Press Release","symbol":"MLMC"}}}}}}},"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 limited. Retry after the limit reset or include the documented contact/API-key headers.","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":"Service unavailable. The source API or an upstream dependency is temporarily unavailable.","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."}}}}}}}},"description":"Returns metadata with headline, timestamp, symbol, and source fields where available.","tags":["News"],"x-source-api":"ofin","x-source-name":"OTC Markets","x-source-upstream":"otcmarkets.com","x-docs-example-url":"https://api.ofin.bluedoor.sh/v1/news/522875","x-docs-example-status":200,"x-docs-captured-at":"2026-06-07T01:34:22.935Z"}},"/v1/reg-sho/dates":{"get":{"summary":"Dates","operationId":"ofin_get_reg_sho_dates","parameters":[{"name":"refresh","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"x-ofin-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."}],"security":[{},{"ContactEmail":[]},{"BearerAuth":[]},{"OfinApiKey":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ofin_get_reg_sho_datesResponse"},"examples":{"live":{"summary":"Live response","value":{"meta":{"provider":"otcmarkets","route":"reg_sho.dates","status":"ok","cache":"miss","generated_at":"2026-06-07T01:34:23.395Z","freshness":{"as_of":"2026-06-07T01:34:23.395Z","ttl_seconds":300,"stale_seconds":3600,"stale":false},"params":{}},"data":[{"id":"1780545600000","value":"Jun 4, 2026"},{"id":"1780459200000","value":"Jun 3, 2026"},{"id":"1780372800000","value":"Jun 2, 2026"}]}}}}}},"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 limited. Retry after the limit reset or include the documented contact/API-key headers.","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":"Service unavailable. The source API or an upstream dependency is temporarily unavailable.","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."}}}}}}}},"description":"Returns dates with source-native fields and identifiers.","tags":["Reg SHO"],"x-source-api":"ofin","x-source-name":"OTC Markets","x-source-upstream":"otcmarkets.com","x-docs-example-url":"https://api.ofin.bluedoor.sh/v1/reg-sho/dates","x-docs-example-status":200,"x-docs-captured-at":"2026-06-07T01:34:23.408Z"}},"/v1/sec-filings/external":{"get":{"summary":"External feed","operationId":"ofin_get_sec_filings_external","parameters":[{"name":"symbol","in":"query","required":false,"schema":{"type":"string"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer"}},{"name":"pageSize","in":"query","required":false,"schema":{"type":"integer"}},{"name":"refresh","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"x-ofin-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."}],"security":[{},{"ContactEmail":[]},{"BearerAuth":[]},{"OfinApiKey":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ofin_get_sec_filings_externalResponse"},"examples":{"live":{"summary":"Live response","value":{"meta":{"provider":"otcmarkets","route":"sec_filings.external","status":"ok","cache":"miss","generated_at":"2026-06-07T01:34:35.115Z","freshness":{"as_of":"2026-06-07T01:34:35.115Z","ttl_seconds":1800,"stale_seconds":21600,"stale":false},"params":{}},"data":{"currentPage":1,"pageSize":25,"total":568170,"pages":22727,"content":[{"id":571080,"securityId":23735,"symbol":"NROM","tierName":"OTCQB","companyId":12824,"companyName":"Noble Roman's, Inc.","type":{"id":"AR","description":"Annual Report"},"status":{"id":"A","description":"Active"},"periodDate":"2025-12-31","createdDate":"2026-06-06T10:38:16.038","lastModifiedDate":"2026-06-06T10:38:23.501","releaseDate":"2026-06-06T10:38:15.951","storageId":"d9a424af-6459-47ef-8108-ab10982c66bb"},{"id":571079,"securityId":420084,"symbol":"BATXF","tierName":"OTCQB","companyId":689077,"companyName":"BATTERY X METALS INC.","title":"News release - English","type":{"id":"SEDR","description":"SEDAR Filing"},"status":{"id":"A","description":"Active"},"periodDate":"2026-06-05","createdDate":"2026-06-05T22:47:29.644","lastModifiedDate":"2026-06-05T22:47:39.036","releaseDate":"2026-06-05T00:00:00.000","source":"SEDAR","fileType":"pdf","storageId":"d7c6c8b2-d758-4c85-981c-ec8db04ba6a0"},{"id":571078,"securityId":413721,"symbol":"MUSLF","tierName":"OTCID","companyId":691280,"companyName":"Promino Nutritional Sciences Inc.","title":"News release - English","type":{"id":"SEDR","description":"SEDAR Filing"},"status":{"id":"A","description":"Active"},"periodDate":"2026-06-05","createdDate":"2026-06-05T22:17:52.112","lastModifiedDate":"2026-06-05T22:18:04.098","releaseDate":"2026-06-05T00:00:00.000","source":"SEDAR","fileType":"pdf","storageId":"a8295a62-1d64-42a2-81cf-ce17d8a6601b"}]}}}}}}},"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 limited. Retry after the limit reset or include the documented contact/API-key headers.","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":"Service unavailable. The source API or an upstream dependency is temporarily unavailable.","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."}}}}}}}},"description":"Returns external feed with source-native fields and identifiers.","tags":["SEC Filings"],"x-source-api":"ofin","x-source-name":"OTC Markets","x-source-upstream":"otcmarkets.com","x-docs-example-url":"https://api.ofin.bluedoor.sh/v1/sec-filings/external","x-docs-example-status":200,"x-docs-captured-at":"2026-06-07T01:34:35.126Z"}},"/v1/securities/search":{"get":{"summary":"Search","operationId":"ofin_get_securities_search","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string"}},{"name":"rows","in":"query","required":false,"schema":{"type":"integer"}},{"name":"start","in":"query","required":false,"schema":{"type":"integer"}},{"name":"refresh","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"x-ofin-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."}],"security":[{},{"ContactEmail":[]},{"BearerAuth":[]},{"OfinApiKey":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ofin_get_securities_searchResponse"},"examples":{"live":{"summary":"Live response","value":{"meta":{"provider":"otcmarkets","route":"securities.search","status":"ok","cache":"edge","generated_at":"2026-06-07T01:34:35.392Z","freshness":{"as_of":"2026-06-07T01:34:35.392Z","ttl_seconds":3600,"stale_seconds":43200,"stale":false},"params":{}},"data":{"responseHeader":{"status":0,"QTime":0},"response":{"numFound":1,"start":0,"docs":[{"symbol":"MLMC","venue":"PS","cusip":"45331T309","tierid":20,"companyname":"Mike Lindell Media Corp.","comp_id":626902,"isFixedIncome":false,"status":"A","security_desc":"No security desc","id":"0951290f-61fe-437f-b5fa-3eaf6f2d6ca8"}]}}}}}}}},"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 limited. Retry after the limit reset or include the documented contact/API-key headers.","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":"Service unavailable. The source API or an upstream dependency is temporarily unavailable.","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."}}}}}}}},"description":"Returns search with source-native security, issuer, quote, or disclosure fields.","tags":["Securities"],"x-source-api":"ofin","x-source-name":"OTC Markets","x-source-upstream":"otcmarkets.com","x-docs-example-url":"https://api.ofin.bluedoor.sh/v1/securities/search?q=MLMC","x-docs-example-status":200,"x-docs-captured-at":"2026-06-07T01:34:35.403Z"}},"/v1/markets/active/closing":{"get":{"summary":"Closing active","operationId":"ofin_get_markets_active_closing","parameters":[{"name":"tierGroup","in":"query","required":false,"schema":{"type":"string"}},{"name":"refresh","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"x-ofin-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."}],"security":[{},{"ContactEmail":[]},{"BearerAuth":[]},{"OfinApiKey":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ofin_get_markets_active_closingResponse"},"examples":{"live":{"summary":"Live response","value":{"meta":{"provider":"otcmarkets","route":"markets.active.closing","status":"ok","cache":"miss","generated_at":"2026-06-07T01:34:35.859Z","freshness":{"as_of":"2026-06-07T01:34:35.859Z","ttl_seconds":30,"stale_seconds":360,"stale":false},"params":{}},"data":{"totalRecords":3693,"pages":370,"currentPage":1,"pageSize":10,"sortOn":"dollarVolume","sortDir":"DESC","records":[{"securityId":423057,"symbol":"GGLAP","companyId":655940,"companyName":"Alphabet Inc.","price":50.997,"priceNet":-1.003,"pctChange":-1.9288461,"shareVolume":9483876,"dollarVolume":483649224.372,"tradeCount":300,"updateCount":358,"tierCode":"PL","isCaveatEmptor":false},{"securityId":125329,"symbol":"TCEHY","companyId":657203,"companyName":"Tencent Holding Ltd.","price":56.95,"priceNet":-1.23,"pctChange":-2.1141286,"shareVolume":3926626,"dollarVolume":223621350.7,"tradeCount":13011,"updateCount":31970,"tierCode":"PL","isCaveatEmptor":false},{"securityId":423056,"symbol":"GGLBP","companyId":655940,"companyName":"Alphabet Inc.","price":50.99,"priceNet":-0.86,"pctChange":-1.6586307,"shareVolume":3918826,"dollarVolume":199820937.74,"tradeCount":176,"updateCount":168,"tierCode":"PL","isCaveatEmptor":false}],"singular":"Trade Stat","plural":"Trade Stats","tierGroupId":"ALL","empty":true}}}}}}},"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 limited. Retry after the limit reset or include the documented contact/API-key headers.","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":"Service unavailable. The source API or an upstream dependency is temporarily unavailable.","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."}}}}}}}},"description":"Returns closing active with source-native market snapshot, mover, or table fields.","tags":["Markets"],"x-source-api":"ofin","x-source-name":"OTC Markets","x-source-upstream":"otcmarkets.com","x-docs-example-url":"https://api.ofin.bluedoor.sh/v1/markets/active/closing","x-docs-example-status":200,"x-docs-captured-at":"2026-06-07T01:34:35.871Z"}},"/v1/markets/active/current":{"get":{"summary":"Current active","operationId":"ofin_get_markets_active_current","parameters":[{"name":"tierGroup","in":"query","required":false,"schema":{"type":"string"}},{"name":"refresh","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"x-ofin-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."}],"security":[{},{"ContactEmail":[]},{"BearerAuth":[]},{"OfinApiKey":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ofin_get_markets_active_currentResponse"},"examples":{"live":{"summary":"Live response","value":{"meta":{"provider":"otcmarkets","route":"markets.active.current","status":"ok","cache":"miss","generated_at":"2026-06-07T01:34:36.327Z","freshness":{"as_of":"2026-06-07T01:34:36.327Z","ttl_seconds":30,"stale_seconds":360,"stale":false},"params":{}},"data":{"totalRecords":0,"pages":0,"currentPage":1,"pageSize":10,"records":[],"isRealTime":false,"bySymbol":true,"empty":true}}}}}}},"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 limited. Retry after the limit reset or include the documented contact/API-key headers.","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":"Service unavailable. The source API or an upstream dependency is temporarily unavailable.","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."}}}}}}}},"description":"Returns current active with source-native market snapshot, mover, or table fields.","tags":["Markets"],"x-source-api":"ofin","x-source-name":"OTC Markets","x-source-upstream":"otcmarkets.com","x-docs-example-url":"https://api.ofin.bluedoor.sh/v1/markets/active/current","x-docs-example-status":200,"x-docs-captured-at":"2026-06-07T01:34:36.340Z"}},"/v1/markets/advancers/closing":{"get":{"summary":"Closing advancers","operationId":"ofin_get_markets_advancers_closing","parameters":[{"name":"tierGroup","in":"query","required":false,"schema":{"type":"string"}},{"name":"refresh","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"x-ofin-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."}],"security":[{},{"ContactEmail":[]},{"BearerAuth":[]},{"OfinApiKey":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ofin_get_markets_advancers_closingResponse"},"examples":{"live":{"summary":"Live response","value":{"meta":{"provider":"otcmarkets","route":"markets.advancers.closing","status":"ok","cache":"miss","generated_at":"2026-06-07T01:34:36.800Z","freshness":{"as_of":"2026-06-07T01:34:36.800Z","ttl_seconds":30,"stale_seconds":360,"stale":false},"params":{}},"data":{"totalRecords":532,"pages":54,"currentPage":1,"pageSize":10,"sortOn":"gain","sortDir":"DESC","records":[{"securityId":421498,"symbol":"PEVM","companyId":693891,"companyName":"Phoenix Motor Inc.","price":3.06,"priceNet":0.99,"pctChange":47.826088,"shareVolume":4443,"dollarVolume":13595.58,"tradeCount":30,"updateCount":147,"tierCode":"PL","isCaveatEmptor":false},{"securityId":420636,"symbol":"BTZRF","companyId":698137,"companyName":"Bitzero Holdings Inc.","price":8.03,"priceNet":2.06,"pctChange":34.505863,"shareVolume":390855,"dollarVolume":3138565.65,"tradeCount":1456,"updateCount":10514,"tierCode":"QB","isCaveatEmptor":false},{"securityId":126497,"symbol":"ERELY","companyId":673788,"companyName":"Eregli Demir Ve Celik Fabrikal","price":9.18,"priceNet":2.33,"pctChange":34.0146,"shareVolume":123,"dollarVolume":1129.14,"tradeCount":1,"updateCount":944,"tierCode":"PL","isCaveatEmptor":false}],"singular":"Trade Stat","plural":"Trade Stats","tierGroupId":"ALL","empty":true}}}}}}},"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 limited. Retry after the limit reset or include the documented contact/API-key headers.","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":"Service unavailable. The source API or an upstream dependency is temporarily unavailable.","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."}}}}}}}},"description":"Returns closing advancers with source-native market snapshot, mover, or table fields.","tags":["Markets"],"x-source-api":"ofin","x-source-name":"OTC Markets","x-source-upstream":"otcmarkets.com","x-docs-example-url":"https://api.ofin.bluedoor.sh/v1/markets/advancers/closing","x-docs-example-status":200,"x-docs-captured-at":"2026-06-07T01:34:36.817Z"}},"/v1/markets/advancers/current":{"get":{"summary":"Current advancers","operationId":"ofin_get_markets_advancers_current","parameters":[{"name":"tierGroup","in":"query","required":false,"schema":{"type":"string"}},{"name":"refresh","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"x-ofin-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."}],"security":[{},{"ContactEmail":[]},{"BearerAuth":[]},{"OfinApiKey":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ofin_get_markets_advancers_currentResponse"},"examples":{"live":{"summary":"Live response","value":{"meta":{"provider":"otcmarkets","route":"markets.advancers.current","status":"ok","cache":"miss","generated_at":"2026-06-07T01:34:37.309Z","freshness":{"as_of":"2026-06-07T01:34:37.309Z","ttl_seconds":30,"stale_seconds":360,"stale":false},"params":{}},"data":{"totalRecords":0,"pages":0,"currentPage":1,"pageSize":10,"records":[],"sortOn":"gain","isRealTime":false,"bySymbol":true,"empty":true}}}}}}},"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 limited. Retry after the limit reset or include the documented contact/API-key headers.","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":"Service unavailable. The source API or an upstream dependency is temporarily unavailable.","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."}}}}}}}},"description":"Returns current advancers with source-native market snapshot, mover, or table fields.","tags":["Markets"],"x-source-api":"ofin","x-source-name":"OTC Markets","x-source-upstream":"otcmarkets.com","x-docs-example-url":"https://api.ofin.bluedoor.sh/v1/markets/advancers/current","x-docs-example-status":200,"x-docs-captured-at":"2026-06-07T01:34:37.322Z"}},"/v1/markets/decliners/closing":{"get":{"summary":"Closing decliners","operationId":"ofin_get_markets_decliners_closing","parameters":[{"name":"tierGroup","in":"query","required":false,"schema":{"type":"string"}},{"name":"refresh","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"x-ofin-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."}],"security":[{},{"ContactEmail":[]},{"BearerAuth":[]},{"OfinApiKey":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ofin_get_markets_decliners_closingResponse"},"examples":{"live":{"summary":"Live response","value":{"meta":{"provider":"otcmarkets","route":"markets.decliners.closing","status":"ok","cache":"miss","generated_at":"2026-06-07T01:34:37.757Z","freshness":{"as_of":"2026-06-07T01:34:37.757Z","ttl_seconds":30,"stale_seconds":360,"stale":false},"params":{}},"data":{"totalRecords":1468,"pages":147,"currentPage":1,"pageSize":10,"sortOn":"loss","sortDir":"ASC","records":[{"securityId":404955,"symbol":"ZCSH","companyId":686699,"companyName":"Grayscale Zcash Trust (ZEC)","price":24,"priceNet":-13.56,"pctChange":-36.102234,"shareVolume":789894,"dollarVolume":18957456,"tradeCount":2869,"updateCount":65117,"tierCode":"QX","isCaveatEmptor":false},{"securityId":215345,"symbol":"TRRVF","companyId":680627,"companyName":"TerraVest Industries Inc.","price":77.9,"priceNet":-36.1,"pctChange":-31.666666,"shareVolume":91013,"dollarVolume":7089912.7,"tradeCount":134,"updateCount":220021,"tierCode":"PL","isCaveatEmptor":false},{"securityId":422952,"symbol":"ELOXD","companyId":623464,"companyName":"Eloxx Pharmaceuticals, Inc.","price":6.2,"priceNet":-2.8,"pctChange":-31.111113,"shareVolume":1048,"dollarVolume":6497.6,"tradeCount":23,"updateCount":16,"tierCode":"PL","isCaveatEmptor":false}],"singular":"Trade Stat","plural":"Trade Stats","tierGroupId":"ALL","empty":true}}}}}}},"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 limited. Retry after the limit reset or include the documented contact/API-key headers.","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":"Service unavailable. The source API or an upstream dependency is temporarily unavailable.","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."}}}}}}}},"description":"Returns closing decliners with source-native market snapshot, mover, or table fields.","tags":["Markets"],"x-source-api":"ofin","x-source-name":"OTC Markets","x-source-upstream":"otcmarkets.com","x-docs-example-url":"https://api.ofin.bluedoor.sh/v1/markets/decliners/closing","x-docs-example-status":200,"x-docs-captured-at":"2026-06-07T01:34:37.769Z"}},"/v1/markets/decliners/current":{"get":{"summary":"Current decliners","operationId":"ofin_get_markets_decliners_current","parameters":[{"name":"tierGroup","in":"query","required":false,"schema":{"type":"string"}},{"name":"refresh","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"x-ofin-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."}],"security":[{},{"ContactEmail":[]},{"BearerAuth":[]},{"OfinApiKey":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ofin_get_markets_decliners_currentResponse"},"examples":{"live":{"summary":"Live response","value":{"meta":{"provider":"otcmarkets","route":"markets.decliners.current","status":"ok","cache":"miss","generated_at":"2026-06-07T01:34:38.213Z","freshness":{"as_of":"2026-06-07T01:34:38.213Z","ttl_seconds":30,"stale_seconds":360,"stale":false},"params":{}},"data":{"totalRecords":0,"pages":0,"currentPage":1,"pageSize":10,"records":[],"sortOn":"loss","isRealTime":false,"bySymbol":true,"empty":true}}}}}}},"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 limited. Retry after the limit reset or include the documented contact/API-key headers.","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":"Service unavailable. The source API or an upstream dependency is temporarily unavailable.","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."}}}}}}}},"description":"Returns current decliners with source-native market snapshot, mover, or table fields.","tags":["Markets"],"x-source-api":"ofin","x-source-name":"OTC Markets","x-source-upstream":"otcmarkets.com","x-docs-example-url":"https://api.ofin.bluedoor.sh/v1/markets/decliners/current","x-docs-example-status":200,"x-docs-captured-at":"2026-06-07T01:34:38.226Z"}},"/v1/markets/overnight/active":{"get":{"summary":"Overnight active","operationId":"ofin_get_markets_overnight_active","parameters":[{"name":"refresh","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"x-ofin-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."}],"security":[{},{"ContactEmail":[]},{"BearerAuth":[]},{"OfinApiKey":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ofin_get_markets_overnight_activeResponse"},"examples":{"live":{"summary":"Live response","value":{"meta":{"provider":"otcmarkets","route":"markets.overnight.active","status":"ok","cache":"miss","generated_at":"2026-06-07T01:34:38.713Z","freshness":{"as_of":"2026-06-07T01:34:38.713Z","ttl_seconds":30,"stale_seconds":360,"stale":false},"params":{}},"data":{"totalRecords":0,"pages":0,"currentPage":1,"pageSize":10,"records":[],"isRealTime":false,"bySymbol":true,"empty":true}}}}}}},"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 limited. Retry after the limit reset or include the documented contact/API-key headers.","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":"Service unavailable. The source API or an upstream dependency is temporarily unavailable.","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."}}}}}}}},"description":"Returns overnight active with source-native market snapshot, mover, or table fields.","tags":["Markets"],"x-source-api":"ofin","x-source-name":"OTC Markets","x-source-upstream":"otcmarkets.com","x-docs-example-url":"https://api.ofin.bluedoor.sh/v1/markets/overnight/active","x-docs-example-status":200,"x-docs-captured-at":"2026-06-07T01:34:38.728Z"}},"/v1/markets/overnight/advancers":{"get":{"summary":"Overnight advancers","operationId":"ofin_get_markets_overnight_advancers","parameters":[{"name":"refresh","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"x-ofin-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."}],"security":[{},{"ContactEmail":[]},{"BearerAuth":[]},{"OfinApiKey":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ofin_get_markets_overnight_advancersResponse"},"examples":{"live":{"summary":"Live response","value":{"meta":{"provider":"otcmarkets","route":"markets.overnight.advancers","status":"ok","cache":"miss","generated_at":"2026-06-07T01:34:39.236Z","freshness":{"as_of":"2026-06-07T01:34:39.236Z","ttl_seconds":30,"stale_seconds":360,"stale":false},"params":{}},"data":{"totalRecords":0,"pages":0,"currentPage":1,"pageSize":10,"records":[],"sortOn":"gain","isRealTime":false,"bySymbol":true,"empty":true}}}}}}},"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 limited. Retry after the limit reset or include the documented contact/API-key headers.","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":"Service unavailable. The source API or an upstream dependency is temporarily unavailable.","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."}}}}}}}},"description":"Returns overnight advancers with source-native market snapshot, mover, or table fields.","tags":["Markets"],"x-source-api":"ofin","x-source-name":"OTC Markets","x-source-upstream":"otcmarkets.com","x-docs-example-url":"https://api.ofin.bluedoor.sh/v1/markets/overnight/advancers","x-docs-example-status":200,"x-docs-captured-at":"2026-06-07T01:34:39.252Z"}},"/v1/markets/overnight/decliners":{"get":{"summary":"Overnight decliners","operationId":"ofin_get_markets_overnight_decliners","parameters":[{"name":"refresh","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"x-ofin-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."}],"security":[{},{"ContactEmail":[]},{"BearerAuth":[]},{"OfinApiKey":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ofin_get_markets_overnight_declinersResponse"},"examples":{"live":{"summary":"Live response","value":{"meta":{"provider":"otcmarkets","route":"markets.overnight.decliners","status":"ok","cache":"miss","generated_at":"2026-06-07T01:34:39.852Z","freshness":{"as_of":"2026-06-07T01:34:39.852Z","ttl_seconds":30,"stale_seconds":360,"stale":false},"params":{}},"data":{"totalRecords":0,"pages":0,"currentPage":1,"pageSize":10,"records":[],"sortOn":"loss","isRealTime":false,"bySymbol":true,"empty":true}}}}}}},"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 limited. Retry after the limit reset or include the documented contact/API-key headers.","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":"Service unavailable. The source API or an upstream dependency is temporarily unavailable.","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."}}}}}}}},"description":"Returns overnight decliners with source-native market snapshot, mover, or table fields.","tags":["Markets"],"x-source-api":"ofin","x-source-name":"OTC Markets","x-source-upstream":"otcmarkets.com","x-docs-example-url":"https://api.ofin.bluedoor.sh/v1/markets/overnight/decliners","x-docs-example-status":200,"x-docs-captured-at":"2026-06-07T01:34:39.863Z"}},"/v1/markets/overnight/snapshot":{"get":{"summary":"Overnight snapshot","operationId":"ofin_get_markets_overnight_snapshot","parameters":[{"name":"refresh","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"x-ofin-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."}],"security":[{},{"ContactEmail":[]},{"BearerAuth":[]},{"OfinApiKey":[]}],"responses":{"200":{"description":"ofin response envelope."},"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 limited. Retry after the limit reset or include the documented contact/API-key headers.","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":"HTTP 502 response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ofin_get_markets_overnight_snapshotResponse"},"examples":{"live":{"summary":"Live HTTP 502 response","value":{"meta":{"provider":"otcmarkets","route":"markets.overnight.snapshot","status":"origin_error","cache":"miss","generated_at":"2026-06-07T01:34:40.349Z","freshness":{"as_of":"2026-06-07T01:34:40.349Z","ttl_seconds":30,"stale_seconds":360,"stale":false},"params":{}},"error":{"code":"http_500","message":"OTCMarkets returned HTTP 500."}}}}}}},"503":{"description":"Service unavailable. The source API or an upstream dependency is temporarily unavailable.","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."}}}}}}}},"description":"Returns overnight snapshot with source-native market snapshot, mover, or table fields.","tags":["Markets"],"x-source-api":"ofin","x-source-name":"OTC Markets","x-source-upstream":"otcmarkets.com","x-docs-example-url":"https://api.ofin.bluedoor.sh/v1/markets/overnight/snapshot","x-docs-example-status":502,"x-docs-captured-at":"2026-06-07T01:34:40.358Z"}},"/v1/markets/snapshot/closing":{"get":{"summary":"Closing snapshot","operationId":"ofin_get_markets_snapshot_closing","parameters":[{"name":"tierGroup","in":"query","required":false,"schema":{"type":"string"}},{"name":"refresh","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"x-ofin-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."}],"security":[{},{"ContactEmail":[]},{"BearerAuth":[]},{"OfinApiKey":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ofin_get_markets_snapshot_closingResponse"},"examples":{"live":{"summary":"Live response","value":{"meta":{"provider":"otcmarkets","route":"markets.snapshot.closing","status":"ok","cache":"miss","generated_at":"2026-06-07T01:34:40.904Z","freshness":{"as_of":"2026-06-07T01:34:40.904Z","ttl_seconds":30,"stale_seconds":360,"stale":false},"params":{}},"data":{"dollarVolume":4737802105,"shareVolume":2453451642,"trades":524212,"advancers":1006,"decliners":2446,"lastUpdated":1780632000000}}}}}}},"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 limited. Retry after the limit reset or include the documented contact/API-key headers.","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":"Service unavailable. The source API or an upstream dependency is temporarily unavailable.","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."}}}}}}}},"description":"Returns closing snapshot with source-native market snapshot, mover, or table fields.","tags":["Markets"],"x-source-api":"ofin","x-source-name":"OTC Markets","x-source-upstream":"otcmarkets.com","x-docs-example-url":"https://api.ofin.bluedoor.sh/v1/markets/snapshot/closing","x-docs-example-status":200,"x-docs-captured-at":"2026-06-07T01:34:40.918Z"}},"/v1/markets/snapshot/current":{"get":{"summary":"Current snapshot","operationId":"ofin_get_markets_snapshot_current","parameters":[{"name":"tierGroup","in":"query","required":false,"schema":{"type":"string"}},{"name":"refresh","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"x-ofin-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."}],"security":[{},{"ContactEmail":[]},{"BearerAuth":[]},{"OfinApiKey":[]}],"responses":{"200":{"description":"ofin response envelope."},"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 limited. Retry after the limit reset or include the documented contact/API-key headers.","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":"HTTP 502 response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ofin_get_markets_snapshot_currentResponse"},"examples":{"live":{"summary":"Live HTTP 502 response","value":{"meta":{"provider":"otcmarkets","route":"markets.snapshot.current","status":"origin_error","cache":"miss","generated_at":"2026-06-07T01:34:41.371Z","freshness":{"as_of":"2026-06-07T01:34:41.371Z","ttl_seconds":30,"stale_seconds":360,"stale":false},"params":{}},"error":{"code":"http_500","message":"OTCMarkets returned HTTP 500."}}}}}}},"503":{"description":"Service unavailable. The source API or an upstream dependency is temporarily unavailable.","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."}}}}}}}},"description":"Returns current snapshot with source-native market snapshot, mover, or table fields.","tags":["Markets"],"x-source-api":"ofin","x-source-name":"OTC Markets","x-source-upstream":"otcmarkets.com","x-docs-example-url":"https://api.ofin.bluedoor.sh/v1/markets/snapshot/current","x-docs-example-status":502,"x-docs-captured-at":"2026-06-07T01:34:41.384Z"}},"/v1/news/{news_id}/content":{"get":{"summary":"Content","operationId":"ofin_get_news_news_id_content","parameters":[{"name":"news_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"refresh","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"x-ofin-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."}],"security":[{},{"ContactEmail":[]},{"BearerAuth":[]},{"OfinApiKey":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ofin_get_news_news_id_contentResponse"},"examples":{"live":{"summary":"Live response","value":{"meta":{"provider":"otcmarkets","route":"news.content","status":"ok","cache":"miss","generated_at":"2026-06-07T01:34:42.188Z","freshness":{"as_of":"2026-06-07T01:34:42.188Z","ttl_seconds":300,"stale_seconds":3600,"stale":false},"params":{"news_id":"522875"}},"data":"<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\r\n<html>\r\n  <head>\r\n    <META http-equiv=\"Content-Type\" content=\"text/html; charset=us-ascii\">\r\n    <title>Mike Lindell Media Corp., OTC: MLMC and Mike Lindell Continue Reaching Goals with the Additio..."}}}}}},"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 limited. Retry after the limit reset or include the documented contact/API-key headers.","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":"Service unavailable. The source API or an upstream dependency is temporarily unavailable.","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."}}}}}}}},"description":"Returns content with headline, timestamp, symbol, and source fields where available.","tags":["News"],"x-source-api":"ofin","x-source-name":"OTC Markets","x-source-upstream":"otcmarkets.com","x-docs-example-url":"https://api.ofin.bluedoor.sh/v1/news/522875/content","x-docs-example-status":200,"x-docs-captured-at":"2026-06-07T01:34:42.201Z"}},"/v1/sec-filings/{filing_id}/pdf":{"get":{"summary":"PDF","operationId":"ofin_get_sec_filings_filing_id_pdf","parameters":[{"name":"filing_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"refresh","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"x-ofin-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."}],"security":[{},{"ContactEmail":[]},{"BearerAuth":[]},{"OfinApiKey":[]}],"responses":{"200":{"description":"Document response.","content":{"application/pdf":{"schema":{"type":"string","format":"binary"},"examples":{"live":{"summary":"Live PDF response","value":"<binary PDF response>"}}}}},"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 limited. Retry after the limit reset or include the documented contact/API-key headers.","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":"Service unavailable. The source API or an upstream dependency is temporarily unavailable.","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."}}}}}}}},"description":"Returns PDF with source-native fields and identifiers.","tags":["SEC Filings"],"x-source-api":"ofin","x-source-name":"OTC Markets","x-source-upstream":"otcmarkets.com","x-docs-example-url":"https://api.ofin.bluedoor.sh/v1/sec-filings/19412735/pdf","x-docs-example-status":200,"x-docs-captured-at":"2026-06-07T01:34:42.538Z"}},"/v1/securities/{symbol}/dividends":{"get":{"summary":"Dividends","operationId":"ofin_get_securities_symbol_dividends","parameters":[{"name":"symbol","in":"path","required":true,"schema":{"type":"string"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer"}},{"name":"pageSize","in":"query","required":false,"schema":{"type":"integer"}},{"name":"refresh","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"x-ofin-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."}],"security":[{},{"ContactEmail":[]},{"BearerAuth":[]},{"OfinApiKey":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ofin_get_securities_symbol_dividendsResponse"},"examples":{"live":{"summary":"Live response","value":{"meta":{"provider":"otcmarkets","route":"security.dividends","status":"ok","cache":"miss","generated_at":"2026-06-07T01:34:42.983Z","freshness":{"as_of":"2026-06-07T01:34:42.983Z","ttl_seconds":1800,"stale_seconds":21600,"stale":false},"params":{"symbol":"AAPL"}},"data":{"totalRecords":0,"pages":0,"currentPage":0,"pageSize":20,"sortOn":"changeDate","sortDir":"DESC","records":[],"singular":"Dividend","plural":"Dividends","isDividend":true,"empty":true}}}}}}},"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 limited. Retry after the limit reset or include the documented contact/API-key headers.","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":"Service unavailable. The source API or an upstream dependency is temporarily unavailable.","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."}}}}}}}},"description":"Returns dividends with source-native security, issuer, quote, or disclosure fields.","tags":["Securities"],"x-source-api":"ofin","x-source-name":"OTC Markets","x-source-upstream":"otcmarkets.com","x-docs-example-url":"https://api.ofin.bluedoor.sh/v1/securities/AAPL/dividends","x-docs-example-status":200,"x-docs-captured-at":"2026-06-07T01:34:42.995Z"}},"/v1/securities/{symbol}/financial-reports":{"get":{"summary":"Financial reports","operationId":"ofin_get_securities_symbol_financial_reports","parameters":[{"name":"symbol","in":"path","required":true,"schema":{"type":"string"}},{"name":"refresh","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"x-ofin-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."}],"security":[{},{"ContactEmail":[]},{"BearerAuth":[]},{"OfinApiKey":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ofin_get_securities_symbol_financial_reportsResponse"},"examples":{"live":{"summary":"Live response","value":{"meta":{"provider":"otcmarkets","route":"security.financial_reports","status":"ok","cache":"miss","generated_at":"2026-06-07T01:34:43.479Z","freshness":{"as_of":"2026-06-07T01:34:43.479Z","ttl_seconds":1800,"stale_seconds":21600,"stale":false},"params":{"symbol":"MLMC"}},"data":{"totalRecords":70,"pages":7,"currentPage":1,"pageSize":10,"sortOn":"releaseDate","sortDir":"DESC","records":[{"id":564470,"companyId":626902,"userId":15451,"title":"Amended","typeId":"QR","statusId":"A","periodDate":1774929600000,"isImmediate":true,"createdDate":1779219255931,"lastModifiedDate":1779898443930,"releaseDate":1779219255895,"canDistribute":true,"wasDistributed":false,"companyName":"Mike Lindell Media Corp.","reportType":"Quarterly Report","name":"Quarterly Report - Amended","statusDescript":"Active","symbol":"MLMC","primarySymbol":"MLMC","isCaveatEmptor":false,"edgarSECFiling":false,"tierCode":"ID"},{"id":562421,"companyId":626902,"userId":15451,"title":"Quarterly Report","typeId":"QR","statusId":"A","periodDate":1774929600000,"isImmediate":true,"createdDate":1778707120552,"lastModifiedDate":1779128929351,"releaseDate":1778707120514,"canDistribute":true,"wasDistributed":false,"companyName":"Mike Lindell Media Corp.","reportType":"Quarterly Report","name":"Quarterly Report","statusDescript":"Active","symbol":"MLMC","primarySymbol":"MLMC","isCaveatEmptor":false,"edgarSECFiling":false,"tierCode":"ID"},{"id":553814,"companyId":626902,"userId":15451,"title":"Management Certification","typeId":"MC","statusId":"A","periodDate":1767157200000,"isImmediate":true,"createdDate":1776882473953,"lastModifiedDate":1776972566584,"releaseDate":1776882473915,"canDistribute":true,"wasDistributed":false,"companyName":"Mike Lindell Media Corp.","reportType":"Management Certification","name":"Management Certification","statusDescript":"Active","symbol":"MLMC","primarySymbol":"MLMC","isCaveatEmptor":false,"edgarSECFiling":false,"tierCode":"ID"}],"singular":"Financial Report","plural":"Financial Reports","companyId":626902,"statusId":"ALL","empty":false}}}}}}},"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 limited. Retry after the limit reset or include the documented contact/API-key headers.","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":"Service unavailable. The source API or an upstream dependency is temporarily unavailable.","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."}}}}}}}},"description":"Returns financial reports with source-native security, issuer, quote, or disclosure fields.","tags":["Securities"],"x-source-api":"ofin","x-source-name":"OTC Markets","x-source-upstream":"otcmarkets.com","x-docs-example-url":"https://api.ofin.bluedoor.sh/v1/securities/MLMC/financial-reports","x-docs-example-status":200,"x-docs-captured-at":"2026-06-07T01:34:43.491Z"}},"/v1/securities/{symbol}/news":{"get":{"summary":"News","operationId":"ofin_get_securities_symbol_news","parameters":[{"name":"symbol","in":"path","required":true,"schema":{"type":"string"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer"}},{"name":"pageSize","in":"query","required":false,"schema":{"type":"integer"}},{"name":"sortOn","in":"query","required":false,"schema":{"type":"string"}},{"name":"sortDir","in":"query","required":false,"schema":{"type":"string"}},{"name":"refresh","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"x-ofin-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."}],"security":[{},{"ContactEmail":[]},{"BearerAuth":[]},{"OfinApiKey":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ofin_get_securities_symbol_newsResponse"},"examples":{"live":{"summary":"Live response","value":{"meta":{"provider":"otcmarkets","route":"security.news","status":"ok","cache":"miss","generated_at":"2026-06-07T01:34:44.150Z","freshness":{"as_of":"2026-06-07T01:34:44.150Z","ttl_seconds":300,"stale_seconds":3600,"stale":false},"params":{"symbol":"MLMC"}},"data":{"totalRecords":64,"pages":7,"currentPage":1,"pageSize":10,"sortOn":"releaseDate","sortDir":"DESC","records":[{"id":522875,"title":"Mike Lindell Media Corp., OTC: MLMC and Mike Lindell Continue Reaching Goals with the Addition of AskChapter.org/Lindell to the LindellTV Client-Media Relationship Lineup","companyId":626902,"releaseDate":"2026-05-27T07:00:00.000-0400","sourceId":"PRIMZONE","sourceDesc":"GlobeNewswire","typeId":"PR","typeDesc":"Press Release"},{"id":521324,"title":"Mike Lindell Media Corp., OTC: MLMC Wishes to Thank God for The Speedy Recovery of MLMC Board Member, Rudolph Rudy Giuliani, America's Mayor is Returning to The Rudy Giuliani Show at 7:00 pm EDT Tonight on LindellTV","companyId":626902,"releaseDate":"2026-05-13T18:37:00.000-0400","sourceId":"PRIMZONE","sourceDesc":"GlobeNewswire","typeId":"PR","typeDesc":"Press Release"},{"id":520031,"title":"Mike Lindell Media Corp. - LindellTV (OTC:) MLMC Announces Another Milestone as Part of the Company Short-Term Goals Strategy by Adding Sentry H20","companyId":626902,"releaseDate":"2026-05-05T07:00:00.000-0400","sourceId":"PRIMZONE","sourceDesc":"GlobeNewswire","typeId":"PR","typeDesc":"Press Release"}],"singular":"News Item","plural":"News Items","empty":false}}}}}}},"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 limited. Retry after the limit reset or include the documented contact/API-key headers.","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":"Service unavailable. The source API or an upstream dependency is temporarily unavailable.","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."}}}}}}}},"description":"Returns news with source-native security, issuer, quote, or disclosure fields.","tags":["Securities"],"x-source-api":"ofin","x-source-name":"OTC Markets","x-source-upstream":"otcmarkets.com","x-docs-example-url":"https://api.ofin.bluedoor.sh/v1/securities/MLMC/news","x-docs-example-status":200,"x-docs-captured-at":"2026-06-07T01:34:44.164Z"}},"/v1/securities/{symbol}/sec-filings":{"get":{"summary":"SEC filings","operationId":"ofin_get_securities_symbol_sec_filings","parameters":[{"name":"symbol","in":"path","required":true,"schema":{"type":"string"}},{"name":"refresh","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"x-ofin-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."}],"security":[{},{"ContactEmail":[]},{"BearerAuth":[]},{"OfinApiKey":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ofin_get_securities_symbol_sec_filingsResponse"},"examples":{"live":{"summary":"Live response","value":{"meta":{"provider":"otcmarkets","route":"security.sec_filings","status":"ok","cache":"miss","generated_at":"2026-06-07T01:34:53.235Z","freshness":{"as_of":"2026-06-07T01:34:53.235Z","ttl_seconds":1800,"stale_seconds":21600,"stale":false},"params":{"symbol":"MLMC"}},"data":{"totalRecords":340,"pages":17,"currentPage":1,"pageSize":20,"sortOn":"receivedDate","sortDir":"DESC","records":[{"exchangeId":8,"id":18230440,"dcn":"0001213900-25-017817","secFileNo":"000-29113","formTypeId":13,"formType":"10-Q","receivedDate":1740680368000,"filedDate":1740632400000,"periodEndDate":1522468800000,"sizeOfFiling":1656450,"hasPdf":false,"hasExcel":true,"filedAsHtml":true,"beenViewed":true,"paperOnly":false,"valid":true,"companyId":71264,"companyName":"MIKE LINDELL MEDIA, CORP","companyCik":"0001099234","filedAsName":"FRANKSPEECH NETWORK, INC.","symbol":"MLMC","tierCode":"ID","guid":"FWOBEuQhrXkukrs-y0W-kqWDgxJ1V3h-rnYasSjdMCKoSjI"},{"exchangeId":8,"id":16626888,"dcn":"9999999997-23-002421","formTypeId":1330,"formType":"SEC STAFF","receivedDate":1683302448000,"filedDate":1683259200000,"sizeOfFiling":6641,"hasPdf":true,"hasExcel":false,"filedAsHtml":false,"beenViewed":true,"paperOnly":false,"valid":true,"companyId":71264,"companyName":"MIKE LINDELL MEDIA, CORP","companyCik":"0001099234","filedAsName":"INCAPTA, INC.","symbol":"MLMC","tierCode":"ID","guid":"FWOBEuQhrXkukrs-y0W-kqWDgxJ1V3h-rnYasSjdMCKoSjI"},{"exchangeId":8,"id":15882085,"dcn":"0001408646-22-000007","formTypeId":66,"formType":"3","receivedDate":1654787846000,"filedDate":1654747200000,"periodEndDate":1641790800000,"sizeOfFiling":4103,"hasPdf":false,"hasExcel":true,"filedAsHtml":false,"beenViewed":true,"paperOnly":false,"valid":true,"companyId":71264,"companyName":"MIKE LINDELL MEDIA, CORP","companyCik":"0001099234","filedAsName":"INCAPTA, INC.","symbol":"MLMC","tierCode":"ID","guid":"FWOBEuQhrXkukrs-y0W-kqWDgxJ1V3h-rnYasSjdMCKoSjI"}],"singular":"Sec Filing","plural":"Sec Filings","empty":false}}}}}}},"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 limited. Retry after the limit reset or include the documented contact/API-key headers.","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":"Service unavailable. The source API or an upstream dependency is temporarily unavailable.","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."}}}}}}}},"description":"Returns SEC filings with source-native security, issuer, quote, or disclosure fields.","tags":["Securities"],"x-source-api":"ofin","x-source-name":"OTC Markets","x-source-upstream":"otcmarkets.com","x-docs-example-url":"https://api.ofin.bluedoor.sh/v1/securities/MLMC/sec-filings","x-docs-example-status":200,"x-docs-captured-at":"2026-06-07T01:34:53.247Z"}},"/v1/securities/{symbol}/splits":{"get":{"summary":"Splits","operationId":"ofin_get_securities_symbol_splits","parameters":[{"name":"symbol","in":"path","required":true,"schema":{"type":"string"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer"}},{"name":"pageSize","in":"query","required":false,"schema":{"type":"integer"}},{"name":"refresh","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"x-ofin-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."}],"security":[{},{"ContactEmail":[]},{"BearerAuth":[]},{"OfinApiKey":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ofin_get_securities_symbol_splitsResponse"},"examples":{"live":{"summary":"Live response","value":{"meta":{"provider":"otcmarkets","route":"security.splits","status":"ok","cache":"miss","generated_at":"2026-06-07T01:34:53.742Z","freshness":{"as_of":"2026-06-07T01:34:53.742Z","ttl_seconds":1800,"stale_seconds":21600,"stale":false},"params":{"symbol":"AAPL"}},"data":{"totalRecords":4,"pages":1,"currentPage":1,"pageSize":25,"sortOn":"changeDate","sortDir":"DESC","records":[{"changeDate":1598846400000,"recordDate":1598241600000,"actionType":"Forward","comments":"shs increased by 4 for 1 split","splitRatio":"4:1","payDate":1598587200000},{"changeDate":1402286400000,"recordDate":1401681600000,"actionType":"Forward","comments":"shs increased by 7 for 1 split","splitRatio":"7:1","payDate":1402027200000},{"changeDate":1109566800000,"recordDate":1108702800000,"actionType":"Forward","comments":"shs increased by 2 for 1 split","splitRatio":"2:1","payDate":1109307600000}],"singular":"Split","plural":"Splits","isDividend":false,"empty":false}}}}}}},"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 limited. Retry after the limit reset or include the documented contact/API-key headers.","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":"Service unavailable. The source API or an upstream dependency is temporarily unavailable.","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."}}}}}}}},"description":"Returns splits with source-native security, issuer, quote, or disclosure fields.","tags":["Securities"],"x-source-api":"ofin","x-source-name":"OTC Markets","x-source-upstream":"otcmarkets.com","x-docs-example-url":"https://api.ofin.bluedoor.sh/v1/securities/AAPL/splits","x-docs-example-status":200,"x-docs-captured-at":"2026-06-07T01:34:53.761Z"}},"/v1/news/external/{news_id}/content":{"get":{"summary":"External content","operationId":"ofin_get_news_external_news_id_content","parameters":[{"name":"news_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"refresh","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"x-ofin-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."}],"security":[{},{"ContactEmail":[]},{"BearerAuth":[]},{"OfinApiKey":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ofin_get_news_external_news_id_contentResponse"},"examples":{"live":{"summary":"Live response","value":{"meta":{"provider":"otcmarkets","route":"news.external_content","status":"ok","cache":"miss","generated_at":"2026-06-07T01:34:54.280Z","freshness":{"as_of":"2026-06-07T01:34:54.280Z","ttl_seconds":300,"stale_seconds":3600,"stale":false},"params":{"news_id":"3458891"}},"data":"<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\r\n<html>\r\n  <head>\r\n    <META http-equiv=\"Content-Type\" content=\"text/html; charset=us-ascii\">\r\n    <title>Mike Lindell Media Corp. - LindellTV (OTC:) MLMC Announces Another Milestone as Part of the C..."}}}}}},"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 limited. Retry after the limit reset or include the documented contact/API-key headers.","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":"Service unavailable. The source API or an upstream dependency is temporarily unavailable.","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."}}}}}}}},"description":"Returns external content with headline, timestamp, symbol, and source fields where available.","tags":["News"],"x-source-api":"ofin","x-source-name":"OTC Markets","x-source-upstream":"otcmarkets.com","x-docs-example-url":"https://api.ofin.bluedoor.sh/v1/news/external/3458891/content","x-docs-example-status":200,"x-docs-captured-at":"2026-06-07T01:34:54.292Z"}},"/v1/securities/{symbol}/financials/balance-sheet":{"get":{"summary":"Balance sheet","operationId":"ofin_get_securities_symbol_financials_balance_sheet","parameters":[{"name":"symbol","in":"path","required":true,"schema":{"type":"string"}},{"name":"duration","in":"query","required":false,"schema":{"type":"string"}},{"name":"pageSize","in":"query","required":false,"schema":{"type":"integer"}},{"name":"refresh","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"x-ofin-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."}],"security":[{},{"ContactEmail":[]},{"BearerAuth":[]},{"OfinApiKey":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ofin_get_securities_symbol_financials_balance_sheetResponse"},"examples":{"live":{"summary":"Live response","value":{"meta":{"provider":"otcmarkets","route":"security.financials.balance_sheet","status":"ok","cache":"edge","generated_at":"2026-06-07T01:34:54.557Z","freshness":{"as_of":"2026-06-07T01:34:54.557Z","ttl_seconds":21600,"stale_seconds":259200,"stale":false},"params":{"symbol":"MLMC"}},"data":[{"preliminary":false,"periodEndDate":"2025-12-31 00:00:00","cashAndCashEquivalents":"35","netReceivables":"505","otherCurrentAssets":"0","totalCurrentAssets":"541","propertyPlantAndEquipment":"249","totalAssets":"2,126","accountPayable":"6,374","totalCurrentLiabilities":"6,374","otherLiabilitiesWithContingencies":"9,839","totalLiabilities":"16,214","commonStock":"39","retainedEarnings":"(15,323)","capitalSurplus":"605","totalStockholderEquity":"(14,678)","totalLiablitiesAndStockholderEquity":"1,536","netTangibleAssets":"(15,424)"},{"preliminary":false,"periodEndDate":"2024-12-31 00:00:00","cashAndCashEquivalents":"48","netReceivables":"275","otherCurrentAssets":"0","totalCurrentAssets":"324","propertyPlantAndEquipment":"253","totalAssets":"1,916","accountPayable":"4,574","totalCurrentLiabilities":"4,574","otherLiabilitiesWithContingencies":"12,018","totalLiabilities":"16,592","commonStock":"38","retainedEarnings":"(15,178)","capitalSurplus":"463","totalStockholderEquity":"(14,676)","totalLiablitiesAndStockholderEquity":"1,916","netTangibleAssets":"(16,014)"},{"preliminary":false,"periodEndDate":"2023-12-31 00:00:00","cashAndCashEquivalents":"1","otherCurrentAssets":"162","totalCurrentAssets":"163","propertyPlantAndEquipment":"121","totalAssets":"2,722","accountPayable":"1,507","totalCurrentLiabilities":"1,507","otherLiabilitiesWithContingencies":"11,489","totalLiabilities":"12,997","commonStock":"835","retainedEarnings":"(11,485)","capitalSurplus":"375","totalStockholderEquity":"(10,275)","totalLiablitiesAndStockholderEquity":"2,722","netTangibleAssets":"(12,712)"}]}}}}}},"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 limited. Retry after the limit reset or include the documented contact/API-key headers.","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":"Service unavailable. The source API or an upstream dependency is temporarily unavailable.","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."}}}}}}}},"description":"Returns balance sheet with source-native security, issuer, quote, or disclosure fields.","tags":["Securities"],"x-source-api":"ofin","x-source-name":"OTC Markets","x-source-upstream":"otcmarkets.com","x-docs-example-url":"https://api.ofin.bluedoor.sh/v1/securities/MLMC/financials/balance-sheet","x-docs-example-status":200,"x-docs-captured-at":"2026-06-07T01:34:54.567Z"}},"/v1/securities/{symbol}/financials/cash-flow":{"get":{"summary":"Cash flow","operationId":"ofin_get_securities_symbol_financials_cash_flow","parameters":[{"name":"symbol","in":"path","required":true,"schema":{"type":"string"}},{"name":"duration","in":"query","required":false,"schema":{"type":"string"}},{"name":"pageSize","in":"query","required":false,"schema":{"type":"integer"}},{"name":"refresh","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"x-ofin-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."}],"security":[{},{"ContactEmail":[]},{"BearerAuth":[]},{"OfinApiKey":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ofin_get_securities_symbol_financials_cash_flowResponse"},"examples":{"live":{"summary":"Live response","value":{"meta":{"provider":"otcmarkets","route":"security.financials.cash_flow","status":"ok","cache":"edge","generated_at":"2026-06-07T01:34:54.825Z","freshness":{"as_of":"2026-06-07T01:34:54.825Z","ttl_seconds":21600,"stale_seconds":259200,"stale":false},"params":{"symbol":"AAPL"}},"data":[{"preliminary":false,"periodEndDate":"2025-09-27 00:00:00","netIncome":"112,010,000","depreciation":"11,698,000","adjustmentsToNetIncome":"12,774,000","changesInLiabilities":"(10,174,000)","changesInAccountReceivables":"(6,682,000)","changesInInventories":"1,400,000","changesInOtherOperatingActivities":"(15,173,000)","totalCashFlowFromOperatingActivities":"111,482,000","capitalExpenditures":"(12,715,000)","investments":"29,390,000","otherCashFlowFromInvestingActivities":"(1,480,000)","totalCashFlowFromInvestingActivities":"15,195,000","dividendsPaid":"(15,421,000)","salePurchaseOfStock":"(90,711,000)","netBorrowings":"(8,483,000)","otherCashFlowsFromFinancingActivities":"(6,071,000)","totalCashFlowsFromFinancingActivities":"(120,686,000)","changeInCashAndEquities":"5,991,000"},{"preliminary":false,"periodEndDate":"2024-09-28 00:00:00","netIncome":"93,736,000","depreciation":"11,445,000","adjustmentsToNetIncome":"9,422,000","changesInLiabilities":"21,572,000","changesInAccountReceivables":"(3,788,000)","changesInInventories":"(1,046,000)","changesInOtherOperatingActivities":"(19,277,000)","totalCashFlowFromOperatingActivities":"118,254,000","capitalExpenditures":"(9,447,000)","investments":"13,690,000","otherCashFlowFromInvestingActivities":"(1,308,000)","totalCashFlowFromInvestingActivities":"2,935,000","dividendsPaid":"(15,234,000)","salePurchaseOfStock":"(94,949,000)","netBorrowings":"(5,998,000)","otherCashFlowsFromFinancingActivities":"(5,802,000)","totalCashFlowsFromFinancingActivities":"(121,983,000)","changeInCashAndEquities":"(794,000)"},{"preliminary":false,"periodEndDate":"2023-09-30 00:00:00","netIncome":"96,995,000","depreciation":"11,519,000","adjustmentsToNetIncome":"8,606,000","changesInLiabilities":"1,142,000","changesInAccountReceivables":"(1,688,000)","changesInInventories":"(1,618,000)","changesInOtherOperatingActivities":"(6,448,000)","totalCashFlowFromOperatingActivities":"110,543,000","capitalExpenditures":"(10,959,000)","investments":"16,001,000","otherCashFlowFromInvestingActivities":"(1,337,000)","totalCashFlowFromInvestingActivities":"3,705,000","dividendsPaid":"(15,025,000)","salePurchaseOfStock":"(77,550,000)","netBorrowings":"(9,901,000)","otherCashFlowsFromFinancingActivities":"(6,012,000)","totalCashFlowsFromFinancingActivities":"(108,488,000)","changeInCashAndEquities":"5,760,000"}]}}}}}},"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 limited. Retry after the limit reset or include the documented contact/API-key headers.","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":"Service unavailable. The source API or an upstream dependency is temporarily unavailable.","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."}}}}}}}},"description":"Returns cash flow with source-native security, issuer, quote, or disclosure fields.","tags":["Securities"],"x-source-api":"ofin","x-source-name":"OTC Markets","x-source-upstream":"otcmarkets.com","x-docs-example-url":"https://api.ofin.bluedoor.sh/v1/securities/AAPL/financials/cash-flow","x-docs-example-status":200,"x-docs-captured-at":"2026-06-07T01:34:54.837Z"}},"/v1/securities/{symbol}/financials/income-statement":{"get":{"summary":"Income statement","operationId":"ofin_get_securities_symbol_financials_income_statement","parameters":[{"name":"symbol","in":"path","required":true,"schema":{"type":"string"}},{"name":"duration","in":"query","required":false,"schema":{"type":"string"}},{"name":"pageSize","in":"query","required":false,"schema":{"type":"integer"}},{"name":"refresh","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"x-ofin-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."}],"security":[{},{"ContactEmail":[]},{"BearerAuth":[]},{"OfinApiKey":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ofin_get_securities_symbol_financials_income_statementResponse"},"examples":{"live":{"summary":"Live response","value":{"meta":{"provider":"otcmarkets","route":"security.financials.income_statement","status":"ok","cache":"edge","generated_at":"2026-06-07T01:34:55.095Z","freshness":{"as_of":"2026-06-07T01:34:55.095Z","ttl_seconds":21600,"stale_seconds":259200,"stale":false},"params":{"symbol":"MLMC"}},"data":[{"preliminary":false,"periodEndDate":"2025-12-31 00:00:00","totalRevenue":"3,209","costOfRevenue":"67","grossProfit":"3,141","salesGeneralAndAdmin":"3,430","nonRecurringItems":"0","otherExpenses":"0","totalExpenses":"3,430","operatingIncome":"(288)","additionalIncomeExpenseItems":"(1,707)","earningsBeforeInterestTaxes":"(288)","earningsBeforeTax":"(1,909)","netIncomeOperations":"(1,909)","netIncome":"(1,909)","earningsperShare":"-0.05","priceEarnings":"-33.6","grossMargin":"0.979","operatingMargin":"-0.09"},{"preliminary":false,"periodEndDate":"2024-12-31 00:00:00","totalRevenue":"5,973","costOfRevenue":"0","grossProfit":"5,973","salesGeneralAndAdmin":"8,137","nonRecurringItems":"0","otherExpenses":"20","totalExpenses":"8,157","operatingIncome":"(2,184)","additionalIncomeExpenseItems":"(476)","earningsBeforeInterestTaxes":"(2,184)","earningsBeforeTax":"(3,718)","netIncomeOperations":"(3,718)","netIncome":"(3,718)","earningsperShare":"-0.1","grossMargin":"1","operatingMargin":"-0.3656"},{"preliminary":false,"periodEndDate":"2023-12-31 00:00:00","totalRevenue":"3,438","grossProfit":"3,438","salesGeneralAndAdmin":"6,040","nonRecurringItems":"350","otherExpenses":"22","totalExpenses":"6,412","operatingIncome":"(2,974)","additionalIncomeExpenseItems":"0","earningsBeforeInterestTaxes":"(2,974)","earningsBeforeTax":"(2,974)","netIncomeOperations":"(2,974)","netIncome":"(2,974)","earningsperShare":"-0.1","grossMargin":"1","operatingMargin":"-0.8649"}]}}}}}},"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 limited. Retry after the limit reset or include the documented contact/API-key headers.","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":"Service unavailable. The source API or an upstream dependency is temporarily unavailable.","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."}}}}}}}},"description":"Returns income statement with source-native security, issuer, quote, or disclosure fields.","tags":["Securities"],"x-source-api":"ofin","x-source-name":"OTC Markets","x-source-upstream":"otcmarkets.com","x-docs-example-url":"https://api.ofin.bluedoor.sh/v1/securities/MLMC/financials/income-statement","x-docs-example-status":200,"x-docs-captured-at":"2026-06-07T01:34:55.105Z"}},"/v1/securities/{symbol}/insiders/external":{"get":{"summary":"External insiders","operationId":"ofin_get_securities_symbol_insiders_external","parameters":[{"name":"symbol","in":"path","required":true,"schema":{"type":"string"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer"}},{"name":"pageSize","in":"query","required":false,"schema":{"type":"integer"}},{"name":"refresh","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"x-ofin-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."}],"security":[{},{"ContactEmail":[]},{"BearerAuth":[]},{"OfinApiKey":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ofin_get_securities_symbol_insiders_externalResponse"},"examples":{"live":{"summary":"Live response","value":{"meta":{"provider":"otcmarkets","route":"security.insiders.external","status":"ok","cache":"miss","generated_at":"2026-06-07T01:34:55.512Z","freshness":{"as_of":"2026-06-07T01:34:55.512Z","ttl_seconds":1800,"stale_seconds":21600,"stale":false},"params":{"symbol":"AAPL"}},"data":{"totalRecords":104,"pages":5,"currentPage":1,"pageSize":25,"records":[{"id":5276719,"currencyId":11,"filerId":420119,"filerName":"LEVINSON ARTHUR D","formTypeId":4,"issueId":472683,"issueName":"APPLE INC.","typeId":4,"relationshipId":12,"transDate":1779854400000,"priceFrom":0,"numberOfShares":65000,"amountOwned":3699576,"ownershipTypeId":0,"dcn":"0001140361-26-023363","filingId":19497947,"typeName":"Disposition (Non Open Market)","relationshipName":"Director","ownershipTypeName":"direct"},{"id":5276718,"currencyId":11,"filerId":420119,"filerName":"LEVINSON ARTHUR D","formTypeId":4,"issueId":472683,"issueName":"APPLE INC.","typeId":2,"relationshipId":12,"transDate":1779854400000,"priceFrom":311.02,"numberOfShares":50000,"amountOwned":3764576,"ownershipTypeId":0,"dcn":"0001140361-26-023363","filingId":19497947,"typeName":"Sell","relationshipName":"Director","ownershipTypeName":"direct"},{"id":5262572,"currencyId":11,"filerId":1362059,"filerName":"BORDERS BEN","formTypeId":4,"issueId":472683,"issueName":"APPLE INC.","typeId":9,"relationshipId":19,"transDate":1778212800000,"priceFrom":290,"numberOfShares":1274,"amountOwned":38713,"ownershipTypeId":0,"dcn":"0001140361-26-020871","filingId":19437036,"typeName":"Automatic Sell","relationshipName":"Officer","ownershipTypeName":"direct"}],"sortOn":"1","sortDir":"D","key":"AAPL","plural":"Insider Transactions","singular":"Insider Transaction","empty":false}}}}}}},"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 limited. Retry after the limit reset or include the documented contact/API-key headers.","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":"Service unavailable. The source API or an upstream dependency is temporarily unavailable.","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."}}}}}}}},"description":"Returns external insiders with source-native security, issuer, quote, or disclosure fields.","tags":["Securities"],"x-source-api":"ofin","x-source-name":"OTC Markets","x-source-upstream":"otcmarkets.com","x-docs-example-url":"https://api.ofin.bluedoor.sh/v1/securities/AAPL/insiders/external","x-docs-example-status":200,"x-docs-captured-at":"2026-06-07T01:34:55.527Z"}},"/v1/securities/{symbol}/insiders/otc":{"get":{"summary":"OTC insiders","operationId":"ofin_get_securities_symbol_insiders_otc","parameters":[{"name":"symbol","in":"path","required":true,"schema":{"type":"string"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer"}},{"name":"pageSize","in":"query","required":false,"schema":{"type":"integer"}},{"name":"refresh","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"x-ofin-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."}],"security":[{},{"ContactEmail":[]},{"BearerAuth":[]},{"OfinApiKey":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ofin_get_securities_symbol_insiders_otcResponse"},"examples":{"live":{"summary":"Live response","value":{"meta":{"provider":"otcmarkets","route":"security.insiders.otc","status":"ok","cache":"miss","generated_at":"2026-06-07T01:34:56.013Z","freshness":{"as_of":"2026-06-07T01:34:56.013Z","ttl_seconds":1800,"stale_seconds":21600,"stale":false},"params":{"symbol":"AAPL"}},"data":{"totalRecords":0,"pages":0,"currentPage":1,"pageSize":25,"sortOn":"releaseDate","sortDir":"DESC","singular":"News & Financial Reports","plural":"News & Financial Report","empty":true}}}}}}},"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 limited. Retry after the limit reset or include the documented contact/API-key headers.","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":"Service unavailable. The source API or an upstream dependency is temporarily unavailable.","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."}}}}}}}},"description":"Returns OTC insiders with source-native security, issuer, quote, or disclosure fields.","tags":["Securities"],"x-source-api":"ofin","x-source-name":"OTC Markets","x-source-upstream":"otcmarkets.com","x-docs-example-url":"https://api.ofin.bluedoor.sh/v1/securities/AAPL/insiders/otc","x-docs-example-status":200,"x-docs-captured-at":"2026-06-07T01:34:56.026Z"}},"/v1/securities/{symbol}/insiders/summary":{"get":{"summary":"Insider summary","operationId":"ofin_get_securities_symbol_insiders_summary","parameters":[{"name":"symbol","in":"path","required":true,"schema":{"type":"string"}},{"name":"refresh","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"x-ofin-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."}],"security":[{},{"ContactEmail":[]},{"BearerAuth":[]},{"OfinApiKey":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ofin_get_securities_symbol_insiders_summaryResponse"},"examples":{"live":{"summary":"Live response","value":{"meta":{"provider":"otcmarkets","route":"security.insiders.summary","status":"ok","cache":"miss","generated_at":"2026-06-07T01:34:56.492Z","freshness":{"as_of":"2026-06-07T01:34:56.492Z","ttl_seconds":1800,"stale_seconds":21600,"stale":false},"params":{"symbol":"MLMC"}},"data":{"issueId":null,"issueName":null,"symbol":"MLMC","numberOfTransactions":0,"grossShares":0,"netShares":0,"numberOfBuys":0,"sharesBought":0,"numberOfSells":0,"sharesSold":0,"periodName":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 limited. Retry after the limit reset or include the documented contact/API-key headers.","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":"Service unavailable. The source API or an upstream dependency is temporarily unavailable.","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."}}}}}}}},"description":"Returns insider summary with source-native security, issuer, quote, or disclosure fields.","tags":["Securities"],"x-source-api":"ofin","x-source-name":"OTC Markets","x-source-upstream":"otcmarkets.com","x-docs-example-url":"https://api.ofin.bluedoor.sh/v1/securities/MLMC/insiders/summary","x-docs-example-status":200,"x-docs-captured-at":"2026-06-07T01:34:56.505Z"}},"/v1/securities/{symbol}/news/external":{"get":{"summary":"External news","operationId":"ofin_get_securities_symbol_news_external","parameters":[{"name":"symbol","in":"path","required":true,"schema":{"type":"string"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer"}},{"name":"pageSize","in":"query","required":false,"schema":{"type":"integer"}},{"name":"refresh","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"x-ofin-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."}],"security":[{},{"ContactEmail":[]},{"BearerAuth":[]},{"OfinApiKey":[]}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ofin_get_securities_symbol_news_externalResponse"},"examples":{"live":{"summary":"Live response","value":{"meta":{"provider":"otcmarkets","route":"security.news.external","status":"ok","cache":"miss","generated_at":"2026-06-07T01:34:57.031Z","freshness":{"as_of":"2026-06-07T01:34:57.031Z","ttl_seconds":300,"stale_seconds":3600,"stale":false},"params":{"symbol":"AAPL"}},"data":{"totalRecords":9,"pages":1,"currentPage":1,"pageSize":10,"sortOn":"1","sortDir":"D","records":[{"id":3470538,"title":"Apple unveils new accessibility features, and updates powered by Apple Intelligence","releaseDate":"2026-05-19T08:00:00.000-0400","sourceDesc":"BUSINESS WIRE"},{"id":3456512,"title":"Apple reports second quarter results","releaseDate":"2026-04-30T16:30:00.000-0400","sourceDesc":"BUSINESS WIRE"},{"id":3456200,"title":"iPhone Fold Is the Wrong Way to Read Apple's Foldable Strategy","releaseDate":"2026-04-30T03:00:00.000-0400","sourceDesc":"24-7 Press Releases"}],"singular":"News Item","plural":"News Items","empty":false}}}}}}},"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 limited. Retry after the limit reset or include the documented contact/API-key headers.","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":"Service unavailable. The source API or an upstream dependency is temporarily unavailable.","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."}}}}}}}},"description":"Returns external news with source-native security, issuer, quote, or disclosure fields.","tags":["Securities"],"x-source-api":"ofin","x-source-name":"OTC Markets","x-source-upstream":"otcmarkets.com","x-docs-example-url":"https://api.ofin.bluedoor.sh/v1/securities/AAPL/news/external","x-docs-example-status":200,"x-docs-captured-at":"2026-06-07T01:34:57.050Z"}}},"components":{"securitySchemes":{"ContactEmail":{"type":"apiKey","in":"header","name":"X-Ofin-Contact"},"BearerAuth":{"type":"http","scheme":"bearer","description":"Manual API keys are available by emailing sam@bluedoor.sh."},"OfinApiKey":{"type":"apiKey","in":"header","name":"X-Ofin-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}}},"ofin_get_reg_shoResponse":{"type":"object","additionalProperties":true,"properties":{"meta":{"type":"object","additionalProperties":true,"properties":{"provider":{"type":"string"},"route":{"type":"string"},"status":{"type":"string"},"cache":{"type":"string"},"generated_at":{"type":"string"},"freshness":{"type":"object","additionalProperties":true,"properties":{"as_of":{"type":"string"},"ttl_seconds":{"type":"integer"},"stale_seconds":{"type":"integer"},"stale":{"type":"boolean"}},"required":["as_of","stale","stale_seconds","ttl_seconds"]},"params":{"type":"object","additionalProperties":true,"properties":{}}},"required":["cache","freshness","generated_at","params","provider","route","status"]},"data":{"type":"object","additionalProperties":true,"properties":{"totalRecords":{"type":"integer"},"pages":{"type":"integer"},"currentPage":{"type":"integer"},"pageSize":{"type":"integer"},"sortOn":{"type":"string"},"sortDir":{"type":"string"},"records":{"type":"array","items":{"type":"object","additionalProperties":true,"properties":{"positionDate":{"type":"integer"},"securityId":{"type":"integer"},"securityName":{"type":"string"},"symbol":{"type":"string"},"isCaveatEmptor":{"type":"boolean"},"venue":{"type":"string"},"regShoFlag":{"type":"boolean"},"isRule4320":{"type":"boolean"},"tierId":{"type":"integer"},"tierCode":{"type":"string"},"tierName":{"type":"string"},"rule4320":{"type":"boolean"},"tierGroupId":{"type":"string"}},"required":["isCaveatEmptor","isRule4320","positionDate","regShoFlag","rule4320","securityId","securityName","symbol","tierCode","tierGroupId","tierId","tierName","venue"]}},"singular":{"type":"string"},"plural":{"type":"string"},"empty":{"type":"boolean"}},"required":["currentPage","empty","pageSize","pages","plural","records","singular","sortDir","sortOn","totalRecords"]}},"required":["data","meta"]},"ofin_get_sec_filingsResponse":{"type":"object","additionalProperties":true,"properties":{"meta":{"type":"object","additionalProperties":true,"properties":{"provider":{"type":"string"},"route":{"type":"string"},"status":{"type":"string"},"cache":{"type":"string"},"generated_at":{"type":"string"},"freshness":{"type":"object","additionalProperties":true,"properties":{"as_of":{"type":"string"},"ttl_seconds":{"type":"integer"},"stale_seconds":{"type":"integer"},"stale":{"type":"boolean"}},"required":["as_of","stale","stale_seconds","ttl_seconds"]},"params":{"type":"object","additionalProperties":true,"properties":{}}},"required":["cache","freshness","generated_at","params","provider","route","status"]},"data":{"type":"object","additionalProperties":true,"properties":{"totalRecords":{"type":"integer"},"pages":{"type":"integer"},"currentPage":{"type":"integer"},"pageSize":{"type":"integer"},"sortOn":{"type":"string"},"sortDir":{"type":"string"},"records":{"type":"array","items":{"type":"object","additionalProperties":true,"properties":{"exchangeId":{"type":"integer"},"id":{"type":"integer"},"dcn":{"type":"string"},"secFileNo":{"type":"string"},"formTypeId":{"type":"integer"},"formType":{"type":"string"},"receivedDate":{"type":"integer"},"filedDate":{"type":"integer"},"periodEndDate":{"type":"integer"},"sizeOfFiling":{"type":"integer"},"hasPdf":{"type":"boolean"},"hasExcel":{"type":"boolean"},"filedAsHtml":{"type":"boolean"},"beenViewed":{"type":"boolean"},"paperOnly":{"type":"boolean"},"valid":{"type":"boolean"},"companyId":{"type":"integer"},"companyName":{"type":"string"},"companyCik":{"type":"string"},"symbol":{"type":"string"},"tierCode":{"type":"string"},"guid":{"type":"string"}},"required":["beenViewed","companyCik","companyId","companyName","dcn","exchangeId","filedAsHtml","filedDate","formType","formTypeId","guid","hasExcel","hasPdf","id","paperOnly","periodEndDate","receivedDate","secFileNo","sizeOfFiling","symbol","tierCode","valid"]}},"singular":{"type":"string"},"plural":{"type":"string"},"empty":{"type":"boolean"}},"required":["currentPage","empty","pageSize","pages","plural","records","singular","sortDir","sortOn","totalRecords"]}},"required":["data","meta"]},"ofin_get_securitiesResponse":{"type":"object","additionalProperties":true,"properties":{"meta":{"type":"object","additionalProperties":true,"properties":{"provider":{"type":"string"},"route":{"type":"string"},"status":{"type":"string"},"cache":{"type":"string"},"generated_at":{"type":"string"},"freshness":{"type":"object","additionalProperties":true,"properties":{"as_of":{"type":"string"},"ttl_seconds":{"type":"integer"},"stale_seconds":{"type":"integer"},"stale":{"type":"boolean"}},"required":["as_of","stale","stale_seconds","ttl_seconds"]},"params":{"type":"object","additionalProperties":true,"properties":{}}},"required":["cache","freshness","generated_at","params","provider","route","status"]},"data":{"type":"object","additionalProperties":true,"properties":{"totalRecords":{"type":"integer"},"pages":{"type":"integer"},"currentPage":{"type":"integer"},"pageSize":{"type":"integer"},"records":{"type":"array","items":{"type":"object","additionalProperties":true,"properties":{"symbol":{"type":"string"},"tierCode":{"type":"string"},"tierName":{"type":"string"},"isCaveatEmptor":{"type":"boolean"},"marketCap":{"type":"number"},"companyName":{"type":"string"},"industry":{"type":"string"},"country":{"type":"string"},"joined":{"type":"integer"}},"required":["companyName","country","industry","isCaveatEmptor","joined","marketCap","symbol","tierCode","tierName"]}},"singular":{"type":"string"},"plural":{"type":"string"},"empty":{"type":"boolean"}},"required":["currentPage","empty","pageSize","pages","plural","records","singular","totalRecords"]}},"required":["data","meta"]},"ofin_get_compliance_caveat_emptorResponse":{"type":"object","additionalProperties":true,"properties":{"meta":{"type":"object","additionalProperties":true,"properties":{"provider":{"type":"string"},"route":{"type":"string"},"status":{"type":"string"},"cache":{"type":"string"},"generated_at":{"type":"string"},"freshness":{"type":"object","additionalProperties":true,"properties":{"as_of":{"type":"string"},"ttl_seconds":{"type":"integer"},"stale_seconds":{"type":"integer"},"stale":{"type":"boolean"}},"required":["as_of","stale","stale_seconds","ttl_seconds"]},"params":{"type":"object","additionalProperties":true,"properties":{}}},"required":["cache","freshness","generated_at","params","provider","route","status"]},"data":{"type":"object","additionalProperties":true,"properties":{"totalRecords":{"type":"integer"},"pages":{"type":"integer"},"currentPage":{"type":"integer"},"pageSize":{"type":"integer"},"sortOn":{"type":"string"},"sortDir":{"type":"string"},"records":{"type":"array","items":{"type":"object","additionalProperties":true,"properties":{"changeDate":{"type":"integer"},"symbol":{"type":"string"},"isCaveatEmptor":{"type":"boolean"},"tierId":{"type":"integer"},"tierCode":{"type":"string"},"tierName":{"type":"string"},"oldValue":{"type":"string"},"newValue":{"type":"string"},"closingPrice":{"type":"number"},"marketCap":{"oneOf":[{"type":"integer"},{"type":"number"}]},"caveatEmptor":{"type":"boolean"}},"required":["caveatEmptor","changeDate","closingPrice","isCaveatEmptor","marketCap","newValue","oldValue","symbol","tierCode","tierId","tierName"]}},"singular":{"type":"string"},"plural":{"type":"string"},"empty":{"type":"boolean"}},"required":["currentPage","empty","pageSize","pages","plural","records","singular","sortDir","sortOn","totalRecords"]}},"required":["data","meta"]},"ofin_get_compliance_company_name_changesResponse":{"type":"object","additionalProperties":true,"properties":{"meta":{"type":"object","additionalProperties":true,"properties":{"provider":{"type":"string"},"route":{"type":"string"},"status":{"type":"string"},"cache":{"type":"string"},"generated_at":{"type":"string"},"freshness":{"type":"object","additionalProperties":true,"properties":{"as_of":{"type":"string"},"ttl_seconds":{"type":"integer"},"stale_seconds":{"type":"integer"},"stale":{"type":"boolean"}},"required":["as_of","stale","stale_seconds","ttl_seconds"]},"params":{"type":"object","additionalProperties":true,"properties":{}}},"required":["cache","freshness","generated_at","params","provider","route","status"]},"data":{"type":"object","additionalProperties":true,"properties":{"totalRecords":{"type":"integer"},"pages":{"type":"integer"},"currentPage":{"type":"integer"},"pageSize":{"type":"integer"},"sortOn":{"type":"string"},"sortDir":{"type":"string"},"records":{"type":"array","items":{"type":"object","additionalProperties":true,"properties":{"effectiveDate":{"type":"integer"},"oldSymbol":{"type":"string"},"oldTierId":{"type":"integer"},"oldTierCode":{"type":"string"},"oldTierName":{"type":"string"},"oldCompanyName":{"type":"string"},"newSymbol":{"type":"string"},"isCaveatEmptor":{"type":"boolean"},"newTierId":{"type":"integer"},"newTierCode":{"type":"string"},"newTierName":{"type":"string"},"newCompanyName":{"type":"string"},"caveatEmptor":{"type":"boolean"},"oldSic":{"type":"string"},"newSic":{"type":"string"}},"required":["caveatEmptor","effectiveDate","isCaveatEmptor","newCompanyName","newSic","newSymbol","newTierCode","newTierId","newTierName","oldCompanyName","oldSic","oldSymbol","oldTierCode","oldTierId","oldTierName"]}},"singular":{"type":"string"},"plural":{"type":"string"},"empty":{"type":"boolean"}},"required":["currentPage","empty","pageSize","pages","plural","records","singular","sortDir","sortOn","totalRecords"]}},"required":["data","meta"]},"ofin_get_compliance_grace_periodResponse":{"type":"object","additionalProperties":true,"properties":{"meta":{"type":"object","additionalProperties":true,"properties":{"provider":{"type":"string"},"route":{"type":"string"},"status":{"type":"string"},"cache":{"type":"string"},"generated_at":{"type":"string"},"freshness":{"type":"object","additionalProperties":true,"properties":{"as_of":{"type":"string"},"ttl_seconds":{"type":"integer"},"stale_seconds":{"type":"integer"},"stale":{"type":"boolean"}},"required":["as_of","stale","stale_seconds","ttl_seconds"]},"params":{"type":"object","additionalProperties":true,"properties":{}}},"required":["cache","freshness","generated_at","params","provider","route","status"]},"data":{"type":"object","additionalProperties":true,"properties":{"totalRecords":{"type":"integer"},"pages":{"type":"integer"},"currentPage":{"type":"integer"},"pageSize":{"type":"integer"},"sortOn":{"type":"string"},"sortDir":{"type":"string"},"records":{"type":"array","items":{"type":"object","additionalProperties":true,"properties":{"startDate":{"type":"integer"},"endDate":{"type":"integer"},"symbol":{"type":"string"},"isCaveatEmptor":{"type":"boolean"},"tierId":{"type":"integer"},"tierCode":{"type":"string"},"tierName":{"type":"string"},"currentClosingPrice":{"oneOf":[{"type":"integer"},{"type":"number"}]},"marketCap":{"oneOf":[{"type":"integer"},{"type":"number"}]},"caveatEmptor":{"type":"boolean"}},"required":["caveatEmptor","currentClosingPrice","endDate","isCaveatEmptor","marketCap","startDate","symbol","tierCode","tierId","tierName"]}},"singular":{"type":"string"},"plural":{"type":"string"},"empty":{"type":"boolean"}},"required":["currentPage","empty","pageSize","pages","plural","records","singular","sortDir","sortOn","totalRecords"]}},"required":["data","meta"]},"ofin_get_compliance_promotionsResponse":{"type":"object","additionalProperties":true,"properties":{"meta":{"type":"object","additionalProperties":true,"properties":{"provider":{"type":"string"},"route":{"type":"string"},"status":{"type":"string"},"cache":{"type":"string"},"generated_at":{"type":"string"},"freshness":{"type":"object","additionalProperties":true,"properties":{"as_of":{"type":"string"},"ttl_seconds":{"type":"integer"},"stale_seconds":{"type":"integer"},"stale":{"type":"boolean"}},"required":["as_of","stale","stale_seconds","ttl_seconds"]},"params":{"type":"object","additionalProperties":true,"properties":{}}},"required":["cache","freshness","generated_at","params","provider","route","status"]},"data":{"type":"object","additionalProperties":true,"properties":{"totalRecords":{"type":"integer"},"pages":{"type":"integer"},"currentPage":{"type":"integer"},"pageSize":{"type":"integer"},"sortOn":{"type":"string"},"sortDir":{"type":"string"},"records":{"type":"array","items":{"type":"object","additionalProperties":true,"properties":{"latestPromoDate":{"type":"integer"},"symbol":{"type":"string"},"isCaveatEmptor":{"type":"boolean"},"tierId":{"type":"integer"},"tierCode":{"type":"string"},"tierName":{"type":"string"},"promoStartDate":{"type":"integer"},"promoDuration":{"type":"integer"},"startDatePrice":{"type":"number"},"currentClosingPrice":{"type":"number"},"volume":{"type":"integer"},"thirtyDayAvg":{"type":"integer"},"volumeChangePct":{"type":"number"},"caveatEmptor":{"type":"boolean"}},"required":["caveatEmptor","currentClosingPrice","isCaveatEmptor","latestPromoDate","promoDuration","promoStartDate","startDatePrice","symbol","thirtyDayAvg","tierCode","tierId","tierName","volume","volumeChangePct"]}},"singular":{"type":"string"},"plural":{"type":"string"},"empty":{"type":"boolean"}},"required":["currentPage","empty","pageSize","pages","plural","records","singular","sortDir","sortOn","totalRecords"]}},"required":["data","meta"]},"ofin_get_compliance_reverse_splitsResponse":{"type":"object","additionalProperties":true,"properties":{"meta":{"type":"object","additionalProperties":true,"properties":{"provider":{"type":"string"},"route":{"type":"string"},"status":{"type":"string"},"cache":{"type":"string"},"generated_at":{"type":"string"},"freshness":{"type":"object","additionalProperties":true,"properties":{"as_of":{"type":"string"},"ttl_seconds":{"type":"integer"},"stale_seconds":{"type":"integer"},"stale":{"type":"boolean"}},"required":["as_of","stale","stale_seconds","ttl_seconds"]},"params":{"type":"object","additionalProperties":true,"properties":{}}},"required":["cache","freshness","generated_at","params","provider","route","status"]},"data":{"type":"object","additionalProperties":true,"properties":{"totalRecords":{"type":"integer"},"pages":{"type":"integer"},"currentPage":{"type":"integer"},"pageSize":{"type":"integer"},"sortOn":{"type":"string"},"sortDir":{"type":"string"},"records":{"type":"array","items":{"type":"object","additionalProperties":true,"properties":{"splitEffectiveDate":{"type":"integer"},"oldSymbol":{"type":"string"},"oldTierCode":{"type":"string"},"oldTierName":{"type":"string"},"newSymbol":{"type":"string"},"isCaveatEmptor":{"type":"boolean"},"newTierId":{"type":"integer"},"newTierCode":{"type":"string"},"newTierName":{"type":"string"},"splitRatio":{"type":"string"},"closePricePreSplit":{"type":"number"},"marketCapPreSplit":{"type":"number"},"caveatEmptor":{"type":"boolean"},"currentClosingPrice":{"oneOf":[{"type":"number"},{"type":"integer"}]},"marketCap":{"oneOf":[{"type":"number"},{"type":"integer"}]}},"required":["caveatEmptor","closePricePreSplit","currentClosingPrice","isCaveatEmptor","marketCap","marketCapPreSplit","newSymbol","newTierCode","newTierId","newTierName","oldSymbol","oldTierCode","oldTierName","splitEffectiveDate","splitRatio"]}},"singular":{"type":"string"},"plural":{"type":"string"},"empty":{"type":"boolean"}},"required":["currentPage","empty","pageSize","pages","plural","records","singular","sortDir","sortOn","totalRecords"]}},"required":["data","meta"]},"ofin_get_compliance_shell_status_changesResponse":{"type":"object","additionalProperties":true,"properties":{"meta":{"type":"object","additionalProperties":true,"properties":{"provider":{"type":"string"},"route":{"type":"string"},"status":{"type":"string"},"cache":{"type":"string"},"generated_at":{"type":"string"},"freshness":{"type":"object","additionalProperties":true,"properties":{"as_of":{"type":"string"},"ttl_seconds":{"type":"integer"},"stale_seconds":{"type":"integer"},"stale":{"type":"boolean"}},"required":["as_of","stale","stale_seconds","ttl_seconds"]},"params":{"type":"object","additionalProperties":true,"properties":{}}},"required":["cache","freshness","generated_at","params","provider","route","status"]},"data":{"type":"object","additionalProperties":true,"properties":{"totalRecords":{"type":"integer"},"pages":{"type":"integer"},"currentPage":{"type":"integer"},"pageSize":{"type":"integer"},"sortOn":{"type":"string"},"sortDir":{"type":"string"},"records":{"type":"array","items":{"type":"object","additionalProperties":true,"properties":{"shellChangeDate":{"type":"integer"},"symbol":{"type":"string"},"isCaveatEmptor":{"type":"boolean"},"tierId":{"type":"integer"},"tierCode":{"type":"string"},"tierName":{"type":"string"},"oldValue":{"type":"string"},"newValue":{"type":"string"},"currentClosingPrice":{"oneOf":[{"type":"number"},{"type":"integer"}]},"marketCap":{"oneOf":[{"type":"number"},{"type":"integer"}]},"caveatEmptor":{"type":"boolean"}},"required":["caveatEmptor","currentClosingPrice","isCaveatEmptor","marketCap","newValue","oldValue","shellChangeDate","symbol","tierCode","tierId","tierName"]}},"singular":{"type":"string"},"plural":{"type":"string"},"empty":{"type":"boolean"}},"required":["currentPage","empty","pageSize","pages","plural","records","singular","sortDir","sortOn","totalRecords"]}},"required":["data","meta"]},"ofin_get_compliance_suspensions_revocationsResponse":{"type":"object","additionalProperties":true,"properties":{"meta":{"type":"object","additionalProperties":true,"properties":{"provider":{"type":"string"},"route":{"type":"string"},"status":{"type":"string"},"cache":{"type":"string"},"generated_at":{"type":"string"},"freshness":{"type":"object","additionalProperties":true,"properties":{"as_of":{"type":"string"},"ttl_seconds":{"type":"integer"},"stale_seconds":{"type":"integer"},"stale":{"type":"boolean"}},"required":["as_of","stale","stale_seconds","ttl_seconds"]},"params":{"type":"object","additionalProperties":true,"properties":{}}},"required":["cache","freshness","generated_at","params","provider","route","status"]},"data":{"type":"object","additionalProperties":true,"properties":{"totalRecords":{"type":"integer"},"pages":{"type":"integer"},"currentPage":{"type":"integer"},"pageSize":{"type":"integer"},"sortOn":{"type":"string"},"sortDir":{"type":"string"},"records":{"type":"array","items":{"type":"object","additionalProperties":true,"properties":{"effectiveDate":{"type":"integer"},"symbol":{"type":"string"},"isCaveatEmptor":{"type":"boolean"},"tierId":{"type":"integer"},"tierCode":{"type":"string"},"tierName":{"type":"string"},"currentStatus":{"type":"string"},"closingPrice":{"type":"number"},"marketCap":{"type":"number"},"caveatEmptor":{"type":"boolean"}},"required":["caveatEmptor","closingPrice","currentStatus","effectiveDate","isCaveatEmptor","marketCap","symbol","tierCode","tierId","tierName"]}},"singular":{"type":"string"},"plural":{"type":"string"},"empty":{"type":"boolean"}},"required":["currentPage","empty","pageSize","pages","plural","records","singular","sortDir","sortOn","totalRecords"]}},"required":["data","meta"]},"ofin_get_markets_totalsResponse":{"type":"object","additionalProperties":true,"properties":{"meta":{"type":"object","additionalProperties":true,"properties":{"provider":{"type":"string"},"route":{"type":"string"},"status":{"type":"string"},"cache":{"type":"string"},"generated_at":{"type":"string"},"freshness":{"type":"object","additionalProperties":true,"properties":{"as_of":{"type":"string"},"ttl_seconds":{"type":"integer"},"stale_seconds":{"type":"integer"},"stale":{"type":"boolean"}},"required":["as_of","stale","stale_seconds","ttl_seconds"]},"params":{"type":"object","additionalProperties":true,"properties":{}}},"required":["cache","freshness","generated_at","params","provider","route","status"]},"data":{"type":"object","additionalProperties":true,"properties":{"securities":{"type":"string"},"dollarVolume":{"type":"string"},"shareVolume":{"type":"string"},"trades":{"type":"string"}},"required":["dollarVolume","securities","shareVolume","trades"]}},"required":["data","meta"]},"ofin_get_news_news_idResponse":{"type":"object","additionalProperties":true,"properties":{"meta":{"type":"object","additionalProperties":true,"properties":{"provider":{"type":"string"},"route":{"type":"string"},"status":{"type":"string"},"cache":{"type":"string"},"generated_at":{"type":"string"},"freshness":{"type":"object","additionalProperties":true,"properties":{"as_of":{"type":"string"},"ttl_seconds":{"type":"integer"},"stale_seconds":{"type":"integer"},"stale":{"type":"boolean"}},"required":["as_of","stale","stale_seconds","ttl_seconds"]},"params":{"type":"object","additionalProperties":true,"properties":{"news_id":{"type":"string"}},"required":["news_id"]}},"required":["cache","freshness","generated_at","params","provider","route","status"]},"data":{"type":"object","additionalProperties":true,"properties":{"id":{"type":"integer"},"title":{"type":"string"},"companyId":{"type":"integer"},"releaseDate":{"type":"string"},"sourceId":{"type":"string"},"sourceDesc":{"type":"string"},"typeId":{"type":"string"},"typeDesc":{"type":"string"},"symbol":{"type":"string"}},"required":["companyId","id","releaseDate","sourceDesc","sourceId","symbol","title","typeDesc","typeId"]}},"required":["data","meta"]},"ofin_get_reg_sho_datesResponse":{"type":"object","additionalProperties":true,"properties":{"meta":{"type":"object","additionalProperties":true,"properties":{"provider":{"type":"string"},"route":{"type":"string"},"status":{"type":"string"},"cache":{"type":"string"},"generated_at":{"type":"string"},"freshness":{"type":"object","additionalProperties":true,"properties":{"as_of":{"type":"string"},"ttl_seconds":{"type":"integer"},"stale_seconds":{"type":"integer"},"stale":{"type":"boolean"}},"required":["as_of","stale","stale_seconds","ttl_seconds"]},"params":{"type":"object","additionalProperties":true,"properties":{}}},"required":["cache","freshness","generated_at","params","provider","route","status"]},"data":{"type":"array","items":{"type":"object","additionalProperties":true,"properties":{"id":{"type":"string"},"value":{"type":"string"}},"required":["id","value"]}}},"required":["data","meta"]},"ofin_get_sec_filings_externalResponse":{"type":"object","additionalProperties":true,"properties":{"meta":{"type":"object","additionalProperties":true,"properties":{"provider":{"type":"string"},"route":{"type":"string"},"status":{"type":"string"},"cache":{"type":"string"},"generated_at":{"type":"string"},"freshness":{"type":"object","additionalProperties":true,"properties":{"as_of":{"type":"string"},"ttl_seconds":{"type":"integer"},"stale_seconds":{"type":"integer"},"stale":{"type":"boolean"}},"required":["as_of","stale","stale_seconds","ttl_seconds"]},"params":{"type":"object","additionalProperties":true,"properties":{}}},"required":["cache","freshness","generated_at","params","provider","route","status"]},"data":{"type":"object","additionalProperties":true,"properties":{"currentPage":{"type":"integer"},"pageSize":{"type":"integer"},"total":{"type":"integer"},"pages":{"type":"integer"},"content":{"type":"array","items":{"type":"object","additionalProperties":true,"properties":{"id":{"type":"integer"},"securityId":{"type":"integer"},"symbol":{"type":"string"},"tierName":{"type":"string"},"companyId":{"type":"integer"},"companyName":{"type":"string"},"type":{"type":"object","additionalProperties":true,"properties":{"id":{"type":"string"},"description":{"type":"string"}},"required":["description","id"]},"status":{"type":"object","additionalProperties":true,"properties":{"id":{"type":"string"},"description":{"type":"string"}},"required":["description","id"]},"periodDate":{"type":"string"},"createdDate":{"type":"string"},"lastModifiedDate":{"type":"string"},"releaseDate":{"type":"string"},"storageId":{"type":"string"},"title":{"type":"string"},"source":{"type":"string"},"fileType":{"type":"string"}},"required":["companyId","companyName","createdDate","fileType","id","lastModifiedDate","periodDate","releaseDate","securityId","source","status","storageId","symbol","tierName","title","type"]}}},"required":["content","currentPage","pageSize","pages","total"]}},"required":["data","meta"]},"ofin_get_securities_searchResponse":{"type":"object","additionalProperties":true,"properties":{"meta":{"type":"object","additionalProperties":true,"properties":{"provider":{"type":"string"},"route":{"type":"string"},"status":{"type":"string"},"cache":{"type":"string"},"generated_at":{"type":"string"},"freshness":{"type":"object","additionalProperties":true,"properties":{"as_of":{"type":"string"},"ttl_seconds":{"type":"integer"},"stale_seconds":{"type":"integer"},"stale":{"type":"boolean"}},"required":["as_of","stale","stale_seconds","ttl_seconds"]},"params":{"type":"object","additionalProperties":true,"properties":{}}},"required":["cache","freshness","generated_at","params","provider","route","status"]},"data":{"type":"object","additionalProperties":true,"properties":{"responseHeader":{"type":"object","additionalProperties":true,"properties":{"status":{"type":"integer"},"QTime":{"type":"integer"}},"required":["QTime","status"]},"response":{"type":"object","additionalProperties":true,"properties":{"numFound":{"type":"integer"},"start":{"type":"integer"},"docs":{"type":"array","items":{"type":"object","additionalProperties":true,"properties":{"symbol":{"type":"string"},"venue":{"type":"string"},"cusip":{"type":"string"},"tierid":{"type":"integer"},"companyname":{"type":"string"},"comp_id":{"type":"integer"},"isFixedIncome":{"type":"boolean"},"status":{"type":"string"},"security_desc":{"type":"string"},"id":{"type":"string"}},"required":["comp_id","companyname","cusip","id","isFixedIncome","security_desc","status","symbol","tierid","venue"]}}},"required":["docs","numFound","start"]}},"required":["response","responseHeader"]}},"required":["data","meta"]},"ofin_get_markets_active_closingResponse":{"type":"object","additionalProperties":true,"properties":{"meta":{"type":"object","additionalProperties":true,"properties":{"provider":{"type":"string"},"route":{"type":"string"},"status":{"type":"string"},"cache":{"type":"string"},"generated_at":{"type":"string"},"freshness":{"type":"object","additionalProperties":true,"properties":{"as_of":{"type":"string"},"ttl_seconds":{"type":"integer"},"stale_seconds":{"type":"integer"},"stale":{"type":"boolean"}},"required":["as_of","stale","stale_seconds","ttl_seconds"]},"params":{"type":"object","additionalProperties":true,"properties":{}}},"required":["cache","freshness","generated_at","params","provider","route","status"]},"data":{"type":"object","additionalProperties":true,"properties":{"totalRecords":{"type":"integer"},"pages":{"type":"integer"},"currentPage":{"type":"integer"},"pageSize":{"type":"integer"},"sortOn":{"type":"string"},"sortDir":{"type":"string"},"records":{"type":"array","items":{"type":"object","additionalProperties":true,"properties":{"securityId":{"type":"integer"},"symbol":{"type":"string"},"companyId":{"type":"integer"},"companyName":{"type":"string"},"price":{"type":"number"},"priceNet":{"type":"number"},"pctChange":{"type":"number"},"shareVolume":{"type":"integer"},"dollarVolume":{"type":"number"},"tradeCount":{"type":"integer"},"updateCount":{"type":"integer"},"tierCode":{"type":"string"},"isCaveatEmptor":{"type":"boolean"}},"required":["companyId","companyName","dollarVolume","isCaveatEmptor","pctChange","price","priceNet","securityId","shareVolume","symbol","tierCode","tradeCount","updateCount"]}},"singular":{"type":"string"},"plural":{"type":"string"},"tierGroupId":{"type":"string"},"empty":{"type":"boolean"}},"required":["currentPage","empty","pageSize","pages","plural","records","singular","sortDir","sortOn","tierGroupId","totalRecords"]}},"required":["data","meta"]},"ofin_get_markets_active_currentResponse":{"type":"object","additionalProperties":true,"properties":{"meta":{"type":"object","additionalProperties":true,"properties":{"provider":{"type":"string"},"route":{"type":"string"},"status":{"type":"string"},"cache":{"type":"string"},"generated_at":{"type":"string"},"freshness":{"type":"object","additionalProperties":true,"properties":{"as_of":{"type":"string"},"ttl_seconds":{"type":"integer"},"stale_seconds":{"type":"integer"},"stale":{"type":"boolean"}},"required":["as_of","stale","stale_seconds","ttl_seconds"]},"params":{"type":"object","additionalProperties":true,"properties":{}}},"required":["cache","freshness","generated_at","params","provider","route","status"]},"data":{"type":"object","additionalProperties":true,"properties":{"totalRecords":{"type":"integer"},"pages":{"type":"integer"},"currentPage":{"type":"integer"},"pageSize":{"type":"integer"},"records":{"type":"array","items":{}},"isRealTime":{"type":"boolean"},"bySymbol":{"type":"boolean"},"empty":{"type":"boolean"}},"required":["bySymbol","currentPage","empty","isRealTime","pageSize","pages","records","totalRecords"]}},"required":["data","meta"]},"ofin_get_markets_advancers_closingResponse":{"type":"object","additionalProperties":true,"properties":{"meta":{"type":"object","additionalProperties":true,"properties":{"provider":{"type":"string"},"route":{"type":"string"},"status":{"type":"string"},"cache":{"type":"string"},"generated_at":{"type":"string"},"freshness":{"type":"object","additionalProperties":true,"properties":{"as_of":{"type":"string"},"ttl_seconds":{"type":"integer"},"stale_seconds":{"type":"integer"},"stale":{"type":"boolean"}},"required":["as_of","stale","stale_seconds","ttl_seconds"]},"params":{"type":"object","additionalProperties":true,"properties":{}}},"required":["cache","freshness","generated_at","params","provider","route","status"]},"data":{"type":"object","additionalProperties":true,"properties":{"totalRecords":{"type":"integer"},"pages":{"type":"integer"},"currentPage":{"type":"integer"},"pageSize":{"type":"integer"},"sortOn":{"type":"string"},"sortDir":{"type":"string"},"records":{"type":"array","items":{"type":"object","additionalProperties":true,"properties":{"securityId":{"type":"integer"},"symbol":{"type":"string"},"companyId":{"type":"integer"},"companyName":{"type":"string"},"price":{"type":"number"},"priceNet":{"type":"number"},"pctChange":{"type":"number"},"shareVolume":{"type":"integer"},"dollarVolume":{"type":"number"},"tradeCount":{"type":"integer"},"updateCount":{"type":"integer"},"tierCode":{"type":"string"},"isCaveatEmptor":{"type":"boolean"}},"required":["companyId","companyName","dollarVolume","isCaveatEmptor","pctChange","price","priceNet","securityId","shareVolume","symbol","tierCode","tradeCount","updateCount"]}},"singular":{"type":"string"},"plural":{"type":"string"},"tierGroupId":{"type":"string"},"empty":{"type":"boolean"}},"required":["currentPage","empty","pageSize","pages","plural","records","singular","sortDir","sortOn","tierGroupId","totalRecords"]}},"required":["data","meta"]},"ofin_get_markets_advancers_currentResponse":{"type":"object","additionalProperties":true,"properties":{"meta":{"type":"object","additionalProperties":true,"properties":{"provider":{"type":"string"},"route":{"type":"string"},"status":{"type":"string"},"cache":{"type":"string"},"generated_at":{"type":"string"},"freshness":{"type":"object","additionalProperties":true,"properties":{"as_of":{"type":"string"},"ttl_seconds":{"type":"integer"},"stale_seconds":{"type":"integer"},"stale":{"type":"boolean"}},"required":["as_of","stale","stale_seconds","ttl_seconds"]},"params":{"type":"object","additionalProperties":true,"properties":{}}},"required":["cache","freshness","generated_at","params","provider","route","status"]},"data":{"type":"object","additionalProperties":true,"properties":{"totalRecords":{"type":"integer"},"pages":{"type":"integer"},"currentPage":{"type":"integer"},"pageSize":{"type":"integer"},"records":{"type":"array","items":{}},"sortOn":{"type":"string"},"isRealTime":{"type":"boolean"},"bySymbol":{"type":"boolean"},"empty":{"type":"boolean"}},"required":["bySymbol","currentPage","empty","isRealTime","pageSize","pages","records","sortOn","totalRecords"]}},"required":["data","meta"]},"ofin_get_markets_decliners_closingResponse":{"type":"object","additionalProperties":true,"properties":{"meta":{"type":"object","additionalProperties":true,"properties":{"provider":{"type":"string"},"route":{"type":"string"},"status":{"type":"string"},"cache":{"type":"string"},"generated_at":{"type":"string"},"freshness":{"type":"object","additionalProperties":true,"properties":{"as_of":{"type":"string"},"ttl_seconds":{"type":"integer"},"stale_seconds":{"type":"integer"},"stale":{"type":"boolean"}},"required":["as_of","stale","stale_seconds","ttl_seconds"]},"params":{"type":"object","additionalProperties":true,"properties":{}}},"required":["cache","freshness","generated_at","params","provider","route","status"]},"data":{"type":"object","additionalProperties":true,"properties":{"totalRecords":{"type":"integer"},"pages":{"type":"integer"},"currentPage":{"type":"integer"},"pageSize":{"type":"integer"},"sortOn":{"type":"string"},"sortDir":{"type":"string"},"records":{"type":"array","items":{"type":"object","additionalProperties":true,"properties":{"securityId":{"type":"integer"},"symbol":{"type":"string"},"companyId":{"type":"integer"},"companyName":{"type":"string"},"price":{"oneOf":[{"type":"integer"},{"type":"number"}]},"priceNet":{"type":"number"},"pctChange":{"type":"number"},"shareVolume":{"type":"integer"},"dollarVolume":{"oneOf":[{"type":"integer"},{"type":"number"}]},"tradeCount":{"type":"integer"},"updateCount":{"type":"integer"},"tierCode":{"type":"string"},"isCaveatEmptor":{"type":"boolean"}},"required":["companyId","companyName","dollarVolume","isCaveatEmptor","pctChange","price","priceNet","securityId","shareVolume","symbol","tierCode","tradeCount","updateCount"]}},"singular":{"type":"string"},"plural":{"type":"string"},"tierGroupId":{"type":"string"},"empty":{"type":"boolean"}},"required":["currentPage","empty","pageSize","pages","plural","records","singular","sortDir","sortOn","tierGroupId","totalRecords"]}},"required":["data","meta"]},"ofin_get_markets_decliners_currentResponse":{"type":"object","additionalProperties":true,"properties":{"meta":{"type":"object","additionalProperties":true,"properties":{"provider":{"type":"string"},"route":{"type":"string"},"status":{"type":"string"},"cache":{"type":"string"},"generated_at":{"type":"string"},"freshness":{"type":"object","additionalProperties":true,"properties":{"as_of":{"type":"string"},"ttl_seconds":{"type":"integer"},"stale_seconds":{"type":"integer"},"stale":{"type":"boolean"}},"required":["as_of","stale","stale_seconds","ttl_seconds"]},"params":{"type":"object","additionalProperties":true,"properties":{}}},"required":["cache","freshness","generated_at","params","provider","route","status"]},"data":{"type":"object","additionalProperties":true,"properties":{"totalRecords":{"type":"integer"},"pages":{"type":"integer"},"currentPage":{"type":"integer"},"pageSize":{"type":"integer"},"records":{"type":"array","items":{}},"sortOn":{"type":"string"},"isRealTime":{"type":"boolean"},"bySymbol":{"type":"boolean"},"empty":{"type":"boolean"}},"required":["bySymbol","currentPage","empty","isRealTime","pageSize","pages","records","sortOn","totalRecords"]}},"required":["data","meta"]},"ofin_get_markets_overnight_activeResponse":{"type":"object","additionalProperties":true,"properties":{"meta":{"type":"object","additionalProperties":true,"properties":{"provider":{"type":"string"},"route":{"type":"string"},"status":{"type":"string"},"cache":{"type":"string"},"generated_at":{"type":"string"},"freshness":{"type":"object","additionalProperties":true,"properties":{"as_of":{"type":"string"},"ttl_seconds":{"type":"integer"},"stale_seconds":{"type":"integer"},"stale":{"type":"boolean"}},"required":["as_of","stale","stale_seconds","ttl_seconds"]},"params":{"type":"object","additionalProperties":true,"properties":{}}},"required":["cache","freshness","generated_at","params","provider","route","status"]},"data":{"type":"object","additionalProperties":true,"properties":{"totalRecords":{"type":"integer"},"pages":{"type":"integer"},"currentPage":{"type":"integer"},"pageSize":{"type":"integer"},"records":{"type":"array","items":{}},"isRealTime":{"type":"boolean"},"bySymbol":{"type":"boolean"},"empty":{"type":"boolean"}},"required":["bySymbol","currentPage","empty","isRealTime","pageSize","pages","records","totalRecords"]}},"required":["data","meta"]},"ofin_get_markets_overnight_advancersResponse":{"type":"object","additionalProperties":true,"properties":{"meta":{"type":"object","additionalProperties":true,"properties":{"provider":{"type":"string"},"route":{"type":"string"},"status":{"type":"string"},"cache":{"type":"string"},"generated_at":{"type":"string"},"freshness":{"type":"object","additionalProperties":true,"properties":{"as_of":{"type":"string"},"ttl_seconds":{"type":"integer"},"stale_seconds":{"type":"integer"},"stale":{"type":"boolean"}},"required":["as_of","stale","stale_seconds","ttl_seconds"]},"params":{"type":"object","additionalProperties":true,"properties":{}}},"required":["cache","freshness","generated_at","params","provider","route","status"]},"data":{"type":"object","additionalProperties":true,"properties":{"totalRecords":{"type":"integer"},"pages":{"type":"integer"},"currentPage":{"type":"integer"},"pageSize":{"type":"integer"},"records":{"type":"array","items":{}},"sortOn":{"type":"string"},"isRealTime":{"type":"boolean"},"bySymbol":{"type":"boolean"},"empty":{"type":"boolean"}},"required":["bySymbol","currentPage","empty","isRealTime","pageSize","pages","records","sortOn","totalRecords"]}},"required":["data","meta"]},"ofin_get_markets_overnight_declinersResponse":{"type":"object","additionalProperties":true,"properties":{"meta":{"type":"object","additionalProperties":true,"properties":{"provider":{"type":"string"},"route":{"type":"string"},"status":{"type":"string"},"cache":{"type":"string"},"generated_at":{"type":"string"},"freshness":{"type":"object","additionalProperties":true,"properties":{"as_of":{"type":"string"},"ttl_seconds":{"type":"integer"},"stale_seconds":{"type":"integer"},"stale":{"type":"boolean"}},"required":["as_of","stale","stale_seconds","ttl_seconds"]},"params":{"type":"object","additionalProperties":true,"properties":{}}},"required":["cache","freshness","generated_at","params","provider","route","status"]},"data":{"type":"object","additionalProperties":true,"properties":{"totalRecords":{"type":"integer"},"pages":{"type":"integer"},"currentPage":{"type":"integer"},"pageSize":{"type":"integer"},"records":{"type":"array","items":{}},"sortOn":{"type":"string"},"isRealTime":{"type":"boolean"},"bySymbol":{"type":"boolean"},"empty":{"type":"boolean"}},"required":["bySymbol","currentPage","empty","isRealTime","pageSize","pages","records","sortOn","totalRecords"]}},"required":["data","meta"]},"ofin_get_markets_overnight_snapshotResponse":{"type":"object","additionalProperties":true,"properties":{"meta":{"type":"object","additionalProperties":true,"properties":{"provider":{"type":"string"},"route":{"type":"string"},"status":{"type":"string"},"cache":{"type":"string"},"generated_at":{"type":"string"},"freshness":{"type":"object","additionalProperties":true,"properties":{"as_of":{"type":"string"},"ttl_seconds":{"type":"integer"},"stale_seconds":{"type":"integer"},"stale":{"type":"boolean"}},"required":["as_of","stale","stale_seconds","ttl_seconds"]},"params":{"type":"object","additionalProperties":true,"properties":{}}},"required":["cache","freshness","generated_at","params","provider","route","status"]},"error":{"type":"object","additionalProperties":true,"properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error","meta"]},"ofin_get_markets_snapshot_closingResponse":{"type":"object","additionalProperties":true,"properties":{"meta":{"type":"object","additionalProperties":true,"properties":{"provider":{"type":"string"},"route":{"type":"string"},"status":{"type":"string"},"cache":{"type":"string"},"generated_at":{"type":"string"},"freshness":{"type":"object","additionalProperties":true,"properties":{"as_of":{"type":"string"},"ttl_seconds":{"type":"integer"},"stale_seconds":{"type":"integer"},"stale":{"type":"boolean"}},"required":["as_of","stale","stale_seconds","ttl_seconds"]},"params":{"type":"object","additionalProperties":true,"properties":{}}},"required":["cache","freshness","generated_at","params","provider","route","status"]},"data":{"type":"object","additionalProperties":true,"properties":{"dollarVolume":{"type":"integer"},"shareVolume":{"type":"integer"},"trades":{"type":"integer"},"advancers":{"type":"integer"},"decliners":{"type":"integer"},"lastUpdated":{"type":"integer"}},"required":["advancers","decliners","dollarVolume","lastUpdated","shareVolume","trades"]}},"required":["data","meta"]},"ofin_get_markets_snapshot_currentResponse":{"type":"object","additionalProperties":true,"properties":{"meta":{"type":"object","additionalProperties":true,"properties":{"provider":{"type":"string"},"route":{"type":"string"},"status":{"type":"string"},"cache":{"type":"string"},"generated_at":{"type":"string"},"freshness":{"type":"object","additionalProperties":true,"properties":{"as_of":{"type":"string"},"ttl_seconds":{"type":"integer"},"stale_seconds":{"type":"integer"},"stale":{"type":"boolean"}},"required":["as_of","stale","stale_seconds","ttl_seconds"]},"params":{"type":"object","additionalProperties":true,"properties":{}}},"required":["cache","freshness","generated_at","params","provider","route","status"]},"error":{"type":"object","additionalProperties":true,"properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error","meta"]},"ofin_get_news_news_id_contentResponse":{"type":"object","additionalProperties":true,"properties":{"meta":{"type":"object","additionalProperties":true,"properties":{"provider":{"type":"string"},"route":{"type":"string"},"status":{"type":"string"},"cache":{"type":"string"},"generated_at":{"type":"string"},"freshness":{"type":"object","additionalProperties":true,"properties":{"as_of":{"type":"string"},"ttl_seconds":{"type":"integer"},"stale_seconds":{"type":"integer"},"stale":{"type":"boolean"}},"required":["as_of","stale","stale_seconds","ttl_seconds"]},"params":{"type":"object","additionalProperties":true,"properties":{"news_id":{"type":"string"}},"required":["news_id"]}},"required":["cache","freshness","generated_at","params","provider","route","status"]},"data":{"type":"string"}},"required":["data","meta"]},"ofin_get_securities_symbol_dividendsResponse":{"type":"object","additionalProperties":true,"properties":{"meta":{"type":"object","additionalProperties":true,"properties":{"provider":{"type":"string"},"route":{"type":"string"},"status":{"type":"string"},"cache":{"type":"string"},"generated_at":{"type":"string"},"freshness":{"type":"object","additionalProperties":true,"properties":{"as_of":{"type":"string"},"ttl_seconds":{"type":"integer"},"stale_seconds":{"type":"integer"},"stale":{"type":"boolean"}},"required":["as_of","stale","stale_seconds","ttl_seconds"]},"params":{"type":"object","additionalProperties":true,"properties":{"symbol":{"type":"string"}},"required":["symbol"]}},"required":["cache","freshness","generated_at","params","provider","route","status"]},"data":{"type":"object","additionalProperties":true,"properties":{"totalRecords":{"type":"integer"},"pages":{"type":"integer"},"currentPage":{"type":"integer"},"pageSize":{"type":"integer"},"sortOn":{"type":"string"},"sortDir":{"type":"string"},"records":{"type":"array","items":{}},"singular":{"type":"string"},"plural":{"type":"string"},"isDividend":{"type":"boolean"},"empty":{"type":"boolean"}},"required":["currentPage","empty","isDividend","pageSize","pages","plural","records","singular","sortDir","sortOn","totalRecords"]}},"required":["data","meta"]},"ofin_get_securities_symbol_financial_reportsResponse":{"type":"object","additionalProperties":true,"properties":{"meta":{"type":"object","additionalProperties":true,"properties":{"provider":{"type":"string"},"route":{"type":"string"},"status":{"type":"string"},"cache":{"type":"string"},"generated_at":{"type":"string"},"freshness":{"type":"object","additionalProperties":true,"properties":{"as_of":{"type":"string"},"ttl_seconds":{"type":"integer"},"stale_seconds":{"type":"integer"},"stale":{"type":"boolean"}},"required":["as_of","stale","stale_seconds","ttl_seconds"]},"params":{"type":"object","additionalProperties":true,"properties":{"symbol":{"type":"string"}},"required":["symbol"]}},"required":["cache","freshness","generated_at","params","provider","route","status"]},"data":{"type":"object","additionalProperties":true,"properties":{"totalRecords":{"type":"integer"},"pages":{"type":"integer"},"currentPage":{"type":"integer"},"pageSize":{"type":"integer"},"sortOn":{"type":"string"},"sortDir":{"type":"string"},"records":{"type":"array","items":{"type":"object","additionalProperties":true,"properties":{"id":{"type":"integer"},"companyId":{"type":"integer"},"userId":{"type":"integer"},"title":{"type":"string"},"typeId":{"type":"string"},"statusId":{"type":"string"},"periodDate":{"type":"integer"},"isImmediate":{"type":"boolean"},"createdDate":{"type":"integer"},"lastModifiedDate":{"type":"integer"},"releaseDate":{"type":"integer"},"canDistribute":{"type":"boolean"},"wasDistributed":{"type":"boolean"},"companyName":{"type":"string"},"reportType":{"type":"string"},"name":{"type":"string"},"statusDescript":{"type":"string"},"symbol":{"type":"string"},"primarySymbol":{"type":"string"},"isCaveatEmptor":{"type":"boolean"},"edgarSECFiling":{"type":"boolean"},"tierCode":{"type":"string"}},"required":["canDistribute","companyId","companyName","createdDate","edgarSECFiling","id","isCaveatEmptor","isImmediate","lastModifiedDate","name","periodDate","primarySymbol","releaseDate","reportType","statusDescript","statusId","symbol","tierCode","title","typeId","userId","wasDistributed"]}},"singular":{"type":"string"},"plural":{"type":"string"},"companyId":{"type":"integer"},"statusId":{"type":"string"},"empty":{"type":"boolean"}},"required":["companyId","currentPage","empty","pageSize","pages","plural","records","singular","sortDir","sortOn","statusId","totalRecords"]}},"required":["data","meta"]},"ofin_get_securities_symbol_newsResponse":{"type":"object","additionalProperties":true,"properties":{"meta":{"type":"object","additionalProperties":true,"properties":{"provider":{"type":"string"},"route":{"type":"string"},"status":{"type":"string"},"cache":{"type":"string"},"generated_at":{"type":"string"},"freshness":{"type":"object","additionalProperties":true,"properties":{"as_of":{"type":"string"},"ttl_seconds":{"type":"integer"},"stale_seconds":{"type":"integer"},"stale":{"type":"boolean"}},"required":["as_of","stale","stale_seconds","ttl_seconds"]},"params":{"type":"object","additionalProperties":true,"properties":{"symbol":{"type":"string"}},"required":["symbol"]}},"required":["cache","freshness","generated_at","params","provider","route","status"]},"data":{"type":"object","additionalProperties":true,"properties":{"totalRecords":{"type":"integer"},"pages":{"type":"integer"},"currentPage":{"type":"integer"},"pageSize":{"type":"integer"},"sortOn":{"type":"string"},"sortDir":{"type":"string"},"records":{"type":"array","items":{"type":"object","additionalProperties":true,"properties":{"id":{"type":"integer"},"title":{"type":"string"},"companyId":{"type":"integer"},"releaseDate":{"type":"string"},"sourceId":{"type":"string"},"sourceDesc":{"type":"string"},"typeId":{"type":"string"},"typeDesc":{"type":"string"}},"required":["companyId","id","releaseDate","sourceDesc","sourceId","title","typeDesc","typeId"]}},"singular":{"type":"string"},"plural":{"type":"string"},"empty":{"type":"boolean"}},"required":["currentPage","empty","pageSize","pages","plural","records","singular","sortDir","sortOn","totalRecords"]}},"required":["data","meta"]},"ofin_get_securities_symbol_sec_filingsResponse":{"type":"object","additionalProperties":true,"properties":{"meta":{"type":"object","additionalProperties":true,"properties":{"provider":{"type":"string"},"route":{"type":"string"},"status":{"type":"string"},"cache":{"type":"string"},"generated_at":{"type":"string"},"freshness":{"type":"object","additionalProperties":true,"properties":{"as_of":{"type":"string"},"ttl_seconds":{"type":"integer"},"stale_seconds":{"type":"integer"},"stale":{"type":"boolean"}},"required":["as_of","stale","stale_seconds","ttl_seconds"]},"params":{"type":"object","additionalProperties":true,"properties":{"symbol":{"type":"string"}},"required":["symbol"]}},"required":["cache","freshness","generated_at","params","provider","route","status"]},"data":{"type":"object","additionalProperties":true,"properties":{"totalRecords":{"type":"integer"},"pages":{"type":"integer"},"currentPage":{"type":"integer"},"pageSize":{"type":"integer"},"sortOn":{"type":"string"},"sortDir":{"type":"string"},"records":{"type":"array","items":{"type":"object","additionalProperties":true,"properties":{"exchangeId":{"type":"integer"},"id":{"type":"integer"},"dcn":{"type":"string"},"secFileNo":{"type":"string"},"formTypeId":{"type":"integer"},"formType":{"type":"string"},"receivedDate":{"type":"integer"},"filedDate":{"type":"integer"},"periodEndDate":{"type":"integer"},"sizeOfFiling":{"type":"integer"},"hasPdf":{"type":"boolean"},"hasExcel":{"type":"boolean"},"filedAsHtml":{"type":"boolean"},"beenViewed":{"type":"boolean"},"paperOnly":{"type":"boolean"},"valid":{"type":"boolean"},"companyId":{"type":"integer"},"companyName":{"type":"string"},"companyCik":{"type":"string"},"filedAsName":{"type":"string"},"symbol":{"type":"string"},"tierCode":{"type":"string"},"guid":{"type":"string"}},"required":["beenViewed","companyCik","companyId","companyName","dcn","exchangeId","filedAsHtml","filedAsName","filedDate","formType","formTypeId","guid","hasExcel","hasPdf","id","paperOnly","periodEndDate","receivedDate","secFileNo","sizeOfFiling","symbol","tierCode","valid"]}},"singular":{"type":"string"},"plural":{"type":"string"},"empty":{"type":"boolean"}},"required":["currentPage","empty","pageSize","pages","plural","records","singular","sortDir","sortOn","totalRecords"]}},"required":["data","meta"]},"ofin_get_securities_symbol_splitsResponse":{"type":"object","additionalProperties":true,"properties":{"meta":{"type":"object","additionalProperties":true,"properties":{"provider":{"type":"string"},"route":{"type":"string"},"status":{"type":"string"},"cache":{"type":"string"},"generated_at":{"type":"string"},"freshness":{"type":"object","additionalProperties":true,"properties":{"as_of":{"type":"string"},"ttl_seconds":{"type":"integer"},"stale_seconds":{"type":"integer"},"stale":{"type":"boolean"}},"required":["as_of","stale","stale_seconds","ttl_seconds"]},"params":{"type":"object","additionalProperties":true,"properties":{"symbol":{"type":"string"}},"required":["symbol"]}},"required":["cache","freshness","generated_at","params","provider","route","status"]},"data":{"type":"object","additionalProperties":true,"properties":{"totalRecords":{"type":"integer"},"pages":{"type":"integer"},"currentPage":{"type":"integer"},"pageSize":{"type":"integer"},"sortOn":{"type":"string"},"sortDir":{"type":"string"},"records":{"type":"array","items":{"type":"object","additionalProperties":true,"properties":{"changeDate":{"type":"integer"},"recordDate":{"type":"integer"},"actionType":{"type":"string"},"comments":{"type":"string"},"splitRatio":{"type":"string"},"payDate":{"type":"integer"}},"required":["actionType","changeDate","comments","payDate","recordDate","splitRatio"]}},"singular":{"type":"string"},"plural":{"type":"string"},"isDividend":{"type":"boolean"},"empty":{"type":"boolean"}},"required":["currentPage","empty","isDividend","pageSize","pages","plural","records","singular","sortDir","sortOn","totalRecords"]}},"required":["data","meta"]},"ofin_get_news_external_news_id_contentResponse":{"type":"object","additionalProperties":true,"properties":{"meta":{"type":"object","additionalProperties":true,"properties":{"provider":{"type":"string"},"route":{"type":"string"},"status":{"type":"string"},"cache":{"type":"string"},"generated_at":{"type":"string"},"freshness":{"type":"object","additionalProperties":true,"properties":{"as_of":{"type":"string"},"ttl_seconds":{"type":"integer"},"stale_seconds":{"type":"integer"},"stale":{"type":"boolean"}},"required":["as_of","stale","stale_seconds","ttl_seconds"]},"params":{"type":"object","additionalProperties":true,"properties":{"news_id":{"type":"string"}},"required":["news_id"]}},"required":["cache","freshness","generated_at","params","provider","route","status"]},"data":{"type":"string"}},"required":["data","meta"]},"ofin_get_securities_symbol_financials_balance_sheetResponse":{"type":"object","additionalProperties":true,"properties":{"meta":{"type":"object","additionalProperties":true,"properties":{"provider":{"type":"string"},"route":{"type":"string"},"status":{"type":"string"},"cache":{"type":"string"},"generated_at":{"type":"string"},"freshness":{"type":"object","additionalProperties":true,"properties":{"as_of":{"type":"string"},"ttl_seconds":{"type":"integer"},"stale_seconds":{"type":"integer"},"stale":{"type":"boolean"}},"required":["as_of","stale","stale_seconds","ttl_seconds"]},"params":{"type":"object","additionalProperties":true,"properties":{"symbol":{"type":"string"}},"required":["symbol"]}},"required":["cache","freshness","generated_at","params","provider","route","status"]},"data":{"type":"array","items":{"type":"object","additionalProperties":true,"properties":{"preliminary":{"type":"boolean"},"periodEndDate":{"type":"string"},"cashAndCashEquivalents":{"type":"string"},"netReceivables":{"type":"string"},"otherCurrentAssets":{"type":"string"},"totalCurrentAssets":{"type":"string"},"propertyPlantAndEquipment":{"type":"string"},"totalAssets":{"type":"string"},"accountPayable":{"type":"string"},"totalCurrentLiabilities":{"type":"string"},"otherLiabilitiesWithContingencies":{"type":"string"},"totalLiabilities":{"type":"string"},"commonStock":{"type":"string"},"retainedEarnings":{"type":"string"},"capitalSurplus":{"type":"string"},"totalStockholderEquity":{"type":"string"},"totalLiablitiesAndStockholderEquity":{"type":"string"},"netTangibleAssets":{"type":"string"},"goodwill":{"type":"string"},"otherAssets":{"type":"string"},"shortTermAndCurrentLongTermDebt":{"type":"string"},"otherLiabilities":{"type":"string"},"preferredStock":{"type":"string"}},"required":["accountPayable","capitalSurplus","cashAndCashEquivalents","commonStock","goodwill","netReceivables","netTangibleAssets","otherAssets","otherCurrentAssets","otherLiabilities","otherLiabilitiesWithContingencies","periodEndDate","preferredStock","preliminary","propertyPlantAndEquipment","retainedEarnings","shortTermAndCurrentLongTermDebt","totalAssets","totalCurrentAssets","totalCurrentLiabilities","totalLiabilities","totalLiablitiesAndStockholderEquity","totalStockholderEquity"]}}},"required":["data","meta"]},"ofin_get_securities_symbol_financials_cash_flowResponse":{"type":"object","additionalProperties":true,"properties":{"meta":{"type":"object","additionalProperties":true,"properties":{"provider":{"type":"string"},"route":{"type":"string"},"status":{"type":"string"},"cache":{"type":"string"},"generated_at":{"type":"string"},"freshness":{"type":"object","additionalProperties":true,"properties":{"as_of":{"type":"string"},"ttl_seconds":{"type":"integer"},"stale_seconds":{"type":"integer"},"stale":{"type":"boolean"}},"required":["as_of","stale","stale_seconds","ttl_seconds"]},"params":{"type":"object","additionalProperties":true,"properties":{"symbol":{"type":"string"}},"required":["symbol"]}},"required":["cache","freshness","generated_at","params","provider","route","status"]},"data":{"type":"array","items":{"type":"object","additionalProperties":true,"properties":{"preliminary":{"type":"boolean"},"periodEndDate":{"type":"string"},"netIncome":{"type":"string"},"depreciation":{"type":"string"},"adjustmentsToNetIncome":{"type":"string"},"changesInLiabilities":{"type":"string"},"changesInAccountReceivables":{"type":"string"},"changesInInventories":{"type":"string"},"changesInOtherOperatingActivities":{"type":"string"},"totalCashFlowFromOperatingActivities":{"type":"string"},"capitalExpenditures":{"type":"string"},"investments":{"type":"string"},"otherCashFlowFromInvestingActivities":{"type":"string"},"totalCashFlowFromInvestingActivities":{"type":"string"},"dividendsPaid":{"type":"string"},"salePurchaseOfStock":{"type":"string"},"netBorrowings":{"type":"string"},"otherCashFlowsFromFinancingActivities":{"type":"string"},"totalCashFlowsFromFinancingActivities":{"type":"string"},"changeInCashAndEquities":{"type":"string"}},"required":["adjustmentsToNetIncome","capitalExpenditures","changeInCashAndEquities","changesInAccountReceivables","changesInInventories","changesInLiabilities","changesInOtherOperatingActivities","depreciation","dividendsPaid","investments","netBorrowings","netIncome","otherCashFlowFromInvestingActivities","otherCashFlowsFromFinancingActivities","periodEndDate","preliminary","salePurchaseOfStock","totalCashFlowFromInvestingActivities","totalCashFlowFromOperatingActivities","totalCashFlowsFromFinancingActivities"]}}},"required":["data","meta"]},"ofin_get_securities_symbol_financials_income_statementResponse":{"type":"object","additionalProperties":true,"properties":{"meta":{"type":"object","additionalProperties":true,"properties":{"provider":{"type":"string"},"route":{"type":"string"},"status":{"type":"string"},"cache":{"type":"string"},"generated_at":{"type":"string"},"freshness":{"type":"object","additionalProperties":true,"properties":{"as_of":{"type":"string"},"ttl_seconds":{"type":"integer"},"stale_seconds":{"type":"integer"},"stale":{"type":"boolean"}},"required":["as_of","stale","stale_seconds","ttl_seconds"]},"params":{"type":"object","additionalProperties":true,"properties":{"symbol":{"type":"string"}},"required":["symbol"]}},"required":["cache","freshness","generated_at","params","provider","route","status"]},"data":{"type":"array","items":{"type":"object","additionalProperties":true,"properties":{"preliminary":{"type":"boolean"},"periodEndDate":{"type":"string"},"totalRevenue":{"type":"string"},"costOfRevenue":{"type":"string"},"grossProfit":{"type":"string"},"salesGeneralAndAdmin":{"type":"string"},"nonRecurringItems":{"type":"string"},"otherExpenses":{"type":"string"},"totalExpenses":{"type":"string"},"operatingIncome":{"type":"string"},"additionalIncomeExpenseItems":{"type":"string"},"earningsBeforeInterestTaxes":{"type":"string"},"earningsBeforeTax":{"type":"string"},"netIncomeOperations":{"type":"string"},"netIncome":{"type":"string"},"earningsperShare":{"type":"string"},"priceEarnings":{"type":"string"},"grossMargin":{"type":"string"},"operatingMargin":{"type":"string"}},"required":["additionalIncomeExpenseItems","costOfRevenue","earningsBeforeInterestTaxes","earningsBeforeTax","earningsperShare","grossMargin","grossProfit","netIncome","netIncomeOperations","nonRecurringItems","operatingIncome","operatingMargin","otherExpenses","periodEndDate","preliminary","priceEarnings","salesGeneralAndAdmin","totalExpenses","totalRevenue"]}}},"required":["data","meta"]},"ofin_get_securities_symbol_insiders_externalResponse":{"type":"object","additionalProperties":true,"properties":{"meta":{"type":"object","additionalProperties":true,"properties":{"provider":{"type":"string"},"route":{"type":"string"},"status":{"type":"string"},"cache":{"type":"string"},"generated_at":{"type":"string"},"freshness":{"type":"object","additionalProperties":true,"properties":{"as_of":{"type":"string"},"ttl_seconds":{"type":"integer"},"stale_seconds":{"type":"integer"},"stale":{"type":"boolean"}},"required":["as_of","stale","stale_seconds","ttl_seconds"]},"params":{"type":"object","additionalProperties":true,"properties":{"symbol":{"type":"string"}},"required":["symbol"]}},"required":["cache","freshness","generated_at","params","provider","route","status"]},"data":{"type":"object","additionalProperties":true,"properties":{"totalRecords":{"type":"integer"},"pages":{"type":"integer"},"currentPage":{"type":"integer"},"pageSize":{"type":"integer"},"records":{"type":"array","items":{"type":"object","additionalProperties":true,"properties":{"id":{"type":"integer"},"currencyId":{"type":"integer"},"filerId":{"type":"integer"},"filerName":{"type":"string"},"formTypeId":{"type":"integer"},"issueId":{"type":"integer"},"issueName":{"type":"string"},"typeId":{"type":"integer"},"relationshipId":{"type":"integer"},"transDate":{"type":"integer"},"priceFrom":{"oneOf":[{"type":"integer"},{"type":"number"}]},"numberOfShares":{"type":"integer"},"amountOwned":{"type":"integer"},"ownershipTypeId":{"type":"integer"},"dcn":{"type":"string"},"filingId":{"type":"integer"},"typeName":{"type":"string"},"relationshipName":{"type":"string"},"ownershipTypeName":{"type":"string"},"priceTo":{"oneOf":[{"type":"number"},{"type":"integer"}]}},"required":["amountOwned","currencyId","dcn","filerId","filerName","filingId","formTypeId","id","issueId","issueName","numberOfShares","ownershipTypeId","ownershipTypeName","priceFrom","priceTo","relationshipId","relationshipName","transDate","typeId","typeName"]}},"sortOn":{"type":"string"},"sortDir":{"type":"string"},"key":{"type":"string"},"plural":{"type":"string"},"singular":{"type":"string"},"empty":{"type":"boolean"}},"required":["currentPage","empty","key","pageSize","pages","plural","records","singular","sortDir","sortOn","totalRecords"]}},"required":["data","meta"]},"ofin_get_securities_symbol_insiders_otcResponse":{"type":"object","additionalProperties":true,"properties":{"meta":{"type":"object","additionalProperties":true,"properties":{"provider":{"type":"string"},"route":{"type":"string"},"status":{"type":"string"},"cache":{"type":"string"},"generated_at":{"type":"string"},"freshness":{"type":"object","additionalProperties":true,"properties":{"as_of":{"type":"string"},"ttl_seconds":{"type":"integer"},"stale_seconds":{"type":"integer"},"stale":{"type":"boolean"}},"required":["as_of","stale","stale_seconds","ttl_seconds"]},"params":{"type":"object","additionalProperties":true,"properties":{"symbol":{"type":"string"}},"required":["symbol"]}},"required":["cache","freshness","generated_at","params","provider","route","status"]},"data":{"type":"object","additionalProperties":true,"properties":{"totalRecords":{"type":"integer"},"pages":{"type":"integer"},"currentPage":{"type":"integer"},"pageSize":{"type":"integer"},"sortOn":{"type":"string"},"sortDir":{"type":"string"},"singular":{"type":"string"},"plural":{"type":"string"},"empty":{"type":"boolean"}},"required":["currentPage","empty","pageSize","pages","plural","singular","sortDir","sortOn","totalRecords"]}},"required":["data","meta"]},"ofin_get_securities_symbol_insiders_summaryResponse":{"type":"object","additionalProperties":true,"properties":{"meta":{"type":"object","additionalProperties":true,"properties":{"provider":{"type":"string"},"route":{"type":"string"},"status":{"type":"string"},"cache":{"type":"string"},"generated_at":{"type":"string"},"freshness":{"type":"object","additionalProperties":true,"properties":{"as_of":{"type":"string"},"ttl_seconds":{"type":"integer"},"stale_seconds":{"type":"integer"},"stale":{"type":"boolean"}},"required":["as_of","stale","stale_seconds","ttl_seconds"]},"params":{"type":"object","additionalProperties":true,"properties":{"symbol":{"type":"string"}},"required":["symbol"]}},"required":["cache","freshness","generated_at","params","provider","route","status"]},"data":{"type":"object","additionalProperties":true,"properties":{"issueId":{"nullable":true},"issueName":{"nullable":true},"symbol":{"type":"string"},"numberOfTransactions":{"type":"integer"},"grossShares":{"type":"integer"},"netShares":{"type":"integer"},"numberOfBuys":{"type":"integer"},"sharesBought":{"type":"integer"},"numberOfSells":{"type":"integer"},"sharesSold":{"type":"integer"},"periodName":{"nullable":true}},"required":["grossShares","issueId","issueName","netShares","numberOfBuys","numberOfSells","numberOfTransactions","periodName","sharesBought","sharesSold","symbol"]}},"required":["data","meta"]},"ofin_get_securities_symbol_news_externalResponse":{"type":"object","additionalProperties":true,"properties":{"meta":{"type":"object","additionalProperties":true,"properties":{"provider":{"type":"string"},"route":{"type":"string"},"status":{"type":"string"},"cache":{"type":"string"},"generated_at":{"type":"string"},"freshness":{"type":"object","additionalProperties":true,"properties":{"as_of":{"type":"string"},"ttl_seconds":{"type":"integer"},"stale_seconds":{"type":"integer"},"stale":{"type":"boolean"}},"required":["as_of","stale","stale_seconds","ttl_seconds"]},"params":{"type":"object","additionalProperties":true,"properties":{"symbol":{"type":"string"}},"required":["symbol"]}},"required":["cache","freshness","generated_at","params","provider","route","status"]},"data":{"type":"object","additionalProperties":true,"properties":{"totalRecords":{"type":"integer"},"pages":{"type":"integer"},"currentPage":{"type":"integer"},"pageSize":{"type":"integer"},"sortOn":{"type":"string"},"sortDir":{"type":"string"},"records":{"type":"array","items":{"type":"object","additionalProperties":true,"properties":{"id":{"type":"integer"},"title":{"type":"string"},"releaseDate":{"type":"string"},"sourceDesc":{"type":"string"}},"required":["id","releaseDate","sourceDesc","title"]}},"singular":{"type":"string"},"plural":{"type":"string"},"empty":{"type":"boolean"}},"required":["currentPage","empty","pageSize","pages","plural","records","singular","sortDir","sortOn","totalRecords"]}},"required":["data","meta"]}}},"x-generated-at":"2026-06-07T01:30:59.456Z","x-source-api":"ofin","x-source-base-url":"https://api.ofin.bluedoor.sh"}