{"openapi":"3.1.0","info":{"title":"CompaniesMarketCap Adapter API","version":"0.1.0","description":"CompaniesMarketCap adapter contract for bluedoor.\n\nCompaniesMarketCap-backed rankings and cross-company metric routes.\n\nCompaniesMarketCap source API for bluedoor Financial Data.\nSimple ranking and cross-company metric source for large public companies.\nCoverage: Company search; Market-cap rankings; Company metrics; Category ranking paths.\nGenerated from the live source contract and representative live API responses on 2026-06-07T01:30:59.456Z.","x-bluedoor-adapter":{"slug":"companiesmarketcap","source_id":"cmcfin","upstream":"companiesmarketcap.com","docs_url":"https://bluedoor.sh/adapters/companiesmarketcap/docs"}},"servers":[{"url":"https://api.bluedoor.sh/adapters/companiesmarketcap","description":"bluedoor adapter namespace"},{"url":"https://api.cmcfin.bluedoor.sh","description":"Current source API host"}],"externalDocs":{"description":"CompaniesMarketCap adapter docs","url":"https://bluedoor.sh/adapters/companiesmarketcap/docs"},"tags":[{"name":"Rankings"}],"paths":{"/v1/ranking-paths":{"get":{"summary":"Ranking paths","parameters":[{"name":"refresh","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"x-cmcfin-contact","in":"header","required":false,"schema":{"type":"string","format":"email"},"description":"Optional contact email for higher public rate limits and support diagnostics."},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","example":"Bearer <key>"},"description":"Optional API-key authorization for higher-volume access tiers."}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/cmcfin_get_ranking_pathsResponse"},"examples":{"live":{"summary":"Live response","value":{"ok":true,"data":{"single_segment":[{"key":"global","origin_path":"(homepage)"},{"key":"largest-by-revenue","origin_path":"largest-companies-by-revenue"},{"key":"largest-by-employees","origin_path":"largest-companies-by-number-of-employees"}],"two_segment":[{"category":"banks","ranking_path":"largest-banks-by-market-cap"},{"category":"airlines","ranking_path":"largest-airlines-by-market-cap"},{"category":"automakers","ranking_path":"largest-automakers-by-market-cap"}],"blocked":["assets-by-market-cap","top-companies-by-market-cap-gain"]},"meta":{"source":"companiesmarketcap","request_id":"3969ef7c-e22c-4abb-8a74-1a965554bc77"}}}}}}},"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."}}}}}}}},"operationId":"cmcfin_get_ranking_paths","description":"Returns ranking paths with source-native fields and identifiers.","x-source-api":"cmcfin","x-source-name":"CompaniesMarketCap","x-source-upstream":"companiesmarketcap.com","x-docs-example-url":"https://api.cmcfin.bluedoor.sh/v1/ranking-paths","x-docs-example-status":200,"x-docs-captured-at":"2026-06-07T01:35:56.133Z"}},"/v1/search":{"get":{"summary":"Search","parameters":[{"name":"refresh","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"q","in":"query","required":true,"schema":{"type":"string"}},{"name":"x-cmcfin-contact","in":"header","required":false,"schema":{"type":"string","format":"email"},"description":"Optional contact email for higher public rate limits and support diagnostics."},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","example":"Bearer <key>"},"description":"Optional API-key authorization for higher-volume access tiers."}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/cmcfin_get_searchResponse"},"examples":{"live":{"summary":"Live response","value":{"ok":true,"data":{"query":"apple","results":[{"id":null,"identifier":"AAPL","name":"Apple","url":"apple","img_dark_png":1,"logo_url":"AAPL","type":"stock"},{"id":null,"identifier":"APLE","name":"Apple Hospitality REIT\r\n","url":"apple-hospitality-reit","img_dark_png":0,"logo_url":"APLE","type":"stock"},{"id":null,"identifier":"AMAT","name":"Applied Materials","url":"applied-materials","img_dark_png":1,"logo_url":"AMAT","type":"stock"}],"count":8},"meta":{"source":"companiesmarketcap","provider":"companiesmarketcap","endpoint":"search_json","family":"search_json","route":"search","status":"ok","cache":"miss","identity_tier":"contact","generated_at":"2026-06-07T01:35:56.661Z","freshness":{"max_age_seconds":300,"stale_while_revalidate_seconds":1800,"stale":false},"request_id":"f5a1d06d-bd10-4c20-a085-8916636418b1"}}}}}}},"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."}}}}}}}},"operationId":"cmcfin_get_search","description":"Searches CompaniesMarketCap data and returns source-native matches and identifiers.","x-source-api":"cmcfin","x-source-name":"CompaniesMarketCap","x-source-upstream":"companiesmarketcap.com","x-docs-example-url":"https://api.cmcfin.bluedoor.sh/v1/search?q=apple","x-docs-example-status":200,"x-docs-captured-at":"2026-06-07T01:35:56.882Z"}},"/v1/rankings/{ranking_path}":{"get":{"summary":"Global","parameters":[{"name":"ranking_path","in":"path","required":true,"schema":{"type":"string"}},{"name":"refresh","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"x-cmcfin-contact","in":"header","required":false,"schema":{"type":"string","format":"email"},"description":"Optional contact email for higher public rate limits and support diagnostics."},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","example":"Bearer <key>"},"description":"Optional API-key authorization for higher-volume access tiers."}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/cmcfin_get_rankings_ranking_pathResponse"},"examples":{"live":{"summary":"Live response","value":{"ok":true,"data":{"rows":[{"rank":1,"name":"NVIDIA","symbol":"NVDA","marketcap":4967727366144,"revenue_ttm":null,"employees_count":null,"pe_ratio_ttm":null,"dividend_yield_ttm":null,"operating_margin_ttm":null,"price_usd":205.1,"country":"United States","raw":{"rank":"1","name":"NVIDIA","symbol":"NVDA","marketcap":"4967727366144","price_usd":"205.1","country":"United States"}},{"rank":2,"name":"Apple","symbol":"AAPL","marketcap":4514011676672,"revenue_ttm":null,"employees_count":null,"pe_ratio_ttm":null,"dividend_yield_ttm":null,"operating_margin_ttm":null,"price_usd":307.34,"country":"United States","raw":{"rank":"2","name":"Apple","symbol":"AAPL","marketcap":"4514011676672","price_usd":"307.34","country":"United States"}},{"rank":3,"name":"Alphabet (Google)","symbol":"GOOG","marketcap":4449968848896,"revenue_ttm":null,"employees_count":null,"pe_ratio_ttm":null,"dividend_yield_ttm":null,"operating_margin_ttm":null,"price_usd":365.76,"country":"United States","raw":{"rank":"3","name":"Alphabet (Google)","symbol":"GOOG","marketcap":"4449968848896","price_usd":"365.76","country":"United States"}}],"total":8594,"columns":["rank","name","symbol"],"raw_header":["Rank","Name","Symbol"],"origin_path":null},"meta":{"source":"companiesmarketcap","provider":"companiesmarketcap","endpoint":"html_export_csv","family":"html_export_csv","route":"ranking","status":"ok","cache":"hit","identity_tier":"contact","generated_at":"2026-06-07T01:29:05.579Z","freshness":{"max_age_seconds":1800,"stale_while_revalidate_seconds":86400,"stale":false},"request_id":"020c4345-740f-4960-ae39-8593fc1dafc7","cache_age_seconds":411}}}}}}},"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."}}}}}}}},"operationId":"cmcfin_get_rankings_ranking_path","description":"Returns global with source-native fields and identifiers.","tags":["Rankings"],"x-source-api":"cmcfin","x-source-name":"CompaniesMarketCap","x-source-upstream":"companiesmarketcap.com","x-docs-example-url":"https://api.cmcfin.bluedoor.sh/v1/rankings/global","x-docs-example-status":200,"x-docs-captured-at":"2026-06-07T01:35:57.474Z"}},"/v1/rankings/{category}/{ranking_path}":{"get":{"summary":"Category","parameters":[{"name":"ranking_path","in":"path","required":true,"schema":{"type":"string"}},{"name":"category","in":"path","required":true,"schema":{"type":"string"}},{"name":"refresh","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"x-cmcfin-contact","in":"header","required":false,"schema":{"type":"string","format":"email"},"description":"Optional contact email for higher public rate limits and support diagnostics."},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","example":"Bearer <key>"},"description":"Optional API-key authorization for higher-volume access tiers."}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/cmcfin_get_rankings_category_ranking_pathResponse"},"examples":{"live":{"summary":"Live response","value":{"ok":true,"data":{"rows":[{"rank":1,"name":"JPMorgan Chase","symbol":"JPM","marketcap":836998922240,"revenue_ttm":null,"employees_count":null,"pe_ratio_ttm":null,"dividend_yield_ttm":null,"operating_margin_ttm":null,"price_usd":312.37,"country":"United States","raw":{"rank":"1","name":"JPMorgan Chase","symbol":"JPM","marketcap":"836998922240","price_usd":"312.37","country":"United States"}},{"rank":2,"name":"China Construction Bank","symbol":"601939.SS","marketcap":395204155946,"revenue_ttm":null,"employees_count":null,"pe_ratio_ttm":null,"dividend_yield_ttm":null,"operating_margin_ttm":null,"price_usd":1.51072,"country":"China","raw":{"rank":"2","name":"China Construction Bank","symbol":"601939.SS","marketcap":"395204155946","price_usd":"1.51072","country":"China"}},{"rank":3,"name":"Bank of America","symbol":"BAC","marketcap":382009507840,"revenue_ttm":null,"employees_count":null,"pe_ratio_ttm":null,"dividend_yield_ttm":null,"operating_margin_ttm":null,"price_usd":53.83,"country":"United States","raw":{"rank":"3","name":"Bank of America","symbol":"BAC","marketcap":"382009507840","price_usd":"53.83","country":"United States"}}],"total":674,"columns":["rank","name","symbol"],"raw_header":["Rank","Name","Symbol"],"origin_path":"banks/largest-banks-by-market-cap"},"meta":{"source":"companiesmarketcap","provider":"companiesmarketcap","endpoint":"html_export_csv","family":"html_export_csv","route":"ranking_in_cat","status":"ok","cache":"hit","identity_tier":"contact","generated_at":"2026-06-07T01:06:26.325Z","freshness":{"max_age_seconds":1800,"stale_while_revalidate_seconds":86400,"stale":false},"request_id":"81a8ea37-fc63-4f46-ba55-66fe8c02826e","cache_age_seconds":1771}}}}}}},"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."}}}}}}}},"operationId":"cmcfin_get_rankings_category_ranking_path","description":"Returns category with source-native fields and identifiers.","tags":["Rankings"],"x-source-api":"cmcfin","x-source-name":"CompaniesMarketCap","x-source-upstream":"companiesmarketcap.com","x-docs-example-url":"https://api.cmcfin.bluedoor.sh/v1/rankings/banks/largest-banks-by-market-cap","x-docs-example-status":200,"x-docs-captured-at":"2026-06-07T01:35:57.983Z"}},"/v1/companies/{slug}/metrics/{metric}":{"get":{"summary":"Company metric","parameters":[{"name":"metric","in":"path","required":true,"schema":{"type":"string"}},{"name":"slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"refresh","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"currency","in":"query","required":false,"schema":{"type":"string","enum":["aud","cad","eur","gbp","hkd","inr","nzd","sgd"]}},{"name":"language","in":"query","required":false,"schema":{"type":"string","enum":["de","fr"]}},{"name":"x-cmcfin-contact","in":"header","required":false,"schema":{"type":"string","format":"email"},"description":"Optional contact email for higher public rate limits and support diagnostics."},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","example":"Bearer <key>"},"description":"Optional API-key authorization for higher-volume access tiers."}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/cmcfin_get_companies_slug_metrics_metricResponse"},"examples":{"live":{"summary":"Live response","value":{"ok":true,"data":{"metric":"marketcap","company":{"name":"Apple","symbol":"AAPL","slug":"apple"},"points":[{"date":"1996-01-31","value":34015},{"date":"1996-02-29","value":33857},{"date":"1996-03-29","value":30382}],"point_count":783,"shape":"array","currency":"USD","currency_explicit":false,"language":null,"title":"Apple (AAPL) - Market capitalization"},"meta":{"source":"companiesmarketcap","provider":"companiesmarketcap","endpoint":"html_page_inline_data","family":"html_page_inline_data","route":"company_metric","status":"ok","cache":"hit","identity_tier":"contact","generated_at":"2026-06-07T01:29:07.951Z","freshness":{"max_age_seconds":3600,"stale_while_revalidate_seconds":86400,"stale":false},"request_id":"21c7b0ec-0545-486f-b24e-79ddc7bb6017","cache_age_seconds":410}}}}}}},"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."}}}}}}}},"operationId":"cmcfin_get_companies_slug_metrics_metric","description":"Returns company metric with source-native fields and identifiers.","x-source-api":"cmcfin","x-source-name":"CompaniesMarketCap","x-source-upstream":"companiesmarketcap.com","x-docs-example-url":"https://api.cmcfin.bluedoor.sh/v1/companies/apple/metrics/marketcap","x-docs-example-status":200,"x-docs-captured-at":"2026-06-07T01:35:58.328Z"}}},"components":{"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}}},"cmcfin_get_ranking_pathsResponse":{"type":"object","additionalProperties":true,"properties":{"ok":{"type":"boolean"},"data":{"type":"object","additionalProperties":true,"properties":{"single_segment":{"type":"array","items":{"type":"object","additionalProperties":true,"properties":{"key":{"type":"string"},"origin_path":{"type":"string"}},"required":["key","origin_path"]}},"two_segment":{"type":"array","items":{"type":"object","additionalProperties":true,"properties":{"category":{"type":"string"},"ranking_path":{"type":"string"}},"required":["category","ranking_path"]}},"blocked":{"type":"array","items":{"type":"string"}}},"required":["blocked","single_segment","two_segment"]},"meta":{"type":"object","additionalProperties":true,"properties":{"source":{"type":"string"},"request_id":{"type":"string"}},"required":["request_id","source"]}},"required":["data","meta","ok"]},"cmcfin_get_searchResponse":{"type":"object","additionalProperties":true,"properties":{"ok":{"type":"boolean"},"data":{"type":"object","additionalProperties":true,"properties":{"query":{"type":"string"},"results":{"type":"array","items":{"type":"object","additionalProperties":true,"properties":{"id":{"nullable":true},"identifier":{"type":"string"},"name":{"type":"string"},"url":{"type":"string"},"img_dark_png":{"type":"integer"},"logo_url":{"type":"string"},"type":{"type":"string"}},"required":["id","identifier","img_dark_png","logo_url","name","type","url"]}},"count":{"type":"integer"}},"required":["count","query","results"]},"meta":{"type":"object","additionalProperties":true,"properties":{"source":{"type":"string"},"provider":{"type":"string"},"endpoint":{"type":"string"},"family":{"type":"string"},"route":{"type":"string"},"status":{"type":"string"},"cache":{"type":"string"},"identity_tier":{"type":"string"},"generated_at":{"type":"string"},"freshness":{"type":"object","additionalProperties":true,"properties":{"max_age_seconds":{"type":"integer"},"stale_while_revalidate_seconds":{"type":"integer"},"stale":{"type":"boolean"}},"required":["max_age_seconds","stale","stale_while_revalidate_seconds"]},"request_id":{"type":"string"}},"required":["cache","endpoint","family","freshness","generated_at","identity_tier","provider","request_id","route","source","status"]}},"required":["data","meta","ok"]},"cmcfin_get_rankings_ranking_pathResponse":{"type":"object","additionalProperties":true,"properties":{"ok":{"type":"boolean"},"data":{"type":"object","additionalProperties":true,"properties":{"rows":{"type":"array","items":{"type":"object","additionalProperties":true,"properties":{"rank":{"type":"integer"},"name":{"type":"string"},"symbol":{"type":"string"},"marketcap":{"type":"integer"},"revenue_ttm":{"nullable":true},"employees_count":{"nullable":true},"pe_ratio_ttm":{"nullable":true},"dividend_yield_ttm":{"nullable":true},"operating_margin_ttm":{"nullable":true},"price_usd":{"oneOf":[{"type":"number"},{"type":"integer"}]},"country":{"type":"string"},"raw":{"type":"object","additionalProperties":true,"properties":{"rank":{"type":"string"},"name":{"type":"string"},"symbol":{"type":"string"},"marketcap":{"type":"string"},"price_usd":{"type":"string"},"country":{"type":"string"}},"required":["country","marketcap","name","price_usd","rank","symbol"]}},"required":["country","dividend_yield_ttm","employees_count","marketcap","name","operating_margin_ttm","pe_ratio_ttm","price_usd","rank","raw","revenue_ttm","symbol"]}},"total":{"type":"integer"},"columns":{"type":"array","items":{"type":"string"}},"raw_header":{"type":"array","items":{"type":"string"}},"origin_path":{"nullable":true}},"required":["columns","origin_path","raw_header","rows","total"]},"meta":{"type":"object","additionalProperties":true,"properties":{"source":{"type":"string"},"provider":{"type":"string"},"endpoint":{"type":"string"},"family":{"type":"string"},"route":{"type":"string"},"status":{"type":"string"},"cache":{"type":"string"},"identity_tier":{"type":"string"},"generated_at":{"type":"string"},"freshness":{"type":"object","additionalProperties":true,"properties":{"max_age_seconds":{"type":"integer"},"stale_while_revalidate_seconds":{"type":"integer"},"stale":{"type":"boolean"}},"required":["max_age_seconds","stale","stale_while_revalidate_seconds"]},"request_id":{"type":"string"},"cache_age_seconds":{"type":"integer"}},"required":["cache","cache_age_seconds","endpoint","family","freshness","generated_at","identity_tier","provider","request_id","route","source","status"]}},"required":["data","meta","ok"]},"cmcfin_get_rankings_category_ranking_pathResponse":{"type":"object","additionalProperties":true,"properties":{"ok":{"type":"boolean"},"data":{"type":"object","additionalProperties":true,"properties":{"rows":{"type":"array","items":{"type":"object","additionalProperties":true,"properties":{"rank":{"type":"integer"},"name":{"type":"string"},"symbol":{"type":"string"},"marketcap":{"type":"integer"},"revenue_ttm":{"nullable":true},"employees_count":{"nullable":true},"pe_ratio_ttm":{"nullable":true},"dividend_yield_ttm":{"nullable":true},"operating_margin_ttm":{"nullable":true},"price_usd":{"type":"number"},"country":{"type":"string"},"raw":{"type":"object","additionalProperties":true,"properties":{"rank":{"type":"string"},"name":{"type":"string"},"symbol":{"type":"string"},"marketcap":{"type":"string"},"price_usd":{"type":"string"},"country":{"type":"string"}},"required":["country","marketcap","name","price_usd","rank","symbol"]}},"required":["country","dividend_yield_ttm","employees_count","marketcap","name","operating_margin_ttm","pe_ratio_ttm","price_usd","rank","raw","revenue_ttm","symbol"]}},"total":{"type":"integer"},"columns":{"type":"array","items":{"type":"string"}},"raw_header":{"type":"array","items":{"type":"string"}},"origin_path":{"type":"string"}},"required":["columns","origin_path","raw_header","rows","total"]},"meta":{"type":"object","additionalProperties":true,"properties":{"source":{"type":"string"},"provider":{"type":"string"},"endpoint":{"type":"string"},"family":{"type":"string"},"route":{"type":"string"},"status":{"type":"string"},"cache":{"type":"string"},"identity_tier":{"type":"string"},"generated_at":{"type":"string"},"freshness":{"type":"object","additionalProperties":true,"properties":{"max_age_seconds":{"type":"integer"},"stale_while_revalidate_seconds":{"type":"integer"},"stale":{"type":"boolean"}},"required":["max_age_seconds","stale","stale_while_revalidate_seconds"]},"request_id":{"type":"string"},"cache_age_seconds":{"type":"integer"}},"required":["cache","cache_age_seconds","endpoint","family","freshness","generated_at","identity_tier","provider","request_id","route","source","status"]}},"required":["data","meta","ok"]},"cmcfin_get_companies_slug_metrics_metricResponse":{"type":"object","additionalProperties":true,"properties":{"ok":{"type":"boolean"},"data":{"type":"object","additionalProperties":true,"properties":{"metric":{"type":"string"},"company":{"type":"object","additionalProperties":true,"properties":{"name":{"type":"string"},"symbol":{"type":"string"},"slug":{"type":"string"}},"required":["name","slug","symbol"]},"points":{"type":"array","items":{"type":"object","additionalProperties":true,"properties":{"date":{"type":"string"},"value":{"type":"integer"}},"required":["date","value"]}},"point_count":{"type":"integer"},"shape":{"type":"string"},"currency":{"type":"string"},"currency_explicit":{"type":"boolean"},"language":{"nullable":true},"title":{"type":"string"}},"required":["company","currency","currency_explicit","language","metric","point_count","points","shape","title"]},"meta":{"type":"object","additionalProperties":true,"properties":{"source":{"type":"string"},"provider":{"type":"string"},"endpoint":{"type":"string"},"family":{"type":"string"},"route":{"type":"string"},"status":{"type":"string"},"cache":{"type":"string"},"identity_tier":{"type":"string"},"generated_at":{"type":"string"},"freshness":{"type":"object","additionalProperties":true,"properties":{"max_age_seconds":{"type":"integer"},"stale_while_revalidate_seconds":{"type":"integer"},"stale":{"type":"boolean"}},"required":["max_age_seconds","stale","stale_while_revalidate_seconds"]},"request_id":{"type":"string"},"cache_age_seconds":{"type":"integer"}},"required":["cache","cache_age_seconds","endpoint","family","freshness","generated_at","identity_tier","provider","request_id","route","source","status"]}},"required":["data","meta","ok"]}}},"x-generated-at":"2026-06-07T01:30:59.456Z","x-source-api":"cmcfin","x-source-base-url":"https://api.cmcfin.bluedoor.sh"}