{
  "title": "Requests — public project evidence",
  "reviewedAt": "2026-10-25T03:10:40.622918Z",
  "coverage": "Reviewed, non-exhaustive selection of public projects from companies, foundations and open-source communities. Each entry proves the named project and usage scope at a pinned revision, not current runtime activity, company-wide deployment, or token endorsement. Organization counts are distinct directory labels, not a count of corporate parent groups.",
  "updatePolicy": "Reviewed source snapshot; not a live organization-activity feed. Each checkedAt is an evidence review timestamp.",
  "entries": [
    {
      "id": "microsoft-azure-cli",
      "organization": "Microsoft",
      "project": "Azure CLI",
      "repository": "Azure/azure-cli",
      "category": "Cloud & platforms",
      "summary": "Azure CLI uses Requests to retrieve version information from Microsoft storage.",
      "evidenceType": "Code usage",
      "evidenceUrl": "https://github.com/Azure/azure-cli/blob/0fb575456532726e3c83aadb300957424dde8e9c/src/azure-cli-core/azure/cli/core/util.py#L304-L307",
      "sourcePath": "src/azure-cli-core/azure/cli/core/util.py",
      "commitSha": "0fb575456532726e3c83aadb300957424dde8e9c",
      "evidenceSnippet": "        import requests\n        storage_url = \"{}/{}/setup.py\".format(AME_STORAGE_BASE_URL, package_path)\n\n        response = requests.get(storage_url, timeout=10)",
      "lineStart": 304,
      "lineEnd": 307,
      "checkedAt": "2026-10-25T01:27:26Z",
      "archived": false,
      "sourceSha256": "03bfa5b113e47b972e1b0b9745d632c7fe451cd904053f1be6fbbd35bfd76a54",
      "sourceBlobSha": "3960de13d14093f21df83858bb616f9e5a40eb9a",
      "sector": "technology",
      "useScope": "Application",
      "avatarSource": "https://avatars.githubusercontent.com/u/6844498?v=4",
      "avatarPath": "/static/observatory/organizations/microsoft-azure-cli.png",
      "usageDetails": {
        "title": "Checking Azure CLI release version information",
        "explanation": "Azure CLI uses Requests in a release-version lookup helper. It downloads a package's setup file from Microsoft's release storage, checks that the server returned a successful response, and reads the version declaration from the returned text. This lets the CLI obtain published version information without relying on a GitHub lookup in that code path.",
        "flow": [
          "Build the release-storage URL for the selected Azure CLI package.",
          "Fetch its setup file with Requests and check the HTTP response.",
          "Read the version declaration and return the published version string."
        ],
        "scopeNote": "This describes a specific Azure CLI version-check helper, not a measurement of Microsoft-wide usage or currently running downloads.",
        "verification": "code",
        "sources": [
          {
            "label": "Release version lookup",
            "repository": "Azure/azure-cli",
            "commitSha": "0fb575456532726e3c83aadb300957424dde8e9c",
            "sourcePath": "src/azure-cli-core/azure/cli/core/util.py",
            "lineStart": 294,
            "lineEnd": 320,
            "evidenceUrl": "https://github.com/Azure/azure-cli/blob/0fb575456532726e3c83aadb300957424dde8e9c/src/azure-cli-core/azure/cli/core/util.py#L294-L320",
            "checkedAt": "2026-10-25T03:07:33.272Z",
            "sourceSha256": "03bfa5b113e47b972e1b0b9745d632c7fe451cd904053f1be6fbbd35bfd76a54",
            "sourceBlobSha": "3960de13d14093f21df83858bb616f9e5a40eb9a"
          }
        ]
      }
    },
    {
      "id": "meta-business-sdk",
      "organization": "Meta",
      "project": "Facebook Business SDK for Python",
      "repository": "facebook/facebook-python-business-sdk",
      "category": "Developer tools",
      "summary": "Meta's Python Business SDK declares Requests as an installation dependency.",
      "evidenceType": "Direct dependency",
      "evidenceUrl": "https://github.com/facebook/facebook-python-business-sdk/blob/efd8423a2e595ea8d4c04eb824ce113f2f1d68cd/requirements.txt#L1-L1",
      "sourcePath": "requirements.txt",
      "commitSha": "efd8423a2e595ea8d4c04eb824ce113f2f1d68cd",
      "evidenceSnippet": "requests >= 2.3.0",
      "lineStart": 1,
      "lineEnd": 1,
      "checkedAt": "2026-10-25T01:27:26Z",
      "archived": false,
      "sourceSha256": "e259c6b12900b7087b81f9c19b37a307209495b9ee23165302eb2dd06513151e",
      "sourceBlobSha": "0e41c6e003b7c904d87e37d98c196d87906f2b93",
      "sector": "technology",
      "useScope": "SDK",
      "avatarSource": "https://avatars.githubusercontent.com/u/69631?v=4",
      "avatarPath": "/static/observatory/organizations/meta-business-sdk.png",
      "usageDetails": {
        "title": "Sending Graph API operations over HTTP",
        "explanation": "The SDK turns a Graph API operation into an HTTP request. It builds the versioned endpoint, adds standard headers, and places parameters in the query string for GET or DELETE, or in the body for other methods. A Requests session carries the call with uploads and timeout settings. The SDK then wraps the returned body, headers, and status in its own response object.",
        "flow": [
          "The SDK builds the versioned Graph endpoint and request parameters.",
          "Its Requests session sends the operation with headers and timeout.",
          "The SDK wraps the response and raises any API error."
        ],
        "scopeNote": "This describes the public Business SDK's Graph API transport. It establishes client functionality, without observing Meta's internal systems or live activity.",
        "verification": "code",
        "sources": [
          {
            "label": "Graph API request dispatch",
            "repository": "facebook/facebook-python-business-sdk",
            "commitSha": "efd8423a2e595ea8d4c04eb824ce113f2f1d68cd",
            "sourcePath": "facebook_business/api.py",
            "lineStart": 282,
            "lineEnd": 339,
            "evidenceUrl": "https://github.com/facebook/facebook-python-business-sdk/blob/efd8423a2e595ea8d4c04eb824ce113f2f1d68cd/facebook_business/api.py#L282-L339",
            "checkedAt": "2026-10-25T03:10:24Z",
            "sourceSha256": "2f2e537354859758faba0d89a910b2212b478e0b2aaee771bb1c239abf4c2c72",
            "sourceBlobSha": "adb385ac45a0355abab87e339a6de8ec099f49a7"
          },
          {
            "label": "Requests session and access-token setup",
            "repository": "facebook/facebook-python-business-sdk",
            "commitSha": "efd8423a2e595ea8d4c04eb824ce113f2f1d68cd",
            "sourcePath": "facebook_business/session.py",
            "lineStart": 38,
            "lineEnd": 60,
            "evidenceUrl": "https://github.com/facebook/facebook-python-business-sdk/blob/efd8423a2e595ea8d4c04eb824ce113f2f1d68cd/facebook_business/session.py#L38-L60",
            "checkedAt": "2026-10-25T03:10:24Z",
            "sourceSha256": "72dd2e43efacc27728222d6c176202f6ff8919a85ba19811ac71fa357bc01587",
            "sourceBlobSha": "3dad0d9eccec85d8630eeada00545d4039b1dd42"
          }
        ]
      }
    },
    {
      "id": "google-auth",
      "organization": "Google",
      "project": "Google Auth for Python",
      "repository": "googleapis/google-cloud-python",
      "category": "Cloud & platforms",
      "summary": "Google Auth includes an optional Requests-based transport for authenticated HTTP calls.",
      "evidenceType": "Code usage",
      "evidenceUrl": "https://github.com/googleapis/google-cloud-python/blob/eb8a76628adf10093959600071a18f50285c2ecf/packages/google-auth/google/auth/transport/requests.py#L414-L414",
      "sourcePath": "packages/google-auth/google/auth/transport/requests.py",
      "commitSha": "eb8a76628adf10093959600071a18f50285c2ecf",
      "evidenceSnippet": "class AuthorizedSession(requests.Session):",
      "lineStart": 414,
      "lineEnd": 414,
      "checkedAt": "2026-10-25T01:27:26Z",
      "archived": false,
      "sourceSha256": "eae46f3e87edce8ff85fb533316dcce7c4ac9cc36e27650a55cbf83b9c91bc86",
      "sourceBlobSha": "3f1ec345765cd9040eac046c098056bbbc8643ec",
      "sector": "technology",
      "useScope": "Optional transport",
      "avatarSource": "https://avatars.githubusercontent.com/u/16785467?v=4",
      "avatarPath": "/static/observatory/organizations/google-auth.png",
      "usageDetails": {
        "title": "Adding Google credentials to HTTP calls",
        "explanation": "Google Auth offers an optional HTTP transport built on Requests. Its authorized session asks the credential object to prepare authentication headers, then sends the caller's HTTP request through the Requests session. If a response indicates that credentials need refreshing, the wrapper refreshes them and retries within its configured limits. Requests carries the network traffic while Google Auth manages credentials.",
        "flow": [
          "Prepare authentication headers using the configured Google credential object.",
          "Send the requested URL, method, and body through Requests.",
          "Refresh credentials and retry when the response requires renewed authentication."
        ],
        "scopeNote": "This is the optional Requests transport in Google Auth; other transports exist, and this is not Google-wide runtime telemetry.",
        "verification": "code",
        "sources": [
          {
            "label": "Authenticated HTTP request",
            "repository": "googleapis/google-cloud-python",
            "commitSha": "eb8a76628adf10093959600071a18f50285c2ecf",
            "sourcePath": "packages/google-auth/google/auth/transport/requests.py",
            "lineStart": 705,
            "lineEnd": 746,
            "evidenceUrl": "https://github.com/googleapis/google-cloud-python/blob/eb8a76628adf10093959600071a18f50285c2ecf/packages/google-auth/google/auth/transport/requests.py#L705-L746",
            "checkedAt": "2026-10-25T03:07:35.676Z",
            "sourceSha256": "eae46f3e87edce8ff85fb533316dcce7c4ac9cc36e27650a55cbf83b9c91bc86",
            "sourceBlobSha": "3f1ec345765cd9040eac046c098056bbbc8643ec"
          },
          {
            "label": "Credential refresh and retry",
            "repository": "googleapis/google-cloud-python",
            "commitSha": "eb8a76628adf10093959600071a18f50285c2ecf",
            "sourcePath": "packages/google-auth/google/auth/transport/requests.py",
            "lineStart": 779,
            "lineEnd": 811,
            "evidenceUrl": "https://github.com/googleapis/google-cloud-python/blob/eb8a76628adf10093959600071a18f50285c2ecf/packages/google-auth/google/auth/transport/requests.py#L779-L811",
            "checkedAt": "2026-10-25T03:07:35.676Z",
            "sourceSha256": "eae46f3e87edce8ff85fb533316dcce7c4ac9cc36e27650a55cbf83b9c91bc86",
            "sourceBlobSha": "3f1ec345765cd9040eac046c098056bbbc8643ec"
          }
        ]
      }
    },
    {
      "id": "aws-sagemaker",
      "organization": "Amazon Web Services",
      "project": "SageMaker Core",
      "repository": "aws/sagemaker-python-sdk",
      "category": "AI & data",
      "summary": "The SageMaker Core package declares Requests as a runtime dependency.",
      "evidenceType": "Direct dependency",
      "evidenceUrl": "https://github.com/aws/sagemaker-python-sdk/blob/6a5d943600391ae2505a8935701d7d539f84f579/sagemaker-core/pyproject.toml#L25-L25",
      "sourcePath": "sagemaker-core/pyproject.toml",
      "commitSha": "6a5d943600391ae2505a8935701d7d539f84f579",
      "evidenceSnippet": "    \"requests>=2.20.0,<3.0.0\",",
      "lineStart": 25,
      "lineEnd": 25,
      "checkedAt": "2026-10-25T01:27:26Z",
      "archived": false,
      "sourceSha256": "eb8b7c8fdaeac50087c9fe09db22b01c783e505014f53435a06b54628794a619",
      "sourceBlobSha": "78a3b57309c532d309239d79fa4c5c5b79a23e17",
      "sector": "technology",
      "useScope": "SDK",
      "avatarSource": "https://avatars.githubusercontent.com/u/2232217?v=4",
      "avatarPath": "/static/observatory/organizations/aws-sagemaker.png",
      "usageDetails": {
        "title": "Sending SageMaker SDK usage telemetry in background",
        "explanation": "SageMaker Core's telemetry helper records information about an SDK operation, such as its feature, outcome, environment and elapsed time. When telemetry is enabled, it builds a regional S3 telemetry URL and sends a GET request using Requests. The send runs in a background daemon thread with a short timeout, while request failures are handled without replacing the SDK operation's result.",
        "flow": [
          "Check telemetry configuration and collect information about the SDK operation.",
          "Build the regional telemetry URL with the collected event fields.",
          "Send the GET request in a background thread with a timeout."
        ],
        "scopeNote": "This describes SageMaker Core's configurable telemetry path, not every AWS API request or an independently observed customer deployment.",
        "verification": "code",
        "sources": [
          {
            "label": "Telemetry configuration and operation context",
            "repository": "aws/sagemaker-python-sdk",
            "commitSha": "6a5d943600391ae2505a8935701d7d539f84f579",
            "sourcePath": "sagemaker-core/src/sagemaker/core/telemetry/telemetry_logging.py",
            "lineStart": 316,
            "lineEnd": 435,
            "evidenceUrl": "https://github.com/aws/sagemaker-python-sdk/blob/6a5d943600391ae2505a8935701d7d539f84f579/sagemaker-core/src/sagemaker/core/telemetry/telemetry_logging.py#L316-L435",
            "checkedAt": "2026-10-25T03:10:40.622918Z",
            "sourceSha256": "e3383d762f33b669cb80891cdb7367d5c1254427b6dcac5927ab613aca489602",
            "sourceBlobSha": "032a8954f8a6ab2f7543290baeb9ba47c20bccb4"
          },
          {
            "label": "Background sender and Requests GET",
            "repository": "aws/sagemaker-python-sdk",
            "commitSha": "6a5d943600391ae2505a8935701d7d539f84f579",
            "sourcePath": "sagemaker-core/src/sagemaker/core/telemetry/telemetry_logging.py",
            "lineStart": 437,
            "lineEnd": 613,
            "evidenceUrl": "https://github.com/aws/sagemaker-python-sdk/blob/6a5d943600391ae2505a8935701d7d539f84f579/sagemaker-core/src/sagemaker/core/telemetry/telemetry_logging.py#L437-L613",
            "checkedAt": "2026-10-25T03:10:40.622918Z",
            "sourceSha256": "e3383d762f33b669cb80891cdb7367d5c1254427b6dcac5927ab613aca489602",
            "sourceBlobSha": "032a8954f8a6ab2f7543290baeb9ba47c20bccb4"
          }
        ]
      }
    },
    {
      "id": "openai-tiktoken",
      "organization": "OpenAI",
      "project": "tiktoken",
      "repository": "openai/tiktoken",
      "category": "AI & data",
      "sector": "technology",
      "summary": "tiktoken uses Requests to fetch public tokenizer data over HTTP.",
      "useScope": "Library",
      "evidenceType": "Code usage",
      "sourcePath": "tiktoken/load.py",
      "commitSha": "4e71bbe0c078468e00fefbf94b39849389f346e5",
      "lineStart": 15,
      "lineEnd": 18,
      "checkedAt": "2026-10-25T02:51:47.372Z",
      "archived": false,
      "sourceBlobSha": "3c76bcb3e7c117e8eaca064ef677c28d79096cb7",
      "avatarSource": "https://avatars.githubusercontent.com/u/14957082?v=4",
      "sourceSha256": "43c3cfb29dc48a74e70e0c85bb01cfd96a3de069a98de8778ccab7f72a2836cc",
      "evidenceSnippet": "        import requests\n\n        resp = requests.get(blobpath)\n        resp.raise_for_status()",
      "evidenceUrl": "https://github.com/openai/tiktoken/blob/4e71bbe0c078468e00fefbf94b39849389f346e5/tiktoken/load.py#L15-L18",
      "repositoryOwner": "openai",
      "defaultBranch": "main",
      "avatarPath": "/static/observatory/organizations/openai-tiktoken.png",
      "usageDetails": {
        "title": "Fetching tokenizer data before local tokenization",
        "explanation": "tiktoken's data loader uses Requests when a tokenizer data location starts with HTTP or HTTPS. It retrieves the bytes and raises an error for an unsuccessful HTTP response. The surrounding cache loader can reuse a local copy, check an expected SHA-256 digest and save newly downloaded data, so a usable cached file avoids another download.",
        "flow": [
          "Check whether the tokenizer data already exists in the local cache.",
          "Fetch missing HTTP data with Requests and check the response status.",
          "Verify the expected digest when supplied, then cache the downloaded bytes."
        ],
        "scopeNote": "This covers tiktoken's public HTTP data-loading path, not OpenAI's API SDK or a claim about ChatGPT's internal traffic.",
        "verification": "code",
        "sources": [
          {
            "label": "Tokenizer HTTP loading and cache validation",
            "repository": "openai/tiktoken",
            "commitSha": "4e71bbe0c078468e00fefbf94b39849389f346e5",
            "sourcePath": "tiktoken/load.py",
            "lineStart": 8,
            "lineEnd": 86,
            "evidenceUrl": "https://github.com/openai/tiktoken/blob/4e71bbe0c078468e00fefbf94b39849389f346e5/tiktoken/load.py#L8-L86",
            "checkedAt": "2026-10-25T03:10:40.622918Z",
            "sourceSha256": "43c3cfb29dc48a74e70e0c85bb01cfd96a3de069a98de8778ccab7f72a2836cc",
            "sourceBlobSha": "3c76bcb3e7c117e8eaca064ef677c28d79096cb7"
          }
        ]
      }
    },
    {
      "id": "nvidia-nemo-speech",
      "organization": "NVIDIA",
      "project": "NeMo Speech voice agent",
      "repository": "NVIDIA-NeMo/Speech",
      "category": "AI & data",
      "sector": "technology",
      "summary": "NeMo Speech's voice-agent service uses Requests to check a local model server's availability.",
      "useScope": "Model-serving integration",
      "evidenceType": "Code usage",
      "sourcePath": "nemo/agents/voice_agent/pipecat/services/nemo/llm.py",
      "commitSha": "964bdfea591aadc37ec574d90818995c2d7dbd7f",
      "lineStart": 420,
      "lineEnd": 420,
      "checkedAt": "2026-10-25T02:51:47.373Z",
      "archived": false,
      "sourceBlobSha": "d0e92e69ea0a4ed928fa2b7939c7b3f5cc344537",
      "avatarSource": "https://avatars.githubusercontent.com/u/213689629?v=4",
      "sourceSha256": "aab96ca120008e4d71b6ed0a01587abe422461800f824bb0fe51498f297f9403",
      "evidenceSnippet": "                response = requests.get(f\"http://localhost:{port}/v1/models\", timeout=5)",
      "evidenceUrl": "https://github.com/NVIDIA-NeMo/Speech/blob/964bdfea591aadc37ec574d90818995c2d7dbd7f/nemo/agents/voice_agent/pipecat/services/nemo/llm.py#L420-L420",
      "repositoryOwner": "NVIDIA-NeMo",
      "defaultBranch": "main",
      "avatarPath": "/static/observatory/organizations/nvidia-nemo-speech.png",
      "usageDetails": {
        "title": "Checking an existing local model server",
        "explanation": "NeMo Speech's voice-agent integration checks whether a vLLM server is already listening on the requested local port. Requests calls the server's models endpoint with a five-second timeout. The helper reads the returned model identifier and can reuse the server when it matches the requested model, avoiding an unnecessary second server startup.",
        "flow": [
          "Choose the local port requested by the voice-agent model configuration.",
          "Request the models endpoint and read the returned model identifier.",
          "Reuse the existing server when it serves the requested model."
        ],
        "scopeNote": "The evidence concerns a local server check inside NeMo Speech, not Requests performing inference or monitoring NVIDIA-wide infrastructure.",
        "verification": "code",
        "sources": [
          {
            "label": "Model-server probe and reuse decision",
            "repository": "NVIDIA-NeMo/Speech",
            "commitSha": "964bdfea591aadc37ec574d90818995c2d7dbd7f",
            "sourcePath": "nemo/agents/voice_agent/pipecat/services/nemo/llm.py",
            "lineStart": 417,
            "lineEnd": 448,
            "evidenceUrl": "https://github.com/NVIDIA-NeMo/Speech/blob/964bdfea591aadc37ec574d90818995c2d7dbd7f/nemo/agents/voice_agent/pipecat/services/nemo/llm.py#L417-L448",
            "checkedAt": "2026-10-25T03:10:40.622918Z",
            "sourceSha256": "aab96ca120008e4d71b6ed0a01587abe422461800f824bb0fe51498f297f9403",
            "sourceBlobSha": "d0e92e69ea0a4ed928fa2b7939c7b3f5cc344537"
          }
        ]
      }
    },
    {
      "id": "huggingface-diffusers",
      "organization": "Hugging Face",
      "project": "Diffusers",
      "repository": "huggingface/diffusers",
      "category": "AI & data",
      "sector": "technology",
      "summary": "Diffusers declares Requests among its installation dependencies.",
      "useScope": "Library",
      "evidenceType": "Direct dependency",
      "sourcePath": "setup.py",
      "commitSha": "aaf57d03a3edfbd9de457d2872417a92f149a91d",
      "lineStart": 265,
      "lineEnd": 265,
      "checkedAt": "2026-10-25T02:51:47.373Z",
      "archived": false,
      "sourceBlobSha": "f490209e99f2b9891b20afa135909834612096fd",
      "avatarSource": "https://avatars.githubusercontent.com/u/25720743?v=4",
      "sourceSha256": "f5f028d08ebf6200f0e5411b303392c7f0509a38e0b8006a19bf9315355f1595",
      "evidenceSnippet": "    deps[\"requests\"],",
      "evidenceUrl": "https://github.com/huggingface/diffusers/blob/aaf57d03a3edfbd9de457d2872417a92f149a91d/setup.py#L265-L265",
      "repositoryOwner": "huggingface",
      "defaultBranch": "main",
      "avatarPath": "/static/observatory/organizations/huggingface-diffusers.png",
      "usageDetails": {
        "title": "Loading remote images and videos for pipelines",
        "explanation": "Diffusers uses Requests in its image and video loading utilities when an input is an HTTP URL. The image path opens the streamed response as a Pillow image, corrects orientation and converts its color format. The video path downloads chunks into a temporary file before converting video frames into images that a calling pipeline can use.",
        "flow": [
          "Accept an image or video URL supplied to a loading utility.",
          "Use Requests to retrieve the remote image stream or video bytes.",
          "Convert the downloaded media into image objects for the caller."
        ],
        "scopeNote": "These calls load URL-based media inputs; they do not establish that every Diffusers operation or model download uses Requests.",
        "verification": "code",
        "sources": [
          {
            "label": "Remote image and video loading",
            "repository": "huggingface/diffusers",
            "commitSha": "aaf57d03a3edfbd9de457d2872417a92f149a91d",
            "sourcePath": "src/diffusers/utils/loading_utils.py",
            "lineStart": 14,
            "lineEnd": 140,
            "evidenceUrl": "https://github.com/huggingface/diffusers/blob/aaf57d03a3edfbd9de457d2872417a92f149a91d/src/diffusers/utils/loading_utils.py#L14-L140",
            "checkedAt": "2026-10-25T03:10:40.622918Z",
            "sourceSha256": "8972d31e77a9f7724d7d246be02003fcaf3d245c3b78e2f312ac84403346c074",
            "sourceBlobSha": "ba528c7f857cce7c745f4f32626c677797ed7b0e"
          }
        ]
      }
    },
    {
      "id": "coinbase",
      "organization": "Coinbase",
      "project": "Advanced Trade Python SDK",
      "repository": "coinbase/coinbase-advanced-py",
      "category": "Crypto & Web3",
      "summary": "The Advanced Trade SDK creates a Requests session for its REST client.",
      "useScope": "SDK",
      "evidenceType": "Code usage",
      "evidenceUrl": "https://github.com/coinbase/coinbase-advanced-py/blob/338a4e34f497ff51bd6c61ae440061235dbf8fa9/coinbase/rest/rest_base.py#L73-L77",
      "sourcePath": "coinbase/rest/rest_base.py",
      "commitSha": "338a4e34f497ff51bd6c61ae440061235dbf8fa9",
      "evidenceSnippet": "        self.rate_limit_headers = rate_limit_headers\n        self.session = requests.Session()\n        if verbose:\n            logger.setLevel(logging.DEBUG)\n",
      "lineStart": 73,
      "lineEnd": 77,
      "checkedAt": "2026-10-25T01:26:47Z",
      "archived": false,
      "repositoryOwner": "coinbase",
      "defaultBranch": "master",
      "sourceBlobSha": "017d460b0649f487f786a7d1a0aa945b3acd68f0",
      "sourceSha256": "05708e76001707ea56c45ec680ac5305b2a51061ed0122840f446930845d1cec",
      "sector": "crypto",
      "avatarSource": "https://avatars.githubusercontent.com/u/1885080?v=4",
      "avatarPath": "/static/observatory/organizations/coinbase.png",
      "usageDetails": {
        "title": "Sending authenticated Advanced Trade API requests",
        "explanation": "The Advanced Trade Python SDK uses a Requests session as its REST transport. It combines the configured API host with an endpoint path, then sends the selected HTTP method, query parameters, JSON body, headers, and timeout. For authenticated calls, the surrounding code builds a bearer token. The response becomes decoded JSON, with optional rate limit headers and explicit HTTP error handling.",
        "flow": [
          "Combine the configured API host with the selected endpoint path.",
          "Send parameters and JSON through the session with authentication when required.",
          "Check HTTP errors and return decoded data with optional rate limits."
        ],
        "scopeNote": "This evidence covers the public Python SDK’s client transport; it does not establish how Coinbase’s exchange backend is implemented.",
        "verification": "code",
        "sources": [
          {
            "label": "Persistent Requests session",
            "repository": "coinbase/coinbase-advanced-py",
            "commitSha": "338a4e34f497ff51bd6c61ae440061235dbf8fa9",
            "sourcePath": "coinbase/rest/rest_base.py",
            "lineStart": 64,
            "lineEnd": 77,
            "evidenceUrl": "https://github.com/coinbase/coinbase-advanced-py/blob/338a4e34f497ff51bd6c61ae440061235dbf8fa9/coinbase/rest/rest_base.py#L64-L77",
            "checkedAt": "2026-10-25T01:26:47Z",
            "sourceSha256": "05708e76001707ea56c45ec680ac5305b2a51061ed0122840f446930845d1cec",
            "sourceBlobSha": "017d460b0649f487f786a7d1a0aa945b3acd68f0"
          },
          {
            "label": "REST dispatch and authentication",
            "repository": "coinbase/coinbase-advanced-py",
            "commitSha": "338a4e34f497ff51bd6c61ae440061235dbf8fa9",
            "sourcePath": "coinbase/rest/rest_base.py",
            "lineStart": 183,
            "lineEnd": 260,
            "evidenceUrl": "https://github.com/coinbase/coinbase-advanced-py/blob/338a4e34f497ff51bd6c61ae440061235dbf8fa9/coinbase/rest/rest_base.py#L183-L260",
            "checkedAt": "2026-10-25T01:26:47Z",
            "sourceSha256": "05708e76001707ea56c45ec680ac5305b2a51061ed0122840f446930845d1cec",
            "sourceBlobSha": "017d460b0649f487f786a7d1a0aa945b3acd68f0"
          }
        ]
      }
    },
    {
      "id": "binance",
      "organization": "Binance",
      "project": "Binance Python connectors",
      "repository": "binance/binance-connector-python",
      "category": "Crypto & Web3",
      "summary": "Binance's connector utilities extend Requests' HTTPAdapter for HTTPS transport.",
      "useScope": "SDK",
      "evidenceType": "Code usage",
      "evidenceUrl": "https://github.com/binance/binance-connector-python/blob/d70e4dc58a1773cd129815157d2e1b44bb81392d/common/src/binance_common/utils.py#L78-L82",
      "sourcePath": "common/src/binance_common/utils.py",
      "commitSha": "d70e4dc58a1773cd129815157d2e1b44bb81392d",
      "evidenceSnippet": "\nclass CustomHTTPSAdapter(requests.adapters.HTTPAdapter):\n    \"\"\"A custom HTTPS adapter that supports SSLContext (including certificate pinning).\"\"\"\n\n    def __init__(self, ssl_context: Optional[ssl.SSLContext] = None, **kwargs):",
      "lineStart": 78,
      "lineEnd": 82,
      "checkedAt": "2026-10-25T01:26:47Z",
      "archived": false,
      "repositoryOwner": "binance",
      "defaultBranch": "master",
      "sourceBlobSha": "6f12bcb4bd623cc58f485c60b6c999586c944b7f",
      "sourceSha256": "bbc99f348682bdc6caad65a89bf49468dd2fa96ff182d775d40479e4f1327297",
      "sector": "crypto",
      "avatarSource": "https://avatars.githubusercontent.com/u/69836600?v=4",
      "avatarPath": "/static/observatory/organizations/binance.png",
      "usageDetails": {
        "title": "Transporting REST calls for Binance connectors",
        "explanation": "The connectors’ shared Python utilities use a Requests session to dispatch REST API calls. The transport assembles the base URL, endpoint, headers, query parameters, and payload, applying timeout and proxy settings. Signed requests receive a fresh timestamp and signature on each attempt. The surrounding logic interprets HTTP failures, handles rate limiting, and retries selected server errors before decoding the response.",
        "flow": [
          "Build the endpoint URL and apply configured headers, timeouts, and proxies.",
          "Refresh authentication fields before sending the request through the session.",
          "Interpret status codes and retry eligible failures before decoding responses."
        ],
        "scopeNote": "The verified scope is shared Python connector code used by API clients, without evidence about Binance’s internal exchange systems.",
        "verification": "code",
        "sources": [
          {
            "label": "Requests HTTPS adapter",
            "repository": "binance/binance-connector-python",
            "commitSha": "d70e4dc58a1773cd129815157d2e1b44bb81392d",
            "sourcePath": "common/src/binance_common/utils.py",
            "lineStart": 79,
            "lineEnd": 96,
            "evidenceUrl": "https://github.com/binance/binance-connector-python/blob/d70e4dc58a1773cd129815157d2e1b44bb81392d/common/src/binance_common/utils.py#L79-L96",
            "checkedAt": "2026-10-25T01:26:47Z",
            "sourceSha256": "bbc99f348682bdc6caad65a89bf49468dd2fa96ff182d775d40479e4f1327297",
            "sourceBlobSha": "6f12bcb4bd623cc58f485c60b6c999586c944b7f"
          },
          {
            "label": "Shared REST request transport",
            "repository": "binance/binance-connector-python",
            "commitSha": "d70e4dc58a1773cd129815157d2e1b44bb81392d",
            "sourcePath": "common/src/binance_common/utils.py",
            "lineStart": 483,
            "lineEnd": 641,
            "evidenceUrl": "https://github.com/binance/binance-connector-python/blob/d70e4dc58a1773cd129815157d2e1b44bb81392d/common/src/binance_common/utils.py#L483-L641",
            "checkedAt": "2026-10-25T01:26:47Z",
            "sourceSha256": "bbc99f348682bdc6caad65a89bf49468dd2fa96ff182d775d40479e4f1327297",
            "sourceBlobSha": "6f12bcb4bd623cc58f485c60b6c999586c944b7f"
          }
        ]
      }
    },
    {
      "id": "netflix-metaflow",
      "organization": "Netflix",
      "project": "Metaflow",
      "repository": "Netflix/metaflow",
      "category": "AI & data",
      "summary": "Metaflow, hosted in Netflix's GitHub organization, declares Requests as an installation dependency.",
      "evidenceType": "Direct dependency",
      "evidenceUrl": "https://github.com/Netflix/metaflow/blob/4d25b7a4400a6ad8c580f0ccb471fed2b970d302/setup.py#L74-L74",
      "sourcePath": "setup.py",
      "commitSha": "4d25b7a4400a6ad8c580f0ccb471fed2b970d302",
      "evidenceSnippet": "    install_requires=[\"requests\", \"boto3\"],",
      "lineStart": 74,
      "lineEnd": 74,
      "checkedAt": "2026-10-25T01:27:26Z",
      "archived": false,
      "sourceSha256": "08831b29300b19946b25aeedacd407835ab95d00a0b807edcabdbf002b0d3935",
      "sourceBlobSha": "b658da48cc90712bc7231aba76af51400c17fdcb",
      "sector": "technology",
      "useScope": "Data tooling",
      "avatarSource": "https://avatars.githubusercontent.com/u/913567?v=4",
      "avatarPath": "/static/observatory/organizations/netflix-metaflow.png",
      "usageDetails": {
        "title": "Reading and updating workflow metadata through HTTP",
        "explanation": "Metaflow's service metadata provider keeps a Requests session for communicating with its configured metadata service. It builds URLs for workflow records and sends GET, POST or PATCH calls with the configured service headers. Successful JSON responses are returned to the provider, while its request loop handles failures and retries around the metadata operations.",
        "flow": [
          "Build a metadata-service URL for the workflow record being accessed.",
          "Send the required GET, POST or PATCH through a Requests session.",
          "Parse successful JSON results or handle errors and configured retries."
        ],
        "scopeNote": "This is Metaflow's service-backed metadata provider; the repository's Netflix ownership does not prove current internal Netflix deployment.",
        "verification": "code",
        "sources": [
          {
            "label": "Requests session used by metadata provider",
            "repository": "Netflix/metaflow",
            "commitSha": "4d25b7a4400a6ad8c580f0ccb471fed2b970d302",
            "sourcePath": "metaflow/plugins/metadata_providers/service.py",
            "lineStart": 41,
            "lineEnd": 63,
            "evidenceUrl": "https://github.com/Netflix/metaflow/blob/4d25b7a4400a6ad8c580f0ccb471fed2b970d302/metaflow/plugins/metadata_providers/service.py#L41-L63",
            "checkedAt": "2026-10-25T03:10:40.622918Z",
            "sourceSha256": "2632e776294b76e55229bd11e1de89e09e542f2af4783b66d719764cacaf5d63",
            "sourceBlobSha": "3002c8656d19af57eabb68f5d4da9a584f1c444d"
          },
          {
            "label": "Workflow records and service request handling",
            "repository": "Netflix/metaflow",
            "commitSha": "4d25b7a4400a6ad8c580f0ccb471fed2b970d302",
            "sourcePath": "metaflow/plugins/metadata_providers/service.py",
            "lineStart": 715,
            "lineEnd": 830,
            "evidenceUrl": "https://github.com/Netflix/metaflow/blob/4d25b7a4400a6ad8c580f0ccb471fed2b970d302/metaflow/plugins/metadata_providers/service.py#L715-L830",
            "checkedAt": "2026-10-25T03:10:40.622918Z",
            "sourceSha256": "2632e776294b76e55229bd11e1de89e09e542f2af4783b66d719764cacaf5d63",
            "sourceBlobSha": "3002c8656d19af57eabb68f5d4da9a584f1c444d"
          }
        ]
      }
    },
    {
      "id": "oracle-oci",
      "organization": "Oracle",
      "project": "OCI Python SDK",
      "repository": "oracle/oci-python-sdk",
      "category": "Cloud & platforms",
      "sector": "technology",
      "summary": "Oracle's OCI SDK creates HTTP sessions with its bundled copy of Requests.",
      "useScope": "SDK",
      "evidenceType": "Vendored library",
      "evidenceUrl": "https://github.com/oracle/oci-python-sdk/blob/91d1af980aca36b5f111370060e047d17cf5416d/src/oci/base_client.py#L519-L519",
      "sourcePath": "src/oci/base_client.py",
      "commitSha": "91d1af980aca36b5f111370060e047d17cf5416d",
      "evidenceSnippet": "        self.session = requests.Session()",
      "lineStart": 519,
      "lineEnd": 519,
      "checkedAt": "2026-10-25T02:52:22.063Z",
      "archived": false,
      "sourceSha256": "4a4e994a1e8fa256d0c5ef8a5bbd948465522c5b15ee271673de6a3063ced751",
      "sourceBlobSha": "50a94bb5dcabc638b3d876d3a3b42e35d9470b30",
      "avatarSource": "https://avatars.githubusercontent.com/u/4430336?v=4",
      "repositoryOwner": "oracle",
      "defaultBranch": "master",
      "avatarPath": "/static/observatory/organizations/oracle-oci.png",
      "usageDetails": {
        "title": "Sending signed Oracle Cloud API calls",
        "explanation": "Oracle's OCI Python SDK uses a bundled copy of Requests inside its shared API client. The client passes the operation's method, URL, parameters, headers, and body to a Requests session, together with the OCI authentication signer. It also controls timeouts and streamed responses. Requests performs the HTTP exchange and returns the service response for further SDK processing.",
        "flow": [
          "Collect the OCI operation URL, request parameters, headers, and body.",
          "Send them through a Requests session with the OCI signer.",
          "Return the service response for the SDK to process further."
        ],
        "scopeNote": "The SDK vendors Requests inside its package; this proves SDK transport usage, not a separate PyPI download or company-wide activity.",
        "verification": "code",
        "sources": [
          {
            "label": "Signed OCI HTTP exchange",
            "repository": "oracle/oci-python-sdk",
            "commitSha": "91d1af980aca36b5f111370060e047d17cf5416d",
            "sourcePath": "src/oci/base_client.py",
            "lineStart": 1127,
            "lineEnd": 1158,
            "evidenceUrl": "https://github.com/oracle/oci-python-sdk/blob/91d1af980aca36b5f111370060e047d17cf5416d/src/oci/base_client.py#L1127-L1158",
            "checkedAt": "2026-10-25T03:07:36.736Z",
            "sourceSha256": "4a4e994a1e8fa256d0c5ef8a5bbd948465522c5b15ee271673de6a3063ced751",
            "sourceBlobSha": "50a94bb5dcabc638b3d876d3a3b42e35d9470b30"
          },
          {
            "label": "Bundled Requests import",
            "repository": "oracle/oci-python-sdk",
            "commitSha": "91d1af980aca36b5f111370060e047d17cf5416d",
            "sourcePath": "src/oci/base_client.py",
            "lineStart": 23,
            "lineEnd": 23,
            "evidenceUrl": "https://github.com/oracle/oci-python-sdk/blob/91d1af980aca36b5f111370060e047d17cf5416d/src/oci/base_client.py#L23-L23",
            "checkedAt": "2026-10-25T03:07:36.736Z",
            "sourceSha256": "4a4e994a1e8fa256d0c5ef8a5bbd948465522c5b15ee271673de6a3063ced751",
            "sourceBlobSha": "50a94bb5dcabc638b3d876d3a3b42e35d9470b30"
          }
        ]
      }
    },
    {
      "id": "alibaba-openapi",
      "organization": "Alibaba Cloud",
      "project": "OpenAPI Python SDK",
      "repository": "aliyun/aliyun-openapi-python-sdk",
      "category": "Cloud & platforms",
      "sector": "technology",
      "summary": "Alibaba Cloud's OpenAPI SDK imports its bundled Requests session and request classes for HTTP transport.",
      "useScope": "SDK",
      "evidenceType": "Vendored library",
      "evidenceUrl": "https://github.com/aliyun/aliyun-openapi-python-sdk/blob/2375fd023a0f020da27eb1be7afca35f857ec176/aliyun-python-sdk-core/aliyunsdkcore/http/http_response.py#L23-L23",
      "sourcePath": "aliyun-python-sdk-core/aliyunsdkcore/http/http_response.py",
      "commitSha": "2375fd023a0f020da27eb1be7afca35f857ec176",
      "evidenceSnippet": "from aliyunsdkcore.vendored.requests import Session, Request",
      "lineStart": 23,
      "lineEnd": 23,
      "checkedAt": "2026-10-25T02:52:23.866Z",
      "archived": false,
      "sourceSha256": "55cfa1caea4014ca78a3bce61ca08ce2daf946fb489d3cbe7426e70f039982c9",
      "sourceBlobSha": "daec86c4eb767efeb756794cf96ec8f27b32a10e",
      "avatarSource": "https://avatars.githubusercontent.com/u/941070?v=4",
      "repositoryOwner": "aliyun",
      "defaultBranch": "master",
      "avatarPath": "/static/observatory/organizations/alibaba-openapi.png",
      "usageDetails": {
        "title": "Transporting Alibaba Cloud OpenAPI SDK calls",
        "explanation": "Alibaba Cloud's OpenAPI Python SDK builds outgoing HTTP messages with its bundled Requests classes. The transport assembles the service URL, body, and headers, prepares the request in a session, and sends it with proxy, timeout, and certificate-verification settings. It returns the response's status, headers, and content to the SDK layer that handles the cloud operation.",
        "flow": [
          "Assemble the cloud service URL, HTTP method, headers, and body.",
          "Prepare and send the message using the bundled Requests session.",
          "Return the response status, headers, and content to the SDK."
        ],
        "scopeNote": "This is a vendored Requests transport inside the named OpenAPI SDK, not evidence of every Alibaba product using Requests.",
        "verification": "code",
        "sources": [
          {
            "label": "Preparing and sending API calls",
            "repository": "aliyun/aliyun-openapi-python-sdk",
            "commitSha": "2375fd023a0f020da27eb1be7afca35f857ec176",
            "sourcePath": "aliyun-python-sdk-core/aliyunsdkcore/http/http_response.py",
            "lineStart": 105,
            "lineEnd": 153,
            "evidenceUrl": "https://github.com/aliyun/aliyun-openapi-python-sdk/blob/2375fd023a0f020da27eb1be7afca35f857ec176/aliyun-python-sdk-core/aliyunsdkcore/http/http_response.py#L105-L153",
            "checkedAt": "2026-10-25T03:07:37.801Z",
            "sourceSha256": "55cfa1caea4014ca78a3bce61ca08ce2daf946fb489d3cbe7426e70f039982c9",
            "sourceBlobSha": "daec86c4eb767efeb756794cf96ec8f27b32a10e"
          },
          {
            "label": "Vendored Requests classes",
            "repository": "aliyun/aliyun-openapi-python-sdk",
            "commitSha": "2375fd023a0f020da27eb1be7afca35f857ec176",
            "sourcePath": "aliyun-python-sdk-core/aliyunsdkcore/http/http_response.py",
            "lineStart": 23,
            "lineEnd": 23,
            "evidenceUrl": "https://github.com/aliyun/aliyun-openapi-python-sdk/blob/2375fd023a0f020da27eb1be7afca35f857ec176/aliyun-python-sdk-core/aliyunsdkcore/http/http_response.py#L23-L23",
            "checkedAt": "2026-10-25T03:07:37.801Z",
            "sourceSha256": "55cfa1caea4014ca78a3bce61ca08ce2daf946fb489d3cbe7426e70f039982c9",
            "sourceBlobSha": "daec86c4eb767efeb756794cf96ec8f27b32a10e"
          }
        ]
      }
    },
    {
      "id": "tencent-cloud-sdk",
      "organization": "Tencent Cloud",
      "project": "Tencent Cloud SDK for Python",
      "repository": "TencentCloud/tencentcloud-sdk-python",
      "category": "Cloud & platforms",
      "sector": "technology",
      "summary": "Tencent Cloud's SDK creates a Requests session in its shared HTTP transport.",
      "useScope": "SDK",
      "evidenceType": "Code usage",
      "evidenceUrl": "https://github.com/TencentCloud/tencentcloud-sdk-python/blob/3a64655010ffb6ab2f2f86225f6838174719c090/tencentcloud/common/http/request.py#L44-L44",
      "sourcePath": "tencentcloud/common/http/request.py",
      "commitSha": "3a64655010ffb6ab2f2f86225f6838174719c090",
      "evidenceSnippet": "        self._session = requests.Session()",
      "lineStart": 44,
      "lineEnd": 44,
      "checkedAt": "2026-10-25T02:52:24.923Z",
      "archived": false,
      "sourceSha256": "420a37048e1c6db12fd58d84be507c2904a1d5baef3ca472a5275f9d8fd86b2d",
      "sourceBlobSha": "dc4581eb85cfef7ff9bcd23c665f4dc784e3ef11",
      "avatarSource": "https://avatars.githubusercontent.com/u/20101770?v=4",
      "repositoryOwner": "TencentCloud",
      "defaultBranch": "master",
      "avatarPath": "/static/observatory/organizations/tencent-cloud-sdk.png",
      "usageDetails": {
        "title": "Transporting Tencent Cloud SDK API requests",
        "explanation": "Tencent Cloud's Python SDK uses Requests in its shared network transport. An API operation becomes a GET or POST request, and a persistent Requests session sends the URL, headers, and body. The transport supplies proxy settings, certificate verification, a timeout, and streamed response handling. The resulting HTTP response is passed back to the SDK's API-request layer.",
        "flow": [
          "Convert the SDK operation into its GET or POST request.",
          "Send the URL and payload through the configured Requests session.",
          "Return the HTTP response to the SDK API-request layer."
        ],
        "scopeNote": "The proof covers the Python SDK HTTP transport at this revision, not Tencent-wide systems or a live activity feed.",
        "verification": "code",
        "sources": [
          {
            "label": "Requests session transport",
            "repository": "TencentCloud/tencentcloud-sdk-python",
            "commitSha": "3a64655010ffb6ab2f2f86225f6838174719c090",
            "sourcePath": "tencentcloud/common/http/request.py",
            "lineStart": 29,
            "lineEnd": 59,
            "evidenceUrl": "https://github.com/TencentCloud/tencentcloud-sdk-python/blob/3a64655010ffb6ab2f2f86225f6838174719c090/tencentcloud/common/http/request.py#L29-L59",
            "checkedAt": "2026-10-25T03:07:38.848Z",
            "sourceSha256": "420a37048e1c6db12fd58d84be507c2904a1d5baef3ca472a5275f9d8fd86b2d",
            "sourceBlobSha": "dc4581eb85cfef7ff9bcd23c665f4dc784e3ef11"
          },
          {
            "label": "API operation dispatch",
            "repository": "TencentCloud/tencentcloud-sdk-python",
            "commitSha": "3a64655010ffb6ab2f2f86225f6838174719c090",
            "sourcePath": "tencentcloud/common/http/request.py",
            "lineStart": 96,
            "lineEnd": 118,
            "evidenceUrl": "https://github.com/TencentCloud/tencentcloud-sdk-python/blob/3a64655010ffb6ab2f2f86225f6838174719c090/tencentcloud/common/http/request.py#L96-L118",
            "checkedAt": "2026-10-25T03:07:38.848Z",
            "sourceSha256": "420a37048e1c6db12fd58d84be507c2904a1d5baef3ca472a5275f9d8fd86b2d",
            "sourceBlobSha": "dc4581eb85cfef7ff9bcd23c665f4dc784e3ef11"
          }
        ]
      }
    },
    {
      "id": "huawei-cloud-sdk",
      "organization": "Huawei Cloud",
      "project": "Huawei Cloud Python SDK v3",
      "repository": "huaweicloud/huaweicloud-sdk-python-v3",
      "category": "Cloud & platforms",
      "sector": "technology",
      "summary": "Huawei Cloud's SDK core creates a Requests session for HTTP calls.",
      "useScope": "SDK",
      "evidenceType": "Code usage",
      "evidenceUrl": "https://github.com/huaweicloud/huaweicloud-sdk-python-v3/blob/cc766ecb23029ecc58be1267950cf5064193507b/huaweicloud-sdk-core/huaweicloudsdkcore/http/http_client.py#L65-L65",
      "sourcePath": "huaweicloud-sdk-core/huaweicloudsdkcore/http/http_client.py",
      "commitSha": "cc766ecb23029ecc58be1267950cf5064193507b",
      "evidenceSnippet": "        sdk_session = requests.Session()",
      "lineStart": 65,
      "lineEnd": 65,
      "checkedAt": "2026-10-25T02:52:25.970Z",
      "archived": false,
      "sourceSha256": "5f0be2fd26f50d81a4e453ad98923e3f4b819acd2501535b1a200151fe4e41e9",
      "sourceBlobSha": "10c98bcc32373b7d853f90836b23c10afd0cbfa9",
      "avatarSource": "https://avatars.githubusercontent.com/u/36578213?v=4",
      "repositoryOwner": "huaweicloud",
      "defaultBranch": "master",
      "avatarPath": "/static/observatory/organizations/huawei-cloud-sdk.png",
      "usageDetails": {
        "title": "Sending Huawei Cloud SDK HTTP traffic",
        "explanation": "Huawei Cloud's Python SDK core uses Requests to carry outgoing service calls. It creates a session with connection-pool and retry settings, selects the HTTP method required by the SDK request, and supplies its URL, headers, body, timeout, proxy, and certificate settings. After the network response arrives, the SDK applies its response-error hooks before returning it to the caller.",
        "flow": [
          "Create a Requests session with configured connection pooling and retries.",
          "Send the SDK request using its method, headers, and body.",
          "Apply response-error handling and return the service response to callers."
        ],
        "scopeNote": "This is the shared HTTP client in the named Python SDK; it does not describe all Huawei Cloud infrastructure.",
        "verification": "code",
        "sources": [
          {
            "label": "Session setup and synchronous calls",
            "repository": "huaweicloud/huaweicloud-sdk-python-v3",
            "commitSha": "cc766ecb23029ecc58be1267950cf5064193507b",
            "sourcePath": "huaweicloud-sdk-core/huaweicloudsdkcore/http/http_client.py",
            "lineStart": 64,
            "lineEnd": 108,
            "evidenceUrl": "https://github.com/huaweicloud/huaweicloud-sdk-python-v3/blob/cc766ecb23029ecc58be1267950cf5064193507b/huaweicloud-sdk-core/huaweicloudsdkcore/http/http_client.py#L64-L108",
            "checkedAt": "2026-10-25T03:07:40.008Z",
            "sourceSha256": "5f0be2fd26f50d81a4e453ad98923e3f4b819acd2501535b1a200151fe4e41e9",
            "sourceBlobSha": "10c98bcc32373b7d853f90836b23c10afd0cbfa9"
          }
        ]
      }
    },
    {
      "id": "nasa-harmony",
      "organization": "NASA",
      "project": "Harmony Python client",
      "repository": "nasa/harmony-py",
      "category": "Science & research",
      "sector": "technology",
      "summary": "NASA's Harmony Python client declares Requests as a runtime dependency for Earth-science service access.",
      "useScope": "API client",
      "evidenceType": "Direct dependency",
      "evidenceUrl": "https://github.com/nasa/harmony-py/blob/3078eda1cfbfe18f892a857df96ac41a144dfa08/pyproject.toml#L38-L38",
      "sourcePath": "pyproject.toml",
      "commitSha": "3078eda1cfbfe18f892a857df96ac41a144dfa08",
      "evidenceSnippet": "    \"requests >=2.32.3\",",
      "lineStart": 38,
      "lineEnd": 38,
      "checkedAt": "2026-10-25T02:52:43.221Z",
      "archived": false,
      "sourceSha256": "ae337a289b1ec39a954a7a162d839d7ba60f83c0a625d7a37a78f457b5303d82",
      "sourceBlobSha": "7ba1f2b7004013492d1281f5e4d02e2eff13914d",
      "avatarSource": "https://avatars.githubusercontent.com/u/848102?v=4",
      "repositoryOwner": "nasa",
      "defaultBranch": "main",
      "avatarPath": "/static/observatory/organizations/nasa-harmony.png",
      "usageDetails": {
        "title": "Submitting NASA Harmony data service jobs",
        "explanation": "NASA's Harmony Python client uses Requests to submit Earth-science service requests. It turns a validated Harmony request into an HTTP message, including query parameters, JSON, or multipart data when required. A session sends that prepared message to Harmony. The client then interprets the response, returning a job identifier or response content depending on the request and result.",
        "flow": [
          "Validate the Harmony request and prepare its HTTP parameters or payload.",
          "Send the prepared message to Harmony through the client session.",
          "Interpret the response as a job identifier or returned service content."
        ],
        "scopeNote": "This describes the Harmony Python client for Earth-science data services, not spacecraft software or NASA-wide runtime activity.",
        "verification": "code",
        "sources": [
          {
            "label": "Preparing Harmony HTTP messages",
            "repository": "nasa/harmony-py",
            "commitSha": "3078eda1cfbfe18f892a857df96ac41a144dfa08",
            "sourcePath": "harmony/client.py",
            "lineStart": 543,
            "lineEnd": 597,
            "evidenceUrl": "https://github.com/nasa/harmony-py/blob/3078eda1cfbfe18f892a857df96ac41a144dfa08/harmony/client.py#L543-L597",
            "checkedAt": "2026-10-25T03:07:41.058Z",
            "sourceSha256": "84ac90aab5daf131b5293e6f2019fb9475c5a6370aa3246e557c618f386882c6",
            "sourceBlobSha": "28beb937b1dc1c9099b7779ccfd9296b5d17091d"
          },
          {
            "label": "Submitting and interpreting jobs",
            "repository": "nasa/harmony-py",
            "commitSha": "3078eda1cfbfe18f892a857df96ac41a144dfa08",
            "sourcePath": "harmony/client.py",
            "lineStart": 662,
            "lineEnd": 694,
            "evidenceUrl": "https://github.com/nasa/harmony-py/blob/3078eda1cfbfe18f892a857df96ac41a144dfa08/harmony/client.py#L662-L694",
            "checkedAt": "2026-10-25T03:07:41.058Z",
            "sourceSha256": "84ac90aab5daf131b5293e6f2019fb9475c5a6370aa3246e557c618f386882c6",
            "sourceBlobSha": "28beb937b1dc1c9099b7779ccfd9296b5d17091d"
          }
        ]
      }
    },
    {
      "id": "paypal-braintree",
      "organization": "PayPal / Braintree",
      "project": "Braintree Python SDK",
      "repository": "braintree/braintree_python",
      "category": "Payments & commerce",
      "summary": "The Braintree Python SDK declares Requests as an installation dependency.",
      "evidenceType": "Direct dependency",
      "evidenceUrl": "https://github.com/braintree/braintree_python/blob/68527e6365c4a0917bf0ba5e402bf14bcf17ddf7/setup.py#L23",
      "sourcePath": "setup.py",
      "commitSha": "68527e6365c4a0917bf0ba5e402bf14bcf17ddf7",
      "evidenceSnippet": "    install_requires=[\"requests>=0.11.1,<3.0\"],",
      "lineStart": 23,
      "lineEnd": 23,
      "checkedAt": "2026-10-25T02:51:17Z",
      "archived": false,
      "sourceBlobSha": "3bebccb52bd6fa65b598c06b57292c7c5a6a11f7",
      "sector": "technology",
      "useScope": "SDK",
      "avatarSource": "https://avatars.githubusercontent.com/u/3453?v=4",
      "sourceSha256": "45ace19b8c04d4b36c31c8f81d6e6b8f4711efd9501952708c589e4f345c334a",
      "avatarPath": "/static/observatory/organizations/paypal-braintree.jpg",
      "usageDetails": {
        "title": "Transporting Braintree API calls and responses",
        "explanation": "Braintree's HTTP helper converts an SDK operation into a prepared Requests request, including its method, endpoint, headers, body, and any files. It obtains a reusable session for the current thread, applies proxy settings, and sends with the configured certificate verification and timeout. The helper returns the HTTP status and text so the SDK can interpret the gateway's response.",
        "flow": [
          "The helper builds a prepared request for the selected Braintree endpoint.",
          "A reusable Requests session sends it with configured connection settings.",
          "The helper returns status and text for SDK response processing."
        ],
        "scopeNote": "The evidence covers the public Braintree SDK's HTTP helper. It does not identify merchants, payment volumes, or current PayPal infrastructure activity.",
        "verification": "code",
        "sources": [
          {
            "label": "Reusable session lifecycle",
            "repository": "braintree/braintree_python",
            "commitSha": "68527e6365c4a0917bf0ba5e402bf14bcf17ddf7",
            "sourcePath": "braintree/util/http.py",
            "lineStart": 67,
            "lineEnd": 77,
            "evidenceUrl": "https://github.com/braintree/braintree_python/blob/68527e6365c4a0917bf0ba5e402bf14bcf17ddf7/braintree/util/http.py#L67-L77",
            "checkedAt": "2026-10-25T03:10:24Z",
            "sourceSha256": "7c797d946ad9d0ae0c9e158c7a119c6513b4315db4d25da780645cdbda138beb",
            "sourceBlobSha": "a7403963a1335c825c8db753f9f1b656591dc8ce"
          },
          {
            "label": "Prepared request and response handling",
            "repository": "braintree/braintree_python",
            "commitSha": "68527e6365c4a0917bf0ba5e402bf14bcf17ddf7",
            "sourcePath": "braintree/util/http.py",
            "lineStart": 124,
            "lineEnd": 156,
            "evidenceUrl": "https://github.com/braintree/braintree_python/blob/68527e6365c4a0917bf0ba5e402bf14bcf17ddf7/braintree/util/http.py#L124-L156",
            "checkedAt": "2026-10-25T03:10:24Z",
            "sourceSha256": "7c797d946ad9d0ae0c9e158c7a119c6513b4315db4d25da780645cdbda138beb",
            "sourceBlobSha": "a7403963a1335c825c8db753f9f1b656591dc8ce"
          }
        ]
      }
    },
    {
      "id": "stripe-python",
      "organization": "Stripe",
      "project": "Stripe Python SDK",
      "repository": "stripe/stripe-python",
      "category": "Payments & commerce",
      "summary": "Stripe's Python SDK declares Requests as a runtime dependency.",
      "evidenceType": "Direct dependency",
      "evidenceUrl": "https://github.com/stripe/stripe-python/blob/89e8528a61d838600097ffe5c9615c9b7d35778a/pyproject.toml#L32-L32",
      "sourcePath": "pyproject.toml",
      "commitSha": "89e8528a61d838600097ffe5c9615c9b7d35778a",
      "evidenceSnippet": "  \"requests >= 2.20\",",
      "lineStart": 32,
      "lineEnd": 32,
      "checkedAt": "2026-10-25T01:27:26Z",
      "archived": false,
      "sourceSha256": "8611853d4d5f1835c39a23fed91cc25dc82d0b685b932e405734480f5fc73938",
      "sourceBlobSha": "e9374390fe1749ce33191352e569a48da88e8907",
      "sector": "technology",
      "useScope": "SDK",
      "avatarSource": "https://avatars.githubusercontent.com/u/856813?v=4",
      "avatarPath": "/static/observatory/organizations/stripe-python.png",
      "usageDetails": {
        "title": "Carrying API traffic through Stripe's Requests client",
        "explanation": "Stripe's RequestsClient implementation supplies the network transport for SDK calls that use this client. It creates or reuses a thread-local Requests session, then sends the method, URL, headers, and body with timeout, certificate, and proxy options. It returns response bytes or a raw stream, plus status and headers, and translates connection failures into SDK errors.",
        "flow": [
          "The selected RequestsClient receives the SDK's prepared HTTP call details.",
          "A Requests session sends the call using configured network options.",
          "The client returns response content or translates the connection failure."
        ],
        "scopeNote": "This describes Stripe's RequestsClient implementation. Other HTTP clients can exist in the SDK; the evidence does not measure Stripe's production traffic.",
        "verification": "code",
        "sources": [
          {
            "label": "RequestsClient network implementation",
            "repository": "stripe/stripe-python",
            "commitSha": "89e8528a61d838600097ffe5c9615c9b7d35778a",
            "sourcePath": "stripe/_http_client.py",
            "lineStart": 508,
            "lineEnd": 638,
            "evidenceUrl": "https://github.com/stripe/stripe-python/blob/89e8528a61d838600097ffe5c9615c9b7d35778a/stripe/_http_client.py#L508-L638",
            "checkedAt": "2026-10-25T03:10:24Z",
            "sourceSha256": "c3de86df6f8e4bd051ca3decba3568080a037c78336f17b78efb7e2213670508",
            "sourceBlobSha": "65c3ed684696452715e8d935632bf4390391de03"
          }
        ]
      }
    },
    {
      "id": "databricks-sdk",
      "organization": "Databricks",
      "project": "Databricks SDK for Python",
      "repository": "databricks/databricks-sdk-py",
      "category": "AI & data",
      "summary": "Databricks' Python SDK declares Requests as a runtime dependency.",
      "evidenceType": "Direct dependency",
      "evidenceUrl": "https://github.com/databricks/databricks-sdk-py/blob/84130cd491fd5a335b30883f5fc66caaaf12ec93/pyproject.toml#L26-L26",
      "sourcePath": "pyproject.toml",
      "commitSha": "84130cd491fd5a335b30883f5fc66caaaf12ec93",
      "evidenceSnippet": "    \"requests>=2.28.1,<3\",",
      "lineStart": 26,
      "lineEnd": 26,
      "checkedAt": "2026-10-25T01:27:26Z",
      "archived": false,
      "sourceSha256": "a1049e90bd4aca1047d5dbeee98234f804768570616574bd97f8220026ddf2ae",
      "sourceBlobSha": "dfcbdcd278b062653de2a626ca07e9a2b1387631",
      "sector": "technology",
      "useScope": "SDK",
      "avatarSource": "https://avatars.githubusercontent.com/u/4998052?v=4",
      "avatarPath": "/static/observatory/organizations/databricks-sdk.png",
      "usageDetails": {
        "title": "Transporting authenticated Databricks SDK API calls",
        "explanation": "The Databricks Python SDK's base client creates a reusable Requests session and attaches its authentication callback and HTTPS connection adapter. When an SDK operation reaches the transport layer, it sends the method, URL, parameters and payload through that session. It supports JSON bodies, files and streamed responses, then converts an API error response into the SDK's error form.",
        "flow": [
          "Configure a Requests session with authentication and HTTPS connection pooling.",
          "Send the API method, URL, parameters and payload through that session.",
          "Inspect the response and raise the corresponding SDK error when needed."
        ],
        "scopeNote": "This identifies the Python SDK's HTTP transport at the pinned revision; it is not evidence of all Databricks backend traffic.",
        "verification": "code",
        "sources": [
          {
            "label": "Session, authentication and connection adapter",
            "repository": "databricks/databricks-sdk-py",
            "commitSha": "84130cd491fd5a335b30883f5fc66caaaf12ec93",
            "sourcePath": "databricks/sdk/_base_client.py",
            "lineStart": 100,
            "lineEnd": 133,
            "evidenceUrl": "https://github.com/databricks/databricks-sdk-py/blob/84130cd491fd5a335b30883f5fc66caaaf12ec93/databricks/sdk/_base_client.py#L100-L133",
            "checkedAt": "2026-10-25T03:10:40.622918Z",
            "sourceSha256": "8035777315e73c6206757912631e452e33ef41601b235ffada0b3762cf547b91",
            "sourceBlobSha": "40ec1f759068306f0819ef8879a8bb13c98dc81e"
          },
          {
            "label": "Request execution and SDK error parsing",
            "repository": "databricks/databricks-sdk-py",
            "commitSha": "84130cd491fd5a335b30883f5fc66caaaf12ec93",
            "sourcePath": "databricks/sdk/_base_client.py",
            "lineStart": 295,
            "lineEnd": 328,
            "evidenceUrl": "https://github.com/databricks/databricks-sdk-py/blob/84130cd491fd5a335b30883f5fc66caaaf12ec93/databricks/sdk/_base_client.py#L295-L328",
            "checkedAt": "2026-10-25T03:10:40.622918Z",
            "sourceSha256": "8035777315e73c6206757912631e452e33ef41601b235ffada0b3762cf547b91",
            "sourceBlobSha": "40ec1f759068306f0819ef8879a8bb13c98dc81e"
          }
        ]
      }
    },
    {
      "id": "deepmind-dm-control",
      "organization": "Google DeepMind",
      "project": "dm_control",
      "repository": "google-deepmind/dm_control",
      "category": "AI & data",
      "sector": "technology",
      "summary": "DeepMind's dm_control reinforcement-learning package declares Requests as an installation dependency.",
      "useScope": "Library",
      "evidenceType": "Direct dependency",
      "sourcePath": "setup.py",
      "commitSha": "3948bd0ab4a857dbb5989a1b8d20bac920551136",
      "lineStart": 199,
      "lineEnd": 199,
      "checkedAt": "2026-10-25T02:51:47.374Z",
      "archived": false,
      "sourceBlobSha": "b28c3601cf8ac13236712c4da47bc129fb043ada",
      "avatarSource": "https://avatars.githubusercontent.com/u/8596759?v=4",
      "sourceSha256": "637bd96500a1bb5b06831382edafa0c2fc34fdd5a961af29432ae0007e805b24",
      "evidenceSnippet": "        'requests',",
      "evidenceUrl": "https://github.com/google-deepmind/dm_control/blob/3948bd0ab4a857dbb5989a1b8d20bac920551136/setup.py#L199-L199",
      "repositoryOwner": "google-deepmind",
      "defaultBranch": "main",
      "avatarPath": "/static/observatory/organizations/deepmind-dm-control.png",
      "usageDetails": {
        "title": "Downloading motion-capture data for control tasks",
        "explanation": "dm_control includes a downloader for CMU motion-capture data fitted to its humanoid models. If the expected data file is not already cached, Requests streams the versioned HDF5 file from the project's storage location. The downloader writes chunks, updates progress and checks the completed file's SHA-256 digest before returning a usable local path.",
        "flow": [
          "Look for the selected motion-capture dataset in the configured cache locations.",
          "Stream the missing HDF5 file with Requests into a local file.",
          "Validate the downloaded digest and return the cached dataset path."
        ],
        "scopeNote": "This evidence is the motion-capture dataset downloader, not the physics engine itself or a claim about DeepMind's internal systems.",
        "verification": "code",
        "sources": [
          {
            "label": "CMU dataset locations, download and integrity check",
            "repository": "google-deepmind/dm_control",
            "commitSha": "3948bd0ab4a857dbb5989a1b8d20bac920551136",
            "sourcePath": "dm_control/locomotion/mocap/cmu_mocap_data.py",
            "lineStart": 34,
            "lineEnd": 113,
            "evidenceUrl": "https://github.com/google-deepmind/dm_control/blob/3948bd0ab4a857dbb5989a1b8d20bac920551136/dm_control/locomotion/mocap/cmu_mocap_data.py#L34-L113",
            "checkedAt": "2026-10-25T03:10:40.622918Z",
            "sourceSha256": "d963846dc3a9f4fc3843b15d1bdc4eb395074e455d35b72535317c9bda90850e",
            "sourceBlobSha": "37f1bb96363f048b356166cac550d1270cfdc151"
          }
        ]
      }
    },
    {
      "id": "polymarket",
      "organization": "Polymarket",
      "project": "Python Builder Relayer Client",
      "repository": "Polymarket/py-builder-relayer-client",
      "category": "Crypto & Web3",
      "summary": "The Builder Relayer Client sends HTTP calls through requests.request().",
      "useScope": "SDK",
      "evidenceType": "Code usage",
      "evidenceUrl": "https://github.com/Polymarket/py-builder-relayer-client/blob/4968df278eebd933f47e530669ed517a896c9897/py_builder_relayer_client/http_helpers/helpers.py#L12-L16",
      "sourcePath": "py_builder_relayer_client/http_helpers/helpers.py",
      "commitSha": "4968df278eebd933f47e530669ed517a896c9897",
      "evidenceSnippet": "    try:\n        resp = requests.request(\n            method=method, url=endpoint, headers=headers, json=data if data else None\n        )\n        if resp.status_code != 200:",
      "lineStart": 12,
      "lineEnd": 16,
      "checkedAt": "2026-10-25T01:26:47Z",
      "archived": false,
      "repositoryOwner": "Polymarket",
      "defaultBranch": "main",
      "sourceBlobSha": "d4717ecbf822777927e9e1d493e4d2b61abed3e9",
      "sourceSha256": "b34f2e379726fc2aad7ecce2091abe8d8a2452f76b6c9c957abbddb4c13fe62e",
      "sector": "crypto",
      "avatarSource": "https://avatars.githubusercontent.com/u/31669764?v=4",
      "avatarPath": "/static/observatory/organizations/polymarket.png",
      "usageDetails": {
        "title": "Sending HTTP calls to the relayer",
        "explanation": "Polymarket’s Python builder relayer client has a small shared HTTP helper built around requests.request. Callers supply the endpoint, method, headers, and data; the helper sends the data as JSON. It checks for the expected successful status, returns a decoded JSON response when possible, and otherwise returns text. Network failures and unsuccessful responses are converted into the client’s relayer exceptions.",
        "flow": [
          "Receive the endpoint, HTTP method, headers, and data from the caller.",
          "Send the supplied data as JSON using the Requests helper.",
          "Return parsed response content or raise the client’s relayer exception."
        ],
        "scopeNote": "This is the builder relayer client’s HTTP helper, not evidence that Polymarket’s entire trading platform runs on Requests.",
        "verification": "code",
        "sources": [
          {
            "label": "Relayer HTTP helper",
            "repository": "Polymarket/py-builder-relayer-client",
            "commitSha": "4968df278eebd933f47e530669ed517a896c9897",
            "sourcePath": "py_builder_relayer_client/http_helpers/helpers.py",
            "lineStart": 1,
            "lineEnd": 37,
            "evidenceUrl": "https://github.com/Polymarket/py-builder-relayer-client/blob/4968df278eebd933f47e530669ed517a896c9897/py_builder_relayer_client/http_helpers/helpers.py#L1-L37",
            "checkedAt": "2026-10-25T01:26:47Z",
            "sourceSha256": "b34f2e379726fc2aad7ecce2091abe8d8a2452f76b6c9c957abbddb4c13fe62e",
            "sourceBlobSha": "d4717ecbf822777927e9e1d493e4d2b61abed3e9"
          }
        ]
      }
    },
    {
      "id": "hyperliquid",
      "organization": "Hyperliquid",
      "project": "Hyperliquid Python SDK",
      "repository": "hyperliquid-dex/hyperliquid-python-sdk",
      "category": "Crypto & Web3",
      "summary": "The Python SDK uses a Requests session for its API transport.",
      "useScope": "SDK",
      "evidenceType": "Code usage",
      "evidenceUrl": "https://github.com/hyperliquid-dex/hyperliquid-python-sdk/blob/2fdb18f9517675ea03695a0962bd19eece9c83f0/hyperliquid/api.py#L14-L18",
      "sourcePath": "hyperliquid/api.py",
      "commitSha": "2fdb18f9517675ea03695a0962bd19eece9c83f0",
      "evidenceSnippet": "        self.base_url = base_url or MAINNET_API_URL\n        self.session = requests.Session()\n        self.session.headers.update({\"Content-Type\": \"application/json\"})\n        self._logger = logging.getLogger(__name__)\n        self.timeout = timeout",
      "lineStart": 14,
      "lineEnd": 18,
      "checkedAt": "2026-10-25T01:26:47Z",
      "archived": false,
      "repositoryOwner": "hyperliquid-dex",
      "defaultBranch": "master",
      "sourceBlobSha": "d808f2cea64a54fa38b8ae136154c6661da5d8c9",
      "sourceSha256": "f2e067860c0892cbf1345be901f3131b2b6a40ad73bfd6b6c5f056ed5c3f6c19",
      "sector": "crypto",
      "avatarSource": "https://avatars.githubusercontent.com/u/129421375?v=4",
      "avatarPath": "/static/observatory/organizations/hyperliquid.png",
      "usageDetails": {
        "title": "Posting JSON through the Hyperliquid SDK",
        "explanation": "The Hyperliquid Python SDK creates a Requests session with a JSON content type and a configurable API base URL. Its shared POST method combines that base with the caller’s path, sends the payload as JSON, and applies a timeout. The same layer converts unsuccessful HTTP responses into client or server exceptions and decodes successful response bodies for the SDK caller.",
        "flow": [
          "Choose the API base URL and initialize a JSON session.",
          "Post the caller’s payload to the selected path with a timeout.",
          "Decode successful JSON responses or raise the matching HTTP exception."
        ],
        "scopeNote": "The source establishes an HTTP transport inside the public SDK, not the implementation of Hyperliquid’s exchange or blockchain.",
        "verification": "code",
        "sources": [
          {
            "label": "JSON POST transport",
            "repository": "hyperliquid-dex/hyperliquid-python-sdk",
            "commitSha": "2fdb18f9517675ea03695a0962bd19eece9c83f0",
            "sourcePath": "hyperliquid/api.py",
            "lineStart": 12,
            "lineEnd": 43,
            "evidenceUrl": "https://github.com/hyperliquid-dex/hyperliquid-python-sdk/blob/2fdb18f9517675ea03695a0962bd19eece9c83f0/hyperliquid/api.py#L12-L43",
            "checkedAt": "2026-10-25T01:26:47Z",
            "sourceSha256": "f2e067860c0892cbf1345be901f3131b2b6a40ad73bfd6b6c5f056ed5c3f6c19",
            "sourceBlobSha": "d808f2cea64a54fa38b8ae136154c6661da5d8c9"
          }
        ]
      }
    },
    {
      "id": "bybit",
      "organization": "Bybit",
      "project": "pybit",
      "repository": "bybit-exchange/pybit",
      "category": "Crypto & Web3",
      "summary": "The official pybit HTTP manager creates a Requests session for API calls.",
      "useScope": "SDK",
      "evidenceType": "Code usage",
      "evidenceUrl": "https://github.com/bybit-exchange/pybit/blob/c3309e14e577b1d5610c1f288a413df6990a6d25/pybit/_http_manager.py#L147-L151",
      "sourcePath": "pybit/_http_manager.py",
      "commitSha": "c3309e14e577b1d5610c1f288a413df6990a6d25",
      "evidenceSnippet": "\n        self.client = requests.Session()\n        self.client.headers.update(\n            {\n                \"Content-Type\": \"application/json\",",
      "lineStart": 147,
      "lineEnd": 151,
      "checkedAt": "2026-10-25T01:26:47Z",
      "archived": false,
      "repositoryOwner": "bybit-exchange",
      "defaultBranch": "master",
      "sourceBlobSha": "6c0ba1f64c78bf9bde2935d973bc6c26f6cf47a8",
      "sourceSha256": "f7ce664323670610abd26b27c6413be7bfab1ac3f363d34222e4b1ae4108e732",
      "sector": "crypto",
      "avatarSource": "https://avatars.githubusercontent.com/u/44487200?v=4",
      "avatarPath": "/static/observatory/organizations/bybit.jpg",
      "usageDetails": {
        "title": "Dispatching API calls from Pybit clients",
        "explanation": "Pybit’s HTTP manager uses a Requests session to send prepared API requests. It cleans the supplied parameters, builds the payload, and adds authentication headers when the operation requires them. Each attempt sends the prepared request with the configured timeout, checks the status, and processes the response. Network failures and selected API conditions enter the manager’s retry and error handling paths.",
        "flow": [
          "Clean the supplied parameters and prepare the payload and optional authentication.",
          "Send the prepared request through the session with the configured timeout.",
          "Process the response or follow the manager’s retry and error handling."
        ],
        "scopeNote": "This describes Pybit’s client HTTP manager, including its request handling; it does not demonstrate Bybit’s internal exchange architecture.",
        "verification": "code",
        "sources": [
          {
            "label": "Requests session setup",
            "repository": "bybit-exchange/pybit",
            "commitSha": "c3309e14e577b1d5610c1f288a413df6990a6d25",
            "sourcePath": "pybit/_http_manager.py",
            "lineStart": 143,
            "lineEnd": 155,
            "evidenceUrl": "https://github.com/bybit-exchange/pybit/blob/c3309e14e577b1d5610c1f288a413df6990a6d25/pybit/_http_manager.py#L143-L155",
            "checkedAt": "2026-10-25T01:26:47Z",
            "sourceSha256": "f7ce664323670610abd26b27c6413be7bfab1ac3f363d34222e4b1ae4108e732",
            "sourceBlobSha": "6c0ba1f64c78bf9bde2935d973bc6c26f6cf47a8"
          },
          {
            "label": "API submission loop",
            "repository": "bybit-exchange/pybit",
            "commitSha": "c3309e14e577b1d5610c1f288a413df6990a6d25",
            "sourcePath": "pybit/_http_manager.py",
            "lineStart": 226,
            "lineEnd": 263,
            "evidenceUrl": "https://github.com/bybit-exchange/pybit/blob/c3309e14e577b1d5610c1f288a413df6990a6d25/pybit/_http_manager.py#L226-L263",
            "checkedAt": "2026-10-25T01:26:47Z",
            "sourceSha256": "f7ce664323670610abd26b27c6413be7bfab1ac3f363d34222e4b1ae4108e732",
            "sourceBlobSha": "6c0ba1f64c78bf9bde2935d973bc6c26f6cf47a8"
          }
        ]
      }
    },
    {
      "id": "crowdstrike-falconpy",
      "organization": "CrowdStrike",
      "project": "FalconPy",
      "repository": "CrowdStrike/falconpy",
      "category": "Security & identity",
      "summary": "CrowdStrike's FalconPy SDK declares Requests as a runtime dependency.",
      "evidenceType": "Direct dependency",
      "evidenceUrl": "https://github.com/CrowdStrike/falconpy/blob/06a5df86bc68e492db339dccacdff4a9b9ad61ec/pyproject.toml#L54",
      "sourcePath": "pyproject.toml",
      "commitSha": "06a5df86bc68e492db339dccacdff4a9b9ad61ec",
      "evidenceSnippet": "    \"requests\",",
      "lineStart": 54,
      "lineEnd": 54,
      "checkedAt": "2026-10-25T02:51:17Z",
      "archived": false,
      "sourceBlobSha": "67fb2a3f36ae377e167244fb2ae07cf6b10e28e2",
      "sector": "technology",
      "useScope": "SDK",
      "avatarSource": "https://avatars.githubusercontent.com/u/2446477?v=4",
      "sourceSha256": "e2ec7448e45b4f56a5132c58cf36ba035c48df9ccb14cb6024811631b227268a",
      "avatarPath": "/static/observatory/organizations/crowdstrike-falconpy.png",
      "usageDetails": {
        "title": "Executing Falcon API requests and streamed downloads",
        "explanation": "FalconPy's request executor gathers the endpoint, query parameters, headers, JSON or form data, and optional files for a Falcon API call. It uses a supplied Requests session when available, or calls Requests directly. The response can remain a stream for downloads, or be converted into FalconPy's result format with status and headers when requested.",
        "flow": [
          "FalconPy collects the endpoint, parameters, headers, and optional request payloads.",
          "Requests executes the call with configured proxy, timeout, and streaming.",
          "FalconPy returns a download stream or processes the API result."
        ],
        "scopeNote": "The evidence covers FalconPy's public API transport, including its download path. It does not reveal customers, protected devices, or current security activity.",
        "verification": "code",
        "sources": [
          {
            "label": "Falcon API request execution",
            "repository": "CrowdStrike/falconpy",
            "commitSha": "06a5df86bc68e492db339dccacdff4a9b9ad61ec",
            "sourcePath": "src/falconpy/_util/_functions.py",
            "lineStart": 357,
            "lineEnd": 478,
            "evidenceUrl": "https://github.com/CrowdStrike/falconpy/blob/06a5df86bc68e492db339dccacdff4a9b9ad61ec/src/falconpy/_util/_functions.py#L357-L478",
            "checkedAt": "2026-10-25T03:10:24Z",
            "sourceSha256": "d738a5a2e5a6e56f33fbc1842487680c64fe7e2a4ea4a84e8bcaf5353076f3d6",
            "sourceBlobSha": "d5dcbb8c4f3e459ad4cff9b2b415bc16c77efde3"
          }
        ]
      }
    },
    {
      "id": "datadog-python",
      "organization": "Datadog",
      "project": "Datadog Python Library",
      "repository": "DataDog/datadogpy",
      "category": "Developer tools",
      "summary": "Datadog's Python API and DogStatsD library declares Requests as a runtime dependency.",
      "evidenceType": "Direct dependency",
      "evidenceUrl": "https://github.com/DataDog/datadogpy/blob/182a1772b2e58164ae0f6c6e9330ee86b3b863a6/setup.py#L28",
      "sourcePath": "setup.py",
      "commitSha": "182a1772b2e58164ae0f6c6e9330ee86b3b863a6",
      "evidenceSnippet": "    \"requests>=2.6.0\",",
      "lineStart": 28,
      "lineEnd": 28,
      "checkedAt": "2026-10-25T02:51:17Z",
      "archived": false,
      "sourceBlobSha": "186f3b4b22f19591fd2fec5eb4b45c771d5608e4",
      "sector": "technology",
      "useScope": "SDK",
      "avatarSource": "https://avatars.githubusercontent.com/u/365230?v=4",
      "sourceSha256": "78e12852f9ef47b8d7e920e9852f5f0b18651191e346d4480d43b51452f3766b",
      "avatarPath": "/static/observatory/organizations/datadog-python.png",
      "usageDetails": {
        "title": "Reusing HTTP connections for Datadog API calls",
        "explanation": "Datadog's Requests-based HTTP client keeps a shared session instead of creating a fresh connection context for every call. It installs an HTTPS adapter with the configured retry setting and adds the library's user-agent. API calls pass headers, query parameters, data, timeouts, proxies, and certificate options through that session; response status and connection failures are handled by the wrapper.",
        "flow": [
          "The HTTP client initializes a shared session and retry adapter.",
          "API call details are passed into the session's request method.",
          "The wrapper checks status and translates timeout or connection errors."
        ],
        "scopeNote": "This evidence concerns Datadog's HTTP API client implementation. It should not be interpreted as evidence that DogStatsD's separate transport uses Requests.",
        "verification": "code",
        "sources": [
          {
            "label": "Persistent Requests API transport",
            "repository": "DataDog/datadogpy",
            "commitSha": "182a1772b2e58164ae0f6c6e9330ee86b3b863a6",
            "sourcePath": "datadog/api/http_client.py",
            "lineStart": 102,
            "lineEnd": 139,
            "evidenceUrl": "https://github.com/DataDog/datadogpy/blob/182a1772b2e58164ae0f6c6e9330ee86b3b863a6/datadog/api/http_client.py#L102-L139",
            "checkedAt": "2026-10-25T03:10:24Z",
            "sourceSha256": "6bd6c2aa7afc6a99d6ab08565a5c48b8e079233da41a61c4608b6cfe390e241e",
            "sourceBlobSha": "d7254ad1a12095ef211a7f555d223c5d3a8e5b50"
          }
        ]
      }
    },
    {
      "id": "dropbox-python",
      "organization": "Dropbox",
      "project": "Dropbox Python SDK",
      "repository": "dropbox/dropbox-sdk-python",
      "category": "Enterprise software",
      "summary": "Dropbox's Python SDK declares Requests as a runtime dependency.",
      "evidenceType": "Direct dependency",
      "evidenceUrl": "https://github.com/dropbox/dropbox-sdk-python/blob/51e6b817c22ad308dfbd337326a2fa117c24de40/pyproject.toml#L15",
      "sourcePath": "pyproject.toml",
      "commitSha": "51e6b817c22ad308dfbd337326a2fa117c24de40",
      "evidenceSnippet": "    \"requests>=2.16.2\",",
      "lineStart": 15,
      "lineEnd": 15,
      "checkedAt": "2026-10-25T02:51:17Z",
      "archived": false,
      "sourceBlobSha": "24c701a94be0006133c8447b7e27e27d53c6475c",
      "sector": "technology",
      "useScope": "SDK",
      "avatarSource": "https://avatars.githubusercontent.com/u/559357?v=4",
      "sourceSha256": "a50eac651a51a41856c5982b43530947ad6458ef6e727c5c773d5905b1a96fdc",
      "avatarPath": "/static/observatory/organizations/dropbox-python.png",
      "usageDetails": {
        "title": "Moving Dropbox API data and file content",
        "explanation": "Dropbox's client uses Requests to carry three API styles: ordinary JSON operations, file uploads, and file downloads. It constructs the route and authentication headers, puts upload bytes in the body, or enables streaming for downloads. A session sends the POST request, after which the SDK checks errors and returns the appropriate JSON result or downloadable response stream.",
        "flow": [
          "The client selects a JSON, upload, or download route style.",
          "Requests posts the configured headers and body, streaming downloads when needed.",
          "The SDK checks errors and returns structured results or file content."
        ],
        "scopeNote": "This describes the public Dropbox Python SDK's transport. It establishes supported file and API workflows, not anyone's private files or live usage.",
        "verification": "code",
        "sources": [
          {
            "label": "Requests session selection",
            "repository": "dropbox/dropbox-sdk-python",
            "commitSha": "51e6b817c22ad308dfbd337326a2fa117c24de40",
            "sourcePath": "dropbox/dropbox_client.py",
            "lineStart": 214,
            "lineEnd": 224,
            "evidenceUrl": "https://github.com/dropbox/dropbox-sdk-python/blob/51e6b817c22ad308dfbd337326a2fa117c24de40/dropbox/dropbox_client.py#L214-L224",
            "checkedAt": "2026-10-25T03:10:24Z",
            "sourceSha256": "1497d36c8f0a225c9431968058aed4a37edf73e8130fd2b48c385d2debf5e03f",
            "sourceBlobSha": "b5f0efe4cbe59aa05ce60c06f3e5b9f8c63d6054"
          },
          {
            "label": "JSON, upload, and download transport",
            "repository": "dropbox/dropbox-sdk-python",
            "commitSha": "51e6b817c22ad308dfbd337326a2fa117c24de40",
            "sourcePath": "dropbox/dropbox_client.py",
            "lineStart": 598,
            "lineEnd": 704,
            "evidenceUrl": "https://github.com/dropbox/dropbox-sdk-python/blob/51e6b817c22ad308dfbd337326a2fa117c24de40/dropbox/dropbox_client.py#L598-L704",
            "checkedAt": "2026-10-25T03:10:24Z",
            "sourceSha256": "1497d36c8f0a225c9431968058aed4a37edf73e8130fd2b48c385d2debf5e03f",
            "sourceBlobSha": "b5f0efe4cbe59aa05ce60c06f3e5b9f8c63d6054"
          }
        ]
      }
    },
    {
      "id": "box-python-sdk",
      "organization": "Box",
      "project": "Box Python SDK",
      "repository": "box/box-python-sdk",
      "category": "Enterprise software",
      "summary": "Box's official Python SDK declares Requests as an installation dependency.",
      "evidenceType": "Direct dependency",
      "evidenceUrl": "https://github.com/box/box-python-sdk/blob/bc8340b2cc7cb560e5eb3a080bc87104bbbe34cd/setup.py#L9",
      "sourcePath": "setup.py",
      "commitSha": "bc8340b2cc7cb560e5eb3a080bc87104bbbe34cd",
      "evidenceSnippet": "    install_requires = ['requests', 'urllib3']",
      "lineStart": 9,
      "lineEnd": 9,
      "checkedAt": "2026-10-25T02:51:17Z",
      "archived": false,
      "sourceBlobSha": "1e181450f39e4f0f3646a003faf2e536d9ba9e7a",
      "sector": "technology",
      "useScope": "SDK",
      "avatarSource": "https://avatars.githubusercontent.com/u/23900?v=4",
      "sourceSha256": "dbdd5429777c0602e7c44c868c5572bbfeea5c03c45451abc74543110c7a39fc",
      "avatarPath": "/static/observatory/organizations/box-python-sdk.png",
      "usageDetails": {
        "title": "Sending Box API payloads through a session",
        "explanation": "Box's network client uses a Requests session to send API requests prepared by the SDK. The request contains the HTTP method, URL, headers, query parameters, body, redirect preference, and timeout. The client requests a streamed response and wraps it in the SDK's response representation. Network exceptions are captured, with additional handling for problems while sending multipart uploads.",
        "flow": [
          "The SDK prepares an API request containing payload and connection options.",
          "Its Requests session sends the request and streams the response.",
          "The network client wraps the result or records a transport exception."
        ],
        "scopeNote": "The evidence covers Box's public SDK network layer, including multipart-related error handling. It does not expose Box customer accounts or current transfers.",
        "verification": "code",
        "sources": [
          {
            "label": "Requests session initialization",
            "repository": "box/box-python-sdk",
            "commitSha": "bc8340b2cc7cb560e5eb3a080bc87104bbbe34cd",
            "sourcePath": "box_sdk_gen/networking/box_network_client.py",
            "lineStart": 68,
            "lineEnd": 72,
            "evidenceUrl": "https://github.com/box/box-python-sdk/blob/bc8340b2cc7cb560e5eb3a080bc87104bbbe34cd/box_sdk_gen/networking/box_network_client.py#L68-L72",
            "checkedAt": "2026-10-25T03:10:24Z",
            "sourceSha256": "c2be89f16c3deee202591be3bc431cf62846488687372516e36d984534e11a18",
            "sourceBlobSha": "417d7a18fae619dfb4da9c13eb6e766f4554e4a9"
          },
          {
            "label": "Payload conversion and HTTP dispatch",
            "repository": "box/box-python-sdk",
            "commitSha": "bc8340b2cc7cb560e5eb3a080bc87104bbbe34cd",
            "sourcePath": "box_sdk_gen/networking/box_network_client.py",
            "lineStart": 267,
            "lineEnd": 324,
            "evidenceUrl": "https://github.com/box/box-python-sdk/blob/bc8340b2cc7cb560e5eb3a080bc87104bbbe34cd/box_sdk_gen/networking/box_network_client.py#L267-L324",
            "checkedAt": "2026-10-25T03:10:24Z",
            "sourceSha256": "c2be89f16c3deee202591be3bc431cf62846488687372516e36d984534e11a18",
            "sourceBlobSha": "417d7a18fae619dfb4da9c13eb6e766f4554e4a9"
          }
        ]
      }
    },
    {
      "id": "mozilla-addons",
      "organization": "Mozilla",
      "project": "Add-ons Server",
      "repository": "mozilla/addons-server",
      "category": "Knowledge & publishing",
      "summary": "Mozilla's Add-ons Server pins Requests in its production requirements.",
      "evidenceType": "Dependency pin",
      "evidenceUrl": "https://github.com/mozilla/addons-server/blob/7cdee4fbfc8f6b8a82d445b78a55f924d73ee738/requirements/prod.txt#L1166",
      "sourcePath": "requirements/prod.txt",
      "commitSha": "7cdee4fbfc8f6b8a82d445b78a55f924d73ee738",
      "evidenceSnippet": "requests==2.34.2 \\",
      "lineStart": 1166,
      "lineEnd": 1166,
      "checkedAt": "2026-10-25T02:51:17Z",
      "archived": false,
      "sourceBlobSha": "afb1338b40c10447e15fe0e25e7ed821341d6841",
      "sector": "technology",
      "useScope": "Application",
      "avatarSource": "https://avatars.githubusercontent.com/u/131524?v=4",
      "sourceSha256": "318d1cdc94729b1ebebefc4872ca0d59bf1e679ef62e2799d72afae86c5036a1",
      "avatarPath": "/static/observatory/organizations/mozilla-addons.png",
      "usageDetails": {
        "title": "Refreshing developer blog posts for Add-ons Server",
        "explanation": "A scheduled-update function in Mozilla's Add-ons Server fetches the configured developer blog endpoint with Requests and a ten-second timeout. It parses the JSON feed, rejects invalid responses, and keeps the latest five posts in the local blog cache. New posts are created, changed posts are updated, and entries outside the latest selection are removed.",
        "flow": [
          "Requests fetches the configured developer blog feed with a timeout.",
          "The updater validates JSON and selects the latest five posts.",
          "Cached blog records are created, updated, or removed to match."
        ],
        "scopeNote": "This is a concrete Add-ons Server maintenance function. The existing production dependency pin remains distinct from this directly inspected application callsite.",
        "verification": "code",
        "sources": [
          {
            "label": "Developer blog cache updater",
            "repository": "mozilla/addons-server",
            "commitSha": "7cdee4fbfc8f6b8a82d445b78a55f924d73ee738",
            "sourcePath": "src/olympia/devhub/cron.py",
            "lineStart": 16,
            "lineEnd": 44,
            "evidenceUrl": "https://github.com/mozilla/addons-server/blob/7cdee4fbfc8f6b8a82d445b78a55f924d73ee738/src/olympia/devhub/cron.py#L16-L44",
            "checkedAt": "2026-10-25T03:10:24Z",
            "sourceSha256": "82433853e46dc92a0efc30c708ed16f0439e2d8c1d68a4b2f54597e383402d3f",
            "sourceBlobSha": "d29bba6eea4559f024e752e404414f637fa2431f"
          },
          {
            "label": "Resolved production dependency pin",
            "repository": "mozilla/addons-server",
            "commitSha": "7cdee4fbfc8f6b8a82d445b78a55f924d73ee738",
            "sourcePath": "requirements/prod.txt",
            "lineStart": 1165,
            "lineEnd": 1168,
            "evidenceUrl": "https://github.com/mozilla/addons-server/blob/7cdee4fbfc8f6b8a82d445b78a55f924d73ee738/requirements/prod.txt#L1165-L1168",
            "checkedAt": "2026-10-25T03:10:24Z",
            "sourceSha256": "318d1cdc94729b1ebebefc4872ca0d59bf1e679ef62e2799d72afae86c5036a1",
            "sourceBlobSha": "afb1338b40c10447e15fe0e25e7ed821341d6841"
          }
        ]
      }
    },
    {
      "id": "uber-petastorm",
      "organization": "Uber",
      "project": "Petastorm test suite",
      "repository": "uber/petastorm",
      "category": "AI & data",
      "summary": "Petastorm lists Requests in its optional test dependencies.",
      "evidenceType": "Test dependency",
      "evidenceUrl": "https://github.com/uber/petastorm/blob/01ba9cb7da8d8a6937e177aee39e241e10569d29/setup.py#L74",
      "sourcePath": "setup.py",
      "commitSha": "01ba9cb7da8d8a6937e177aee39e241e10569d29",
      "evidenceSnippet": "        'requests>=2.22.0',",
      "lineStart": 74,
      "lineEnd": 74,
      "checkedAt": "2026-10-25T02:51:17Z",
      "archived": false,
      "sourceBlobSha": "ab69bbf89141b1fcf888e73ac5267d00e33f08f2",
      "sector": "technology",
      "useScope": "Tests",
      "avatarSource": "https://avatars.githubusercontent.com/u/538264?v=4",
      "sourceSha256": "12112c7bcd730c5a9d440c6b04f455da4ade6342d91652c97ee11162fac5f4f3",
      "avatarPath": "/static/observatory/organizations/uber-petastorm.png",
      "usageDetails": {
        "title": "Downloading MNIST data for a supporting example",
        "explanation": "Petastorm's Spark dataset-converter example includes a helper that downloads the compressed MNIST dataset with Requests and writes the response bytes to a local file. Another helper first checks for a preloaded copy, otherwise creates a temporary directory and downloads it. Separately, the package lists Requests in its optional test dependencies; this example does not make it a core reader requirement.",
        "flow": [
          "The example checks whether a preloaded MNIST data file exists.",
          "If needed, Requests fetches the compressed dataset into memory.",
          "The helper saves the bytes and returns the local dataset directory."
        ],
        "scopeNote": "The directory entry remains scoped to optional test dependencies. The inspected downloader is a supporting example, not Petastorm's core dataset-reading implementation.",
        "verification": "code",
        "sources": [
          {
            "label": "MNIST example data downloader",
            "repository": "uber/petastorm",
            "commitSha": "01ba9cb7da8d8a6937e177aee39e241e10569d29",
            "sourcePath": "examples/spark_dataset_converter/utils.py",
            "lineStart": 1,
            "lineEnd": 24,
            "evidenceUrl": "https://github.com/uber/petastorm/blob/01ba9cb7da8d8a6937e177aee39e241e10569d29/examples/spark_dataset_converter/utils.py#L1-L24",
            "checkedAt": "2026-10-25T03:10:24Z",
            "sourceSha256": "02dd447546236d87c20bc2a21aced8ca317694f01c5b385f80beb33348e8531e",
            "sourceBlobSha": "ac1bd7a394818eb35ea5564f27aff2d3c8e0b704"
          },
          {
            "label": "Optional test dependencies",
            "repository": "uber/petastorm",
            "commitSha": "01ba9cb7da8d8a6937e177aee39e241e10569d29",
            "sourcePath": "setup.py",
            "lineStart": 60,
            "lineEnd": 79,
            "evidenceUrl": "https://github.com/uber/petastorm/blob/01ba9cb7da8d8a6937e177aee39e241e10569d29/setup.py#L60-L79",
            "checkedAt": "2026-10-25T03:10:24Z",
            "sourceSha256": "12112c7bcd730c5a9d440c6b04f455da4ade6342d91652c97ee11162fac5f4f3",
            "sourceBlobSha": "ab69bbf89141b1fcf888e73ac5267d00e33f08f2"
          }
        ]
      }
    },
    {
      "id": "pinterest-querybook",
      "organization": "Pinterest",
      "project": "Querybook",
      "repository": "pinterest/querybook",
      "category": "AI & data",
      "summary": "Pinterest's Querybook data application lists Requests in its base requirements.",
      "evidenceType": "Direct dependency",
      "evidenceUrl": "https://github.com/pinterest/querybook/blob/3f26532bfc36ccfed422678c20f99800e5ed4cdf/requirements/base.txt#L32",
      "sourcePath": "requirements/base.txt",
      "commitSha": "3f26532bfc36ccfed422678c20f99800e5ed4cdf",
      "evidenceSnippet": "requests>=2.32.0,<3.0.0",
      "lineStart": 32,
      "lineEnd": 32,
      "checkedAt": "2026-10-25T02:51:17Z",
      "archived": false,
      "sourceBlobSha": "58383357ead7a20534f6cbd6b16c5bf54c3f2919",
      "sector": "technology",
      "useScope": "Application",
      "avatarSource": "https://avatars.githubusercontent.com/u/541152?v=4",
      "sourceSha256": "1c5c6c3c14afeef3fb62b7ef4a09bd36f439b3d66ba81720ca1df0c5f7612d1d",
      "avatarPath": "/static/observatory/organizations/pinterest-querybook.png",
      "usageDetails": {
        "title": "Delivering Querybook notifications to Slack recipients",
        "explanation": "Querybook's Slack notifier uses Requests to deliver messages to Slack users or channels. It takes the configured Slack token, converts the message into its outgoing text format, and builds a JSON body with the recipient and text. For each recipient, it sends an authenticated POST to Slack's chat.postMessage endpoint with a thirty-second timeout.",
        "flow": [
          "The notifier resolves recipients and prepares the outgoing message text.",
          "It creates a JSON payload and bearer-token authorization header.",
          "Requests posts each message to Slack with a thirty-second timeout."
        ],
        "scopeNote": "This proves an optional notification integration in Querybook's public code. It does not show Pinterest employees' messages or current internal Slack activity.",
        "verification": "code",
        "sources": [
          {
            "label": "Slack notification sender",
            "repository": "pinterest/querybook",
            "commitSha": "3f26532bfc36ccfed422678c20f99800e5ed4cdf",
            "sourcePath": "querybook/server/lib/notify/notifier/slack_notifier.py",
            "lineStart": 6,
            "lineEnd": 42,
            "evidenceUrl": "https://github.com/pinterest/querybook/blob/3f26532bfc36ccfed422678c20f99800e5ed4cdf/querybook/server/lib/notify/notifier/slack_notifier.py#L6-L42",
            "checkedAt": "2026-10-25T03:10:24Z",
            "sourceSha256": "c3b7beff09381ab391b33b4eee892fdfaa3cc0e0e009f04cb6c585d2442a6dc7",
            "sourceBlobSha": "d72e1f599f7b213e7fbf8e4b1c5c97da73c08345"
          }
        ]
      }
    },
    {
      "id": "adyen-python",
      "organization": "Adyen",
      "project": "Adyen Python API Library",
      "repository": "Adyen/adyen-python-api-library",
      "category": "Payments & commerce",
      "summary": "Adyen's Python API library offers Requests as an optional HTTP transport dependency.",
      "evidenceType": "Optional dependency",
      "evidenceUrl": "https://github.com/Adyen/adyen-python-api-library/blob/2b708a439f9b95c349f98f2985cda7fca46435bf/setup.py#L18",
      "sourcePath": "setup.py",
      "commitSha": "2b708a439f9b95c349f98f2985cda7fca46435bf",
      "evidenceSnippet": "        \"requests\": [\"requests>=2.25.0\"],",
      "lineStart": 18,
      "lineEnd": 18,
      "checkedAt": "2026-10-25T02:51:17Z",
      "archived": false,
      "sourceBlobSha": "ed62de50d3edd0dc54d4f1e9139e3a82face8923",
      "sector": "technology",
      "useScope": "Optional transport",
      "avatarSource": "https://avatars.githubusercontent.com/u/9713612?v=4",
      "sourceSha256": "e82f1bdcc57f65f971f5e375bf1d2e5fe980c4bb708b47e13f0cad4677fa050a",
      "avatarPath": "/static/observatory/organizations/adyen-python.png",
      "usageDetails": {
        "title": "Sending payments API calls through an optional transport",
        "explanation": "Adyen's HTTP client can select a Requests-based transport when Requests is available or explicitly requested. That implementation adds either basic authentication or the API-key header, includes the library's user-agent, and submits JSON or form data to the chosen endpoint. It returns the response text, status, and headers to the SDK. Other transport implementations remain available.",
        "flow": [
          "The client selects Requests as its available or explicitly chosen transport.",
          "Authentication, headers, and JSON or form data are assembled.",
          "Requests sends the call and returns response details to the SDK."
        ],
        "scopeNote": "Requests is an optional Adyen transport, not the only implementation. This code establishes SDK capability without demonstrating a live payment transaction.",
        "verification": "code",
        "sources": [
          {
            "label": "Optional HTTP transport selection",
            "repository": "Adyen/adyen-python-api-library",
            "commitSha": "2b708a439f9b95c349f98f2985cda7fca46435bf",
            "sourcePath": "Adyen/httpclient.py",
            "lineStart": 24,
            "lineEnd": 44,
            "evidenceUrl": "https://github.com/Adyen/adyen-python-api-library/blob/2b708a439f9b95c349f98f2985cda7fca46435bf/Adyen/httpclient.py#L24-L44",
            "checkedAt": "2026-10-25T03:10:24Z",
            "sourceSha256": "da42216cb2c81a7d23632636f0323db33eca3e0a877dc11d4faf64209495fe3a",
            "sourceBlobSha": "0684d1a9df6f611d1f757b7b59233fa59b243412"
          },
          {
            "label": "Requests transport implementation",
            "repository": "Adyen/adyen-python-api-library",
            "commitSha": "2b708a439f9b95c349f98f2985cda7fca46435bf",
            "sourcePath": "Adyen/httpclient.py",
            "lineStart": 125,
            "lineEnd": 179,
            "evidenceUrl": "https://github.com/Adyen/adyen-python-api-library/blob/2b708a439f9b95c349f98f2985cda7fca46435bf/Adyen/httpclient.py#L125-L179",
            "checkedAt": "2026-10-25T03:10:24Z",
            "sourceSha256": "da42216cb2c81a7d23632636f0323db33eca3e0a877dc11d4faf64209495fe3a",
            "sourceBlobSha": "0684d1a9df6f611d1f757b7b59233fa59b243412"
          }
        ]
      }
    },
    {
      "id": "akamai-edgegrid",
      "organization": "Akamai",
      "project": "EdgeGrid for Python",
      "repository": "akamai/AkamaiOPEN-edgegrid-python",
      "category": "Cloud & platforms",
      "summary": "Akamai's EdgeGrid authentication library declares Requests as an installation dependency.",
      "evidenceType": "Direct dependency",
      "evidenceUrl": "https://github.com/akamai/AkamaiOPEN-edgegrid-python/blob/42640cbf8386736a90a1b8791bbe93d523b8256a/setup.py#L14",
      "sourcePath": "setup.py",
      "commitSha": "42640cbf8386736a90a1b8791bbe93d523b8256a",
      "evidenceSnippet": "        'requests>=2.24.0',",
      "lineStart": 14,
      "lineEnd": 14,
      "checkedAt": "2026-10-25T02:51:17Z",
      "archived": false,
      "sourceBlobSha": "5126f2ba36b6bb2a66cd7aab8933e64b86554df6",
      "sector": "technology",
      "useScope": "SDK",
      "avatarSource": "https://avatars.githubusercontent.com/u/5497190?v=4",
      "sourceSha256": "3746a9e89996ac8c1ff35bb52620f648bce2088a7332ccfb7f956edfa958cf00",
      "avatarPath": "/static/observatory/organizations/akamai-edgegrid.jpg",
      "usageDetails": {
        "title": "Signing outgoing requests with EdgeGrid authentication",
        "explanation": "EdgeGrid integrates with Requests as an authentication handler. Before an outgoing request is sent, the handler creates a timestamp and nonce, computes the EdgeGrid authorization value, and attaches it to the request header. It also registers a response hook to handle signing for redirects. Requests provides the request object and authentication-hook lifecycle that this plugin extends.",
        "flow": [
          "A Requests request passes through the configured EdgeGrid authentication handler.",
          "The handler generates signing inputs and attaches its authorization header.",
          "A registered response hook handles signing adjustments when redirects occur."
        ],
        "scopeNote": "This evidence describes an authentication extension for Requests. It does not indicate how much traffic Akamai serves or which customers run it.",
        "verification": "code",
        "sources": [
          {
            "label": "Requests authentication handler and signing hook",
            "repository": "akamai/AkamaiOPEN-edgegrid-python",
            "commitSha": "42640cbf8386736a90a1b8791bbe93d523b8256a",
            "sourcePath": "akamai/edgegrid/edgegrid.py",
            "lineStart": 121,
            "lineEnd": 200,
            "evidenceUrl": "https://github.com/akamai/AkamaiOPEN-edgegrid-python/blob/42640cbf8386736a90a1b8791bbe93d523b8256a/akamai/edgegrid/edgegrid.py#L121-L200",
            "checkedAt": "2026-10-25T03:10:24Z",
            "sourceSha256": "a73250eea8c2e4a64820cff2ae17551d4b897ba08c173b7ecf5b9c41e376faf9",
            "sourceBlobSha": "94c33b20d27631d10dac0e825e9be9f78d7b093c"
          }
        ]
      }
    },
    {
      "id": "linode-api-sdk",
      "organization": "Akamai",
      "project": "Linode API Python SDK",
      "repository": "linode/linode_api4-python",
      "category": "Cloud & platforms",
      "sector": "technology",
      "summary": "The Linode SDK uses Requests to exchange OAuth authorization codes for access tokens.",
      "useScope": "SDK",
      "evidenceType": "Code usage",
      "evidenceUrl": "https://github.com/linode/linode_api4-python/blob/eeee335f7068216305d7fec50c97fc6cc3c2ab41/linode_api4/login_client.py#L471-L479",
      "sourcePath": "linode_api4/login_client.py",
      "commitSha": "eeee335f7068216305d7fec50c97fc6cc3c2ab41",
      "evidenceSnippet": "        r = requests.post(\n            self._login_uri(\"/oauth/token\"),\n            data={\n                \"code\": code,\n                \"client_id\": self.client_id,\n                \"client_secret\": self.client_secret,\n            },\n            verify=self.ca_path or True,\n        )",
      "lineStart": 471,
      "lineEnd": 479,
      "checkedAt": "2026-10-25T02:52:27.040Z",
      "archived": false,
      "sourceSha256": "01ff60ecd521890ea9557362d248a540a991f413d9f5e95f4f411ed38dfd7fa3",
      "sourceBlobSha": "8b8fe69c33f36286655fb7aa2e8b774d5e7bd68f",
      "avatarSource": "https://avatars.githubusercontent.com/u/5184305?v=4",
      "repositoryOwner": "linode",
      "defaultBranch": "dev",
      "avatarPath": "/static/observatory/organizations/linode-api-sdk.png",
      "usageDetails": {
        "title": "Exchanging Linode login codes for tokens",
        "explanation": "The Linode Python SDK uses Requests during an OAuth login flow. After a user authorizes an application, the SDK posts the returned exchange code and application credentials to the login service's token endpoint. It checks the response, then extracts the access token, granted permissions, expiry, and refresh token so the application can continue its authenticated workflow.",
        "flow": [
          "Receive the authorization exchange code after the user approves access.",
          "Post the code and application credentials using Requests to the token endpoint.",
          "Extract access permissions, token expiry, and refresh-token details from the response."
        ],
        "scopeNote": "The demonstrated code is the Linode SDK login client, a specific Akamai project rather than evidence of company-wide activity.",
        "verification": "code",
        "sources": [
          {
            "label": "OAuth code exchange and result",
            "repository": "linode/linode_api4-python",
            "commitSha": "eeee335f7068216305d7fec50c97fc6cc3c2ab41",
            "sourcePath": "linode_api4/login_client.py",
            "lineStart": 460,
            "lineEnd": 492,
            "evidenceUrl": "https://github.com/linode/linode_api4-python/blob/eeee335f7068216305d7fec50c97fc6cc3c2ab41/linode_api4/login_client.py#L460-L492",
            "checkedAt": "2026-10-25T03:07:42.119Z",
            "sourceSha256": "01ff60ecd521890ea9557362d248a540a991f413d9f5e95f4f411ed38dfd7fa3",
            "sourceBlobSha": "8b8fe69c33f36286655fb7aa2e8b774d5e7bd68f"
          }
        ]
      }
    },
    {
      "id": "algorand",
      "organization": "Algorand",
      "project": "Indexer parity tests",
      "repository": "algorand/indexer",
      "category": "Crypto & Web3",
      "summary": "Indexer parity tests use Requests to fetch the Algod API specification.",
      "useScope": "Tests",
      "evidenceType": "Code usage",
      "evidenceUrl": "https://github.com/algorand/indexer/blob/748ac4048cf8893c4faf0c1d3b31bcbe67b0165d/misc/parity/test_indexer_v_algod.py#L59-L63",
      "sourcePath": "misc/parity/test_indexer_v_algod.py",
      "commitSha": "748ac4048cf8893c4faf0c1d3b31bcbe67b0165d",
      "evidenceSnippet": "\n    f=requests.get(ALGOD_SWGR)\n    algod = json.loads(f.text)\n    algod = select(algod, PATH_INCLUDES)\n",
      "lineStart": 59,
      "lineEnd": 63,
      "checkedAt": "2026-10-25T01:26:47Z",
      "archived": false,
      "repositoryOwner": "algorand",
      "defaultBranch": "main",
      "sourceBlobSha": "5747319f7ae4a70ae3eea477228e4226dac8bb0e",
      "sourceSha256": "0617347e60224a94daf7d67ad6f80ebf4276fa84759d6a514ed56da8665e674a",
      "sector": "crypto",
      "avatarSource": "https://avatars.githubusercontent.com/u/23182699?v=4",
      "avatarPath": "/static/observatory/organizations/algorand.png",
      "usageDetails": {
        "title": "Checking account schema compatibility in tests",
        "explanation": "An Algorand Indexer parity test uses Requests to download the Algod OpenAPI specification from the official go-algorand repository on GitHub. The test reads the downloaded JSON and extracts its Account definition, then loads the corresponding definition from the local Indexer specification. These two schemas become the inputs for comparison, helping developers identify differences between the APIs’ documented account structures.",
        "flow": [
          "Download the Algod OpenAPI specification from its configured GitHub URL.",
          "Load Account definitions from the downloaded and local API specifications.",
          "Compare the definitions so developers can inspect account schema differences."
        ],
        "scopeNote": "The evidence is a developer parity test for API specifications, not Requests carrying Algorand transactions or consensus messages.",
        "verification": "code",
        "sources": [
          {
            "label": "Specification sources and schema setup",
            "repository": "algorand/indexer",
            "commitSha": "748ac4048cf8893c4faf0c1d3b31bcbe67b0165d",
            "sourcePath": "misc/parity/test_indexer_v_algod.py",
            "lineStart": 18,
            "lineEnd": 76,
            "evidenceUrl": "https://github.com/algorand/indexer/blob/748ac4048cf8893c4faf0c1d3b31bcbe67b0165d/misc/parity/test_indexer_v_algod.py#L18-L76",
            "checkedAt": "2026-10-25T01:26:47Z",
            "sourceSha256": "0617347e60224a94daf7d67ad6f80ebf4276fa84759d6a514ed56da8665e674a",
            "sourceBlobSha": "5747319f7ae4a70ae3eea477228e4226dac8bb0e"
          }
        ]
      }
    },
    {
      "id": "apache-airflow",
      "organization": "Apache Software Foundation",
      "project": "Apache Airflow",
      "repository": "apache/airflow",
      "category": "AI & data",
      "summary": "Apache Airflow Core declares Requests as a runtime dependency.",
      "evidenceType": "Direct dependency",
      "evidenceUrl": "https://github.com/apache/airflow/blob/1b9a32b528300a545ca71daee3d161da1468347c/airflow-core/pyproject.toml#L144-L144",
      "sourcePath": "airflow-core/pyproject.toml",
      "commitSha": "1b9a32b528300a545ca71daee3d161da1468347c",
      "evidenceSnippet": "    \"requests>=2.32.0,<3\",",
      "lineStart": 144,
      "lineEnd": 144,
      "checkedAt": "2026-10-25T01:27:26Z",
      "archived": false,
      "sourceSha256": "51a9d6e0544663032f412d16bafb00536ef9c0c7546c7264eb0907058f5a3046",
      "sourceBlobSha": "573be540ffaa7c7d6be5898bf1c571cf7f47dbb0",
      "sector": "technology",
      "useScope": "Application",
      "avatarSource": "https://avatars.githubusercontent.com/u/47359?v=4",
      "avatarPath": "/static/observatory/organizations/apache-airflow.png",
      "usageDetails": {
        "title": "Retrieving task logs from Airflow services",
        "explanation": "Airflow uses Requests in a helper that retrieves task logs from a log-serving service. The helper creates a short-lived signed authorization token tied to the requested log filename, makes a streaming HTTP GET with a configured timeout, and marks the response as UTF-8. The returned response lets the surrounding log handler read task output for users inspecting a run.",
        "flow": [
          "Create a signed authorization token for the requested task-log filename.",
          "Request the log-service URL with Requests using streaming and a timeout.",
          "Return the UTF-8 response to the surrounding task-log handler."
        ],
        "scopeNote": "This verifies Airflow Core log retrieval, not every Airflow task, provider integration, or running deployment in the world.",
        "verification": "code",
        "sources": [
          {
            "label": "Authenticated task-log retrieval",
            "repository": "apache/airflow",
            "commitSha": "1b9a32b528300a545ca71daee3d161da1468347c",
            "sourcePath": "airflow-core/src/airflow/utils/log/file_task_handler.py",
            "lineStart": 166,
            "lineEnd": 191,
            "evidenceUrl": "https://github.com/apache/airflow/blob/1b9a32b528300a545ca71daee3d161da1468347c/airflow-core/src/airflow/utils/log/file_task_handler.py#L166-L191",
            "checkedAt": "2026-10-25T03:07:43.170Z",
            "sourceSha256": "56018446917d000afc40f4d6e11376276ef3fa261508b60f828ed5f4f6c73e39",
            "sourceBlobSha": "f20db27722b5e4caf9ba87f33779b88b924fca8a"
          }
        ]
      }
    },
    {
      "id": "apache-beam",
      "organization": "Apache Software Foundation",
      "project": "Apache Beam Python SDK",
      "repository": "apache/beam",
      "category": "AI & data",
      "sector": "technology",
      "summary": "Apache Beam's Python SDK declares Requests in its installation dependencies.",
      "useScope": "SDK",
      "evidenceType": "Direct dependency",
      "evidenceUrl": "https://github.com/apache/beam/blob/a16836191ddb8100d368a9174217c83c894aaaac/sdks/python/setup.py#L461-L461",
      "sourcePath": "sdks/python/setup.py",
      "commitSha": "a16836191ddb8100d368a9174217c83c894aaaac",
      "evidenceSnippet": "          'requests>=2.32.4,<3.0.0',",
      "lineStart": 461,
      "lineEnd": 461,
      "checkedAt": "2026-10-25T02:52:34.771Z",
      "archived": false,
      "sourceSha256": "06bf31ee5af05271174e95ba7fcad6c14f0785bd6fe21d6cd7b73b590783449a",
      "sourceBlobSha": "77a5b835a059b56316255d5a0d6626112d449180",
      "avatarSource": "https://avatars.githubusercontent.com/u/47359?v=4",
      "repositoryOwner": "apache",
      "defaultBranch": "master",
      "avatarPath": "/static/observatory/organizations/apache-beam.png",
      "usageDetails": {
        "title": "Reading Dataflow worker metadata over HTTP",
        "explanation": "Apache Beam's Python SDK uses Requests in a Google Compute Engine metadata helper. The helper queries the instance metadata endpoint with Google's required metadata header and a short timeout. One caller retrieves the Dataflow job identifier from custom instance attributes. A successful response returns text; an unavailable metadata service returns an empty value rather than failing the helper.",
        "flow": [
          "Build the instance-metadata URL for the requested worker attribute.",
          "Fetch it using Requests with the Google metadata header and timeout.",
          "Return metadata text on success, or an empty value when unavailable."
        ],
        "scopeNote": "This is a GCP/Dataflow metadata utility inside Beam, not a claim that every pipeline or runner makes this request.",
        "verification": "code",
        "sources": [
          {
            "label": "Dataflow job metadata helper",
            "repository": "apache/beam",
            "commitSha": "a16836191ddb8100d368a9174217c83c894aaaac",
            "sourcePath": "sdks/python/apache_beam/io/gcp/gce_metadata_util.py",
            "lineStart": 22,
            "lineEnd": 46,
            "evidenceUrl": "https://github.com/apache/beam/blob/a16836191ddb8100d368a9174217c83c894aaaac/sdks/python/apache_beam/io/gcp/gce_metadata_util.py#L22-L46",
            "checkedAt": "2026-10-25T03:07:44.226Z",
            "sourceSha256": "b7dfa0ba60018d6c25b84b0b8a0ce0426ee0015d8d4f18fc71f8be7768cc9ec6",
            "sourceBlobSha": "ff185876f04c638bf663c4a49c6bca950eb70bfa"
          }
        ]
      }
    },
    {
      "id": "apache-superset",
      "organization": "Apache Software Foundation",
      "project": "Apache Superset",
      "repository": "apache/superset",
      "category": "AI & data",
      "sector": "technology",
      "summary": "Apache Superset includes Requests in its base application requirements.",
      "useScope": "Application",
      "evidenceType": "Direct dependency",
      "evidenceUrl": "https://github.com/apache/superset/blob/f829175e946de36305b16e3f26084c2ff71301e8/requirements/base.in#L39-L39",
      "sourcePath": "requirements/base.in",
      "commitSha": "f829175e946de36305b16e3f26084c2ff71301e8",
      "evidenceSnippet": "requests>=2.33.0,<3.0.0",
      "lineStart": 39,
      "lineEnd": 39,
      "checkedAt": "2026-10-25T02:52:35.835Z",
      "archived": false,
      "sourceSha256": "38b05d6fcd9a4c02db050eb93dbc698571f8e49e0b4ddbf0c81bc614c74aa6d4",
      "sourceBlobSha": "89d9c6f5f0a504c077a3f36a2be3902b944f41d9",
      "avatarSource": "https://avatars.githubusercontent.com/u/47359?v=4",
      "repositoryOwner": "apache",
      "defaultBranch": "master",
      "avatarPath": "/static/observatory/organizations/apache-superset.png",
      "usageDetails": {
        "title": "Delivering Superset report notifications through webhooks",
        "explanation": "Superset uses Requests for its optional report-webhook notification feature. When enabled, it builds a notification payload and gathers any report attachments, validates the destination, and posts the message through Requests or a Requests session. Attachments use multipart submission; notifications without files use JSON. The notifier checks the response so delivery failures can be handled by the reporting workflow.",
        "flow": [
          "Build the report notification and collect any files for delivery.",
          "Validate the webhook destination and send JSON or multipart data.",
          "Inspect the HTTP response and report delivery errors when necessary."
        ],
        "scopeNote": "This is the feature-gated webhook notifier; the evidence does not imply every Superset installation has webhook delivery enabled.",
        "verification": "code",
        "sources": [
          {
            "label": "Requests-backed webhook sender",
            "repository": "apache/superset",
            "commitSha": "f829175e946de36305b16e3f26084c2ff71301e8",
            "sourcePath": "superset/reports/notifications/webhook.py",
            "lineStart": 130,
            "lineEnd": 151,
            "evidenceUrl": "https://github.com/apache/superset/blob/f829175e946de36305b16e3f26084c2ff71301e8/superset/reports/notifications/webhook.py#L130-L151",
            "checkedAt": "2026-10-25T03:07:45.269Z",
            "sourceSha256": "f213a70f8ddccd57458027dd569beabf7b2f1bb54f0aca262adfa5a3f9de911d",
            "sourceBlobSha": "d43ec0f33e40bf4f857c7b680cdab32701340606"
          },
          {
            "label": "Notification preparation and delivery",
            "repository": "apache/superset",
            "commitSha": "f829175e946de36305b16e3f26084c2ff71301e8",
            "sourcePath": "superset/reports/notifications/webhook.py",
            "lineStart": 283,
            "lineEnd": 342,
            "evidenceUrl": "https://github.com/apache/superset/blob/f829175e946de36305b16e3f26084c2ff71301e8/superset/reports/notifications/webhook.py#L283-L342",
            "checkedAt": "2026-10-25T03:07:45.269Z",
            "sourceSha256": "f213a70f8ddccd57458027dd569beabf7b2f1bb54f0aca262adfa5a3f9de911d",
            "sourceBlobSha": "d43ec0f33e40bf4f857c7b680cdab32701340606"
          }
        ]
      }
    },
    {
      "id": "aptos-testnet",
      "organization": "Aptos Labs",
      "project": "Local testnet end-to-end tests",
      "repository": "aptos-labs/aptos-core",
      "category": "Crypto & Web3",
      "summary": "The local testnet test code uses Requests to check node and faucet endpoints.",
      "evidenceType": "Code usage",
      "evidenceUrl": "https://github.com/aptos-labs/aptos-core/blob/c90177c781805d51dcd8ec337b73d8d4399e6bf0/crates/aptos/e2e/local_testnet.py#L97-L97",
      "sourcePath": "crates/aptos/e2e/local_testnet.py",
      "commitSha": "c90177c781805d51dcd8ec337b73d8d4399e6bf0",
      "evidenceSnippet": "            api_response = requests.get(f\"http://127.0.0.1:{NODE_PORT}/v1\")",
      "lineStart": 97,
      "lineEnd": 97,
      "checkedAt": "2026-10-25T02:52:38Z",
      "archived": false,
      "sourceBlobSha": "3d024219ba9fcb371b3c894020a39fe274cfd7e1",
      "sector": "crypto",
      "useScope": "Tests",
      "avatarSource": "https://avatars.githubusercontent.com/u/99841612?v=4",
      "avatarPath": "/static/observatory/organizations/aptos-testnet.png",
      "ownershipJustification": "The non-fork aptos-labs/aptos-core repository describes the Aptos blockchain and links aptosnetwork.com.",
      "defaultBranch": "main",
      "sourceSha256": "fb77b3482d88688e446a8836b5aab94a126ebddcf81de69b51001185c8e15f5a",
      "usageDetails": {
        "title": "Waiting for a local Aptos testnet",
        "explanation": "The Aptos CLI end-to-end test helper uses Requests to check whether a local testnet is ready. It polls the node’s /v1 endpoint and the faucet’s /health endpoint, falling back to the faucet root when the health path returns 404. Both services must return a successful status. Otherwise the helper waits and tries again until its startup timeout is reached.",
        "flow": [
          "Poll the local node API and faucet health endpoint.",
          "Use the faucet root if its health endpoint is unavailable.",
          "Continue when both services succeed, or stop after the startup timeout."
        ],
        "scopeNote": "This is local test infrastructure that checks service readiness before tests, rather than the Aptos node’s consensus implementation.",
        "verification": "code",
        "sources": [
          {
            "label": "Local node and faucet readiness checks",
            "repository": "aptos-labs/aptos-core",
            "commitSha": "c90177c781805d51dcd8ec337b73d8d4399e6bf0",
            "sourcePath": "crates/aptos/e2e/local_testnet.py",
            "lineStart": 89,
            "lineEnd": 116,
            "evidenceUrl": "https://github.com/aptos-labs/aptos-core/blob/c90177c781805d51dcd8ec337b73d8d4399e6bf0/crates/aptos/e2e/local_testnet.py#L89-L116",
            "checkedAt": "2026-10-25T02:52:38Z",
            "sourceSha256": "fb77b3482d88688e446a8836b5aab94a126ebddcf81de69b51001185c8e15f5a",
            "sourceBlobSha": "3d024219ba9fcb371b3c894020a39fe274cfd7e1"
          }
        ]
      }
    },
    {
      "id": "auth0-python",
      "organization": "Auth0 / Okta",
      "project": "Auth0 Python SDK",
      "repository": "auth0/auth0-python",
      "category": "Security & identity",
      "summary": "Auth0's Python SDK declares Requests among its authentication API dependencies.",
      "evidenceType": "Direct dependency",
      "evidenceUrl": "https://github.com/auth0/auth0-python/blob/9aae3e583b27586c045c5b9b8fcb4d00d222949d/pyproject.toml#L47",
      "sourcePath": "pyproject.toml",
      "commitSha": "9aae3e583b27586c045c5b9b8fcb4d00d222949d",
      "evidenceSnippet": "requests = \">=2.32.3\"",
      "lineStart": 47,
      "lineEnd": 47,
      "checkedAt": "2026-10-25T02:51:17Z",
      "archived": false,
      "sourceBlobSha": "65b1b4cc9d20770cb430430fff225eee6cc4c1b7",
      "sector": "technology",
      "useScope": "SDK",
      "avatarSource": "https://avatars.githubusercontent.com/u/2824157?v=4",
      "sourceSha256": "2118d380fcf2efa2f7c5ab9bd2e04da5f6b65e5c04d2337f388a3ff483ad6fc6",
      "avatarPath": "/static/observatory/organizations/auth0-python.png",
      "usageDetails": {
        "title": "Sending authentication API requests with rate-limit retries",
        "explanation": "Auth0's authentication REST client uses Requests for its synchronous HTTP calls. It gathers query parameters, JSON or form data, headers, files, and a configured timeout. Form-encoded endpoints receive an encoded body when needed. After sending, the client can retry responses with HTTP 429 using calculated delays, then passes the final response into its parsing and error-handling logic.",
        "flow": [
          "The authentication client assembles parameters, payloads, headers, and timeout settings.",
          "Requests sends the synchronous HTTP call to the supplied endpoint.",
          "The wrapper retries configured rate limits and processes the final response."
        ],
        "scopeNote": "The evidence applies to Auth0's synchronous authentication REST client. It does not imply that every component or asynchronous client uses Requests.",
        "verification": "code",
        "sources": [
          {
            "label": "Synchronous authentication request loop",
            "repository": "auth0/auth0-python",
            "commitSha": "9aae3e583b27586c045c5b9b8fcb4d00d222949d",
            "sourcePath": "src/auth0/authentication/rest.py",
            "lineStart": 151,
            "lineEnd": 205,
            "evidenceUrl": "https://github.com/auth0/auth0-python/blob/9aae3e583b27586c045c5b9b8fcb4d00d222949d/src/auth0/authentication/rest.py#L151-L205",
            "checkedAt": "2026-10-25T03:10:24Z",
            "sourceSha256": "ae14183372b310d3f38729d6cc730da6f3260d1c05d242e4379ea0389616625c",
            "sourceBlobSha": "09572096e84370a733a20b34a8b3c22cd22a5082"
          }
        ]
      }
    },
    {
      "id": "ava-labs-analysis",
      "organization": "Ava Labs",
      "project": "ChainSafe Bridge analysis scripts",
      "repository": "ava-labs/chainsafe-scripts",
      "category": "Crypto & Web3",
      "summary": "A bridge-analysis helper hosted by Ava Labs uses Requests to retrieve token lists.",
      "evidenceType": "Code usage",
      "evidenceUrl": "https://github.com/ava-labs/chainsafe-scripts/blob/7625b7cb82661f5a9b592b42f0f75538db9b55c3/fee-calculator/src/avareporter/tokenlist/__init__.py#L6-L6",
      "sourcePath": "fee-calculator/src/avareporter/tokenlist/__init__.py",
      "commitSha": "7625b7cb82661f5a9b592b42f0f75538db9b55c3",
      "evidenceSnippet": "    resp = requests.get(url)",
      "lineStart": 6,
      "lineEnd": 6,
      "checkedAt": "2026-10-25T02:52:38Z",
      "archived": false,
      "sourceBlobSha": "5aababfcd4e9586a2a5e66bc6acbca44715a65ee",
      "sector": "crypto",
      "useScope": "Analytics tooling",
      "avatarSource": "https://avatars.githubusercontent.com/u/44277073?v=4",
      "avatarPath": "/static/observatory/organizations/ava-labs-analysis.png",
      "ownershipJustification": "The non-fork ava-labs-owned repository's README identifies scripts for ChainSafe Bridge analysis. This is not proof of Avalanche node runtime use.",
      "defaultBranch": "master",
      "sourceSha256": "4f1005883272a3330ba0186ca6e2048de804bbda1d338e13350cb8b958839be8",
      "usageDetails": {
        "title": "Loading token metadata for analysis tools",
        "explanation": "A token list helper in Ava Labs’ chainsafe-scripts repository uses Requests to retrieve JSON from a URL supplied by its caller. It decodes the HTTP response and passes the resulting fields into a TokenList model. This provides structured token metadata to the surrounding fee analysis code; the helper itself does not calculate fees, submit transactions, or choose a fixed external service.",
        "flow": [
          "Accept the remote token list URL from the calling code.",
          "Download the URL with Requests and decode the JSON response.",
          "Construct a TokenList object for the surrounding analysis code to use."
        ],
        "scopeNote": "The verified use is a small token metadata loader in analysis tooling, not evidence about Avalanche node internals.",
        "verification": "code",
        "sources": [
          {
            "label": "Token list retrieval helper",
            "repository": "ava-labs/chainsafe-scripts",
            "commitSha": "7625b7cb82661f5a9b592b42f0f75538db9b55c3",
            "sourcePath": "fee-calculator/src/avareporter/tokenlist/__init__.py",
            "lineStart": 1,
            "lineEnd": 9,
            "evidenceUrl": "https://github.com/ava-labs/chainsafe-scripts/blob/7625b7cb82661f5a9b592b42f0f75538db9b55c3/fee-calculator/src/avareporter/tokenlist/__init__.py#L1-L9",
            "checkedAt": "2026-10-25T02:52:38Z",
            "sourceSha256": "4f1005883272a3330ba0186ca6e2048de804bbda1d338e13350cb8b958839be8",
            "sourceBlobSha": "5aababfcd4e9586a2a5e66bc6acbca44715a65ee"
          }
        ]
      }
    },
    {
      "id": "litellm-cli",
      "organization": "BerriAI",
      "project": "LiteLLM CLI",
      "repository": "BerriAI/litellm",
      "category": "AI & data",
      "sector": "technology",
      "summary": "LiteLLM's optional CLI installation declares Requests as a dependency.",
      "useScope": "CLI extra",
      "evidenceType": "Optional dependency",
      "sourcePath": "pyproject.toml",
      "commitSha": "de5dc5b238b6e972869d7dedc6ba3c4fb8d931fe",
      "lineStart": 99,
      "lineEnd": 103,
      "checkedAt": "2026-10-25T02:51:47.374Z",
      "archived": false,
      "sourceBlobSha": "817c50df90b7a2f3a4e2ae3bbff605261481354c",
      "avatarSource": "https://avatars.githubusercontent.com/u/121462774?v=4",
      "sourceSha256": "1b6b27c119508fcacb9fb48827d7b18cb642467581d624fc10b1e75c556a2ad0",
      "evidenceSnippet": "cli = [\n    \"rich>=13.9.4,<14.0\",\n    \"pyyaml>=6.0.3,<7.0\",\n    \"requests>=2.32.0,<3.0\",\n    \"InquirerPy>=0.3.4,<1.0\",",
      "evidenceUrl": "https://github.com/BerriAI/litellm/blob/de5dc5b238b6e972869d7dedc6ba3c4fb8d931fe/pyproject.toml#L99-L103",
      "repositoryOwner": "BerriAI",
      "defaultBranch": "main",
      "avatarPath": "/static/observatory/organizations/litellm-cli.png",
      "usageDetails": {
        "title": "Managing proxy users from the optional CLI",
        "explanation": "LiteLLM's optional command-line client uses a user-management client to communicate with a configured proxy server. The CLI supplies the base URL and API key, and the client uses Requests to list, inspect, create or delete users through the corresponding endpoints. Responses are checked for authentication or HTTP errors before their JSON is displayed by the CLI.",
        "flow": [
          "Read the proxy URL and API key from the CLI context.",
          "Send the requested user-management operation using authenticated Requests calls.",
          "Check errors and present the returned user data in the terminal."
        ],
        "scopeNote": "This is the optional CLI's proxy-management path; it does not imply that LiteLLM sends every model-completion request through Requests.",
        "verification": "code",
        "sources": [
          {
            "label": "CLI commands invoking user management",
            "repository": "BerriAI/litellm",
            "commitSha": "de5dc5b238b6e972869d7dedc6ba3c4fb8d931fe",
            "sourcePath": "litellm/proxy/client/cli/commands/users.py",
            "lineStart": 15,
            "lineEnd": 90,
            "evidenceUrl": "https://github.com/BerriAI/litellm/blob/de5dc5b238b6e972869d7dedc6ba3c4fb8d931fe/litellm/proxy/client/cli/commands/users.py#L15-L90",
            "checkedAt": "2026-10-25T03:10:40.622918Z",
            "sourceSha256": "08b0a66b5290ef5e0bf32537636673f94204f2e53486bb90c596d69cbb40d3a2",
            "sourceBlobSha": "a5ebefd1c4ab71c33696305ab560b22b08d1307f"
          },
          {
            "label": "Requests-backed user-management endpoints",
            "repository": "BerriAI/litellm",
            "commitSha": "de5dc5b238b6e972869d7dedc6ba3c4fb8d931fe",
            "sourcePath": "litellm/proxy/client/users.py",
            "lineStart": 9,
            "lineEnd": 74,
            "evidenceUrl": "https://github.com/BerriAI/litellm/blob/de5dc5b238b6e972869d7dedc6ba3c4fb8d931fe/litellm/proxy/client/users.py#L9-L74",
            "checkedAt": "2026-10-25T03:10:40.622918Z",
            "sourceSha256": "412bcef8e14045514ca8aa54499aabfbb7de00963b6d7aa0a6180591b6973185",
            "sourceBlobSha": "7b4f36dbc2fb96f140eb03613306587b23f59be9"
          }
        ]
      }
    },
    {
      "id": "bitcoin-core",
      "organization": "Bitcoin Core",
      "project": "Signet faucet helper",
      "repository": "bitcoin/bitcoin",
      "category": "Crypto & Web3",
      "summary": "The Signet helper uses a Requests session to obtain test-network coins from a faucet.",
      "useScope": "Test-network tooling",
      "evidenceType": "Code usage",
      "evidenceUrl": "https://github.com/bitcoin/bitcoin/blob/a773e1e33b349dc819b5a0edc1c7a4839dc73b48/contrib/signet/getcoins.py#L115-L119",
      "sourcePath": "contrib/signet/getcoins.py",
      "commitSha": "a773e1e33b349dc819b5a0edc1c7a4839dc73b48",
      "evidenceSnippet": "# for debugging: print(session.cookies.get_dict())\nsession = requests.Session()\n\nif args.captcha != '': # Retrieve a captcha\n    try:",
      "lineStart": 115,
      "lineEnd": 119,
      "checkedAt": "2026-10-25T01:26:47Z",
      "archived": false,
      "repositoryOwner": "bitcoin",
      "defaultBranch": "master",
      "sourceBlobSha": "b58ed04aabae741090aaad07011362b2d443a574",
      "sourceSha256": "88977cdb4b7dcaa025af9f7991c38022ba2a8f5d7c2df31fe3ffb7db54dd8715",
      "sector": "crypto",
      "avatarSource": "https://avatars.githubusercontent.com/u/528860?v=4",
      "avatarPath": "/static/observatory/organizations/bitcoin-core.png",
      "usageDetails": {
        "title": "Requesting test coins from Signet faucets",
        "explanation": "Bitcoin Core’s Signet getcoins utility uses a Requests session to interact with a faucet. The script obtains a destination address when necessary, downloads a CAPTCHA while retaining the session cookie, and asks the operator to solve it. It then submits the address and CAPTCHA answer as a form. The response is checked for faucet errors or successful delivery of test coins.",
        "flow": [
          "Choose a Signet address and fetch the faucet CAPTCHA through a session.",
          "Ask the operator to solve the CAPTCHA shown by the script.",
          "Submit the address and answer, then interpret the faucet response."
        ],
        "scopeNote": "This is a contributor utility for Signet test coins, not Bitcoin’s peer protocol, mining logic, or mainnet transaction processing.",
        "verification": "code",
        "sources": [
          {
            "label": "Signet faucet session and form submission",
            "repository": "bitcoin/bitcoin",
            "commitSha": "a773e1e33b349dc819b5a0edc1c7a4839dc73b48",
            "sourcePath": "contrib/signet/getcoins.py",
            "lineStart": 108,
            "lineEnd": 158,
            "evidenceUrl": "https://github.com/bitcoin/bitcoin/blob/a773e1e33b349dc819b5a0edc1c7a4839dc73b48/contrib/signet/getcoins.py#L108-L158",
            "checkedAt": "2026-10-25T01:26:47Z",
            "sourceSha256": "88977cdb4b7dcaa025af9f7991c38022ba2a8f5d7c2df31fe3ffb7db54dd8715",
            "sourceBlobSha": "b58ed04aabae741090aaad07011362b2d443a574"
          }
        ]
      }
    },
    {
      "id": "bitfinex-api",
      "organization": "Bitfinex",
      "project": "Bitfinex Python API client",
      "repository": "bitfinexcom/bitfinex-api-py",
      "category": "Crypto & Web3",
      "summary": "The official Python API client's REST middleware sends GET and POST calls using Requests.",
      "evidenceType": "Code usage",
      "evidenceUrl": "https://github.com/bitfinexcom/bitfinex-api-py/blob/122f6833828fd5665de32c14733d4ef852810aeb/bfxapi/rest/_interface/middleware.py#L44-L48",
      "sourcePath": "bfxapi/rest/_interface/middleware.py",
      "commitSha": "122f6833828fd5665de32c14733d4ef852810aeb",
      "evidenceSnippet": "        request = requests.get(\n            url=f\"{self.__host}/{endpoint}\",\n            params=params,\n            headers=headers,\n            timeout=Middleware.__TIMEOUT,",
      "lineStart": 44,
      "lineEnd": 48,
      "checkedAt": "2026-10-25T02:52:38Z",
      "archived": false,
      "sourceBlobSha": "92967c17d776c097194d413db83d76f4b6e88af1",
      "sector": "crypto",
      "useScope": "SDK",
      "avatarSource": "https://avatars.githubusercontent.com/u/12942297?v=4",
      "avatarPath": "/static/observatory/organizations/bitfinex-api.png",
      "ownershipJustification": "Its README calls this the official Bitfinex API implementation and links docs.bitfinex.com.",
      "defaultBranch": "master",
      "sourceSha256": "2dc0b7f1f78782a898b1c05d0981d47960641a8bb5f78e8964d07cd7bfea1138",
      "usageDetails": {
        "title": "Making synchronous Bitfinex REST API calls",
        "explanation": "The Bitfinex Python SDK’s REST middleware uses Requests for both GET and POST calls. It combines a configured host with the selected endpoint, passes query parameters, and adds authentication headers when API credentials are available. POST bodies use the SDK’s JSON encoder. Responses are decoded with its matching decoder, and exchange error responses are translated into the library’s error handling.",
        "flow": [
          "Build the endpoint URL and attach parameters and optional authentication headers.",
          "Send the GET or JSON POST call with the middleware timeout.",
          "Decode returned data and translate exchange errors for the SDK caller."
        ],
        "scopeNote": "This evidence concerns the synchronous REST middleware of the public SDK, not Bitfinex’s internal trading or matching systems.",
        "verification": "code",
        "sources": [
          {
            "label": "REST GET and POST middleware",
            "repository": "bitfinexcom/bitfinex-api-py",
            "commitSha": "122f6833828fd5665de32c14733d4ef852810aeb",
            "sourcePath": "bfxapi/rest/_interface/middleware.py",
            "lineStart": 26,
            "lineEnd": 87,
            "evidenceUrl": "https://github.com/bitfinexcom/bitfinex-api-py/blob/122f6833828fd5665de32c14733d4ef852810aeb/bfxapi/rest/_interface/middleware.py#L26-L87",
            "checkedAt": "2026-10-25T02:52:38Z",
            "sourceSha256": "2dc0b7f1f78782a898b1c05d0981d47960641a8bb5f78e8964d07cd7bfea1138",
            "sourceBlobSha": "92967c17d776c097194d413db83d76f4b6e88af1"
          }
        ]
      }
    },
    {
      "id": "blockstream",
      "organization": "Blockstream",
      "project": "Blockstream Satellite",
      "repository": "Blockstream/satellite",
      "category": "Crypto & Web3",
      "summary": "The Satellite CLI uses Requests to fetch currency conversion rates.",
      "useScope": "Application",
      "evidenceType": "Code usage",
      "evidenceUrl": "https://github.com/Blockstream/satellite/blob/a7f69be4740620d44d674953e486a736eb958da5/blocksatcli/currency.py#L38-L42",
      "sourcePath": "blocksatcli/currency.py",
      "commitSha": "a7f69be4740620d44d674953e486a736eb958da5",
      "evidenceSnippet": "        try:\n            res = requests.get(os.path.join(self.server, 'currency/rate'),\n                               params={'base': 'usd'})\n            if res.status_code != requests.codes.ok:\n                log_errors(logger, res)",
      "lineStart": 38,
      "lineEnd": 42,
      "checkedAt": "2026-10-25T01:26:47Z",
      "archived": false,
      "repositoryOwner": "Blockstream",
      "defaultBranch": "master",
      "sourceBlobSha": "404bd19739eaee9ad543f254a556fe3c2d84fe2d",
      "sourceSha256": "634c9134b3fbf25c6de46c1e2510773a5b8dd4b57f970f6c54b8c63d1adb27f5",
      "sector": "crypto",
      "avatarSource": "https://avatars.githubusercontent.com/u/7424983?v=4",
      "avatarPath": "/static/observatory/organizations/blockstream.jpg",
      "usageDetails": {
        "title": "Fetching conversion rates for Satellite tools",
        "explanation": "The Blockstream Satellite command line client uses Requests to fetch a USD conversion rate from its configured server’s currency/rate endpoint. It validates the HTTP response and reads the milli-satoshi rate from the JSON payload. A short cache avoids fetching the same rate repeatedly, while local conversion methods use it to translate between dollars, satoshis, and milli-satoshis for the tool.",
        "flow": [
          "Check whether the locally cached conversion rate is still usable.",
          "Fetch and validate the server’s current USD to milli-satoshi rate.",
          "Use the cached rate in the command line client’s currency conversions."
        ],
        "scopeNote": "The verified component handles currency conversion in Satellite CLI tooling; it does not establish Requests as the satellite broadcast transport.",
        "verification": "code",
        "sources": [
          {
            "label": "Currency rate retrieval and conversions",
            "repository": "Blockstream/satellite",
            "commitSha": "a7f69be4740620d44d674953e486a736eb958da5",
            "sourcePath": "blocksatcli/currency.py",
            "lineStart": 24,
            "lineEnd": 80,
            "evidenceUrl": "https://github.com/Blockstream/satellite/blob/a7f69be4740620d44d674953e486a736eb958da5/blocksatcli/currency.py#L24-L80",
            "checkedAt": "2026-10-25T01:26:47Z",
            "sourceSha256": "634c9134b3fbf25c6de46c1e2510773a5b8dd4b57f970f6c54b8c63d1adb27f5",
            "sourceBlobSha": "404bd19739eaee9ad543f254a556fe3c2d84fe2d"
          }
        ]
      }
    },
    {
      "id": "canonical-snapcraft",
      "organization": "Canonical",
      "project": "Snapcraft",
      "repository": "canonical/snapcraft",
      "category": "Developer tools",
      "sector": "technology",
      "summary": "Canonical's Snapcraft package-building tool declares Requests as a runtime dependency.",
      "useScope": "Developer tooling",
      "evidenceType": "Direct dependency",
      "evidenceUrl": "https://github.com/canonical/snapcraft/blob/53cc17615058202e51ce7a5d378358b30ee9e98b/pyproject.toml#L44-L44",
      "sourcePath": "pyproject.toml",
      "commitSha": "53cc17615058202e51ce7a5d378358b30ee9e98b",
      "evidenceSnippet": "  \"requests>=2.32.4\",",
      "lineStart": 44,
      "lineEnd": 44,
      "checkedAt": "2026-10-25T02:52:31.254Z",
      "archived": false,
      "sourceSha256": "87f658a4db60f2fe110a51a4f55091d8f3a569478b3cdcf66e772faa5149ab7d",
      "sourceBlobSha": "fb5e81598b3e1bdad6833c0d0bc2439d9795e24c",
      "avatarSource": "https://avatars.githubusercontent.com/u/53057619?v=4",
      "repositoryOwner": "canonical",
      "defaultBranch": "main",
      "avatarPath": "/static/observatory/organizations/canonical-snapcraft.png",
      "usageDetails": {
        "title": "Fetching remote icons for snap packages",
        "explanation": "Canonical's Snapcraft uses Requests when a package's icon is supplied as an HTTP or HTTPS URL. During asset preparation, it retrieves the remote image and places the returned bytes into the snap's icon asset. The mediated asset path also checks the HTTP response before returning the content and destination. Local icon files take a different path without this download.",
        "flow": [
          "Read the configured icon location while preparing the snap assets.",
          "Download remote icon bytes with Requests and inspect the response.",
          "Return or write the image at the package icon destination."
        ],
        "scopeNote": "The shown usage concerns remote icon assets during packaging, not all Snapcraft operations or every application built as a snap.",
        "verification": "code",
        "sources": [
          {
            "label": "Remote icon asset preparation",
            "repository": "canonical/snapcraft",
            "commitSha": "53cc17615058202e51ce7a5d378358b30ee9e98b",
            "sourcePath": "snapcraft/parts/setup_assets.py",
            "lineStart": 347,
            "lineEnd": 360,
            "evidenceUrl": "https://github.com/canonical/snapcraft/blob/53cc17615058202e51ce7a5d378358b30ee9e98b/snapcraft/parts/setup_assets.py#L347-L360",
            "checkedAt": "2026-10-25T03:07:46.325Z",
            "sourceSha256": "7cdc0404ff61fb1c0b419fcf30d75163057d93af0c1a0109d85d41334cab4054",
            "sourceBlobSha": "d9eb5ebaba900545157afdcae8b505f2cb89188f"
          }
        ]
      }
    },
    {
      "id": "ccxt-python",
      "organization": "CCXT",
      "project": "Python exchange client",
      "repository": "ccxt/ccxt",
      "category": "Crypto & Web3",
      "summary": "CCXT's Python exchange base imports Requests' Session for its HTTP transport.",
      "evidenceType": "Code usage",
      "evidenceUrl": "https://github.com/ccxt/ccxt/blob/60e0a453528b2ba64840baeaf3da0d3045e050fe/python/ccxt/base/exchange.py#L91-L91",
      "sourcePath": "python/ccxt/base/exchange.py",
      "commitSha": "60e0a453528b2ba64840baeaf3da0d3045e050fe",
      "evidenceSnippet": "from requests import Session",
      "lineStart": 91,
      "lineEnd": 91,
      "checkedAt": "2026-10-25T02:52:38Z",
      "archived": false,
      "sourceBlobSha": "185bc9481a76df6b76d3a01efb79d0aff2a7c5be",
      "sector": "crypto",
      "useScope": "Library",
      "avatarSource": "https://avatars.githubusercontent.com/u/31901609?v=4",
      "avatarPath": "/static/observatory/organizations/ccxt-python.png",
      "ownershipJustification": "The canonical ccxt/ccxt repository identifies this trading library in its README and links docs.ccxt.com. This does not imply adoption by every supported exchange.",
      "defaultBranch": "master",
      "sourceSha256": "5186161425a22bb81678f1af33e75ba3e2d5c7f726cd5f65a4d1068a754d0b6f",
      "usageDetails": {
        "title": "Transporting synchronous exchange API calls in CCXT",
        "explanation": "CCXT’s shared synchronous Python exchange implementation sends HTTP requests through a Requests session. Exchange-specific code supplies the URL, method, headers, and body; the transport applies timeout, proxy, and TLS settings and can include uploaded files. It decodes response content and JSON, checks HTTP status, and translates timeouts, connection failures, and other HTTP problems into CCXT’s own exceptions.",
        "flow": [
          "Receive the exchange URL, method, headers, and body from client code.",
          "Send the request with configured networking options through the shared session.",
          "Decode the response and map network failures into CCXT exceptions."
        ],
        "scopeNote": "This covers CCXT’s synchronous Python client transport; supported exchanges are API targets, not organizations shown running CCXT or Requests.",
        "verification": "code",
        "sources": [
          {
            "label": "Requests session import",
            "repository": "ccxt/ccxt",
            "commitSha": "60e0a453528b2ba64840baeaf3da0d3045e050fe",
            "sourcePath": "python/ccxt/base/exchange.py",
            "lineStart": 89,
            "lineEnd": 93,
            "evidenceUrl": "https://github.com/ccxt/ccxt/blob/60e0a453528b2ba64840baeaf3da0d3045e050fe/python/ccxt/base/exchange.py#L89-L93",
            "checkedAt": "2026-10-25T02:52:38Z",
            "sourceSha256": "5186161425a22bb81678f1af33e75ba3e2d5c7f726cd5f65a4d1068a754d0b6f",
            "sourceBlobSha": "185bc9481a76df6b76d3a01efb79d0aff2a7c5be"
          },
          {
            "label": "Shared HTTP dispatch and error mapping",
            "repository": "ccxt/ccxt",
            "commitSha": "60e0a453528b2ba64840baeaf3da0d3045e050fe",
            "sourcePath": "python/ccxt/base/exchange.py",
            "lineStart": 598,
            "lineEnd": 661,
            "evidenceUrl": "https://github.com/ccxt/ccxt/blob/60e0a453528b2ba64840baeaf3da0d3045e050fe/python/ccxt/base/exchange.py#L598-L661",
            "checkedAt": "2026-10-25T02:52:38Z",
            "sourceSha256": "5186161425a22bb81678f1af33e75ba3e2d5c7f726cd5f65a4d1068a754d0b6f",
            "sourceBlobSha": "185bc9481a76df6b76d3a01efb79d0aff2a7c5be"
          }
        ]
      }
    },
    {
      "id": "chainlink",
      "organization": "Chainlink",
      "project": "Blockchain RPC Exporter",
      "repository": "smartcontractkit/Blockchain-RPC-Exporter",
      "category": "Crypto & Web3",
      "summary": "The Blockchain RPC Exporter creates a Requests session for HTTPS collection.",
      "useScope": "Monitoring tooling",
      "evidenceType": "Code usage",
      "evidenceUrl": "https://github.com/smartcontractkit/Blockchain-RPC-Exporter/blob/9ae2f6d7f9d259fa9e4cfcaba784fedaee1f8b17/src/interfaces.py#L23-L27",
      "sourcePath": "src/interfaces.py",
      "commitSha": "9ae2f6d7f9d259fa9e4cfcaba784fedaee1f8b17",
      "evidenceSnippet": "        self.response_timeout = response_timeout\n        self.session = requests.Session()\n        self._logger = logger\n        self._logger_metadata = {\n            'component': 'HttpsCollector',",
      "lineStart": 23,
      "lineEnd": 27,
      "checkedAt": "2026-10-25T01:26:47Z",
      "archived": false,
      "repositoryOwner": "smartcontractkit",
      "defaultBranch": "main",
      "sourceBlobSha": "1ee63c279330b8a384f8b62581e063546a77c619",
      "sourceSha256": "f70877ec0760d00364e336dcfc8758e49ac9e5f6cb3d1c42a5d40bd9bc292a6c",
      "sector": "crypto",
      "avatarSource": "https://avatars.githubusercontent.com/u/25111032?v=4",
      "avatarPath": "/static/observatory/organizations/chainlink.png",
      "usageDetails": {
        "title": "Monitoring blockchain HTTP and RPC endpoints",
        "explanation": "The Blockchain RPC Exporter’s HTTPS interface uses a Requests session to query a configured endpoint with GET or POST. It applies separate connection and response timeouts and measures the duration of successful calls. Additional methods validate REST or JSON-RPC response content and can cache results. This allows the monitoring code to inspect endpoint responses and record the latest query latency.",
        "flow": [
          "Query the configured HTTP endpoint with GET parameters or POST JSON.",
          "Measure successful response latency and check the returned HTTP status.",
          "Validate REST or JSON-RPC content and optionally reuse cached results."
        ],
        "scopeNote": "The evidence is endpoint monitoring software in SmartContractKit’s repository, not proof about every Chainlink oracle or protocol component.",
        "verification": "code",
        "sources": [
          {
            "label": "HTTPS transport and response validation",
            "repository": "smartcontractkit/Blockchain-RPC-Exporter",
            "commitSha": "9ae2f6d7f9d259fa9e4cfcaba784fedaee1f8b17",
            "sourcePath": "src/interfaces.py",
            "lineStart": 17,
            "lineEnd": 126,
            "evidenceUrl": "https://github.com/smartcontractkit/Blockchain-RPC-Exporter/blob/9ae2f6d7f9d259fa9e4cfcaba784fedaee1f8b17/src/interfaces.py#L17-L126",
            "checkedAt": "2026-10-25T01:26:47Z",
            "sourceSha256": "f70877ec0760d00364e336dcfc8758e49ac9e5f6cb3d1c42a5d40bd9bc292a6c",
            "sourceBlobSha": "1ee63c279330b8a384f8b62581e063546a77c619"
          }
        ]
      }
    },
    {
      "id": "chainstack-subgraphs",
      "organization": "Chainstack",
      "project": "Uniswap V2 subgraph tutorial",
      "repository": "chainstacklabs/uniswap-v2-subgraph-queries",
      "category": "Crypto & Web3",
      "summary": "Chainstack's example uses Requests to submit GraphQL queries to a Uniswap V2 subgraph.",
      "evidenceType": "Code usage",
      "evidenceUrl": "https://github.com/chainstacklabs/uniswap-v2-subgraph-queries/blob/beeb00dd63aa9529c23e7b368e9c54cdb3c11818/main.py#L39-L39",
      "sourcePath": "main.py",
      "commitSha": "beeb00dd63aa9529c23e7b368e9c54cdb3c11818",
      "evidenceSnippet": "            query_result = requests.post(GRAPHQL_ENDPOINT, json={'query': query}, timeout=40)",
      "lineStart": 39,
      "lineEnd": 39,
      "checkedAt": "2026-10-25T02:52:38Z",
      "archived": false,
      "sourceBlobSha": "a699e56d2dc4c533f4d526fe965a527056a5951f",
      "sector": "crypto",
      "useScope": "Official code example",
      "avatarSource": "https://avatars.githubusercontent.com/u/124540248?v=4",
      "avatarPath": "/static/observatory/organizations/chainstack-subgraphs.png",
      "ownershipJustification": "The ChainstackLabs-owned non-fork README links its matching tutorial on docs.chainstack.com. Attribution is to Chainstack, not Uniswap.",
      "defaultBranch": "main",
      "sourceSha256": "bf6a275938c16baba76aec3fd41de986d8dcf42a9c4b59e28066ee1e8f101899",
      "usageDetails": {
        "title": "Running saved GraphQL queries against subgraphs",
        "explanation": "Chainstack Labs’ Uniswap V2 subgraph example uses Requests to execute GraphQL queries stored in local files. The script reads its target subgraph URL from configuration, loads each query, and posts it as a JSON query field with a timeout. It measures the call duration and saves the returned JSON to an output file, making the tutorial’s queries repeatable and inspectable.",
        "flow": [
          "Read the configured subgraph URL and load the saved GraphQL queries.",
          "Post each query as JSON and measure the request duration.",
          "Save returned data to JSON files for inspection and reuse."
        ],
        "scopeNote": "This is a Chainstack-authored querying example for a Uniswap subgraph, not evidence about Uniswap’s production infrastructure or smart contracts.",
        "verification": "code",
        "sources": [
          {
            "label": "Configured subgraph queries and JSON output",
            "repository": "chainstacklabs/uniswap-v2-subgraph-queries",
            "commitSha": "beeb00dd63aa9529c23e7b368e9c54cdb3c11818",
            "sourcePath": "main.py",
            "lineStart": 13,
            "lineEnd": 47,
            "evidenceUrl": "https://github.com/chainstacklabs/uniswap-v2-subgraph-queries/blob/beeb00dd63aa9529c23e7b368e9c54cdb3c11818/main.py#L13-L47",
            "checkedAt": "2026-10-25T02:52:38Z",
            "sourceSha256": "bf6a275938c16baba76aec3fd41de986d8dcf42a9c4b59e28066ee1e8f101899",
            "sourceBlobSha": "a699e56d2dc4c533f4d526fe965a527056a5951f"
          }
        ]
      }
    },
    {
      "id": "checkout-python",
      "organization": "Checkout.com",
      "project": "Checkout Python SDK",
      "repository": "checkout/checkout-sdk-python",
      "category": "Payments & commerce",
      "summary": "Checkout.com's Python SDK declares Requests as an installation dependency.",
      "evidenceType": "Direct dependency",
      "evidenceUrl": "https://github.com/checkout/checkout-sdk-python/blob/bc8380bc564d4cb97c9055297fb1f3d12a120b8e/setup.py#L23",
      "sourcePath": "setup.py",
      "commitSha": "bc8380bc564d4cb97c9055297fb1f3d12a120b8e",
      "evidenceSnippet": "        'requests >= 2.27.1',",
      "lineStart": 23,
      "lineEnd": 23,
      "checkedAt": "2026-10-25T02:51:17Z",
      "archived": false,
      "sourceBlobSha": "2d671bd6192e50fc3b19de5c78072d96d698271e",
      "sector": "technology",
      "useScope": "SDK",
      "avatarSource": "https://avatars.githubusercontent.com/u/12715571?v=4",
      "sourceSha256": "dbd545260ba52fb45cf4f77e54d0766e148b5296da12b48eb89177045a03d1f0",
      "avatarPath": "/static/observatory/organizations/checkout-python.png",
      "usageDetails": {
        "title": "Sending authenticated Checkout API operations and uploads",
        "explanation": "Checkout.com's default HTTP-client builder returns a Requests session. The API client prepares the endpoint, authorization and content headers, optional idempotency key, and JSON data or uploaded file. It delegates the request to that configured HTTP client, checks for HTTP errors, and wraps the response content together with metadata for the caller.",
        "flow": [
          "The default HTTP-client builder provides the SDK a Requests session.",
          "The API client prepares authorization, payload, and any idempotency key.",
          "The configured client sends the call and the SDK wraps results."
        ],
        "scopeNote": "This describes Checkout.com's default Python HTTP transport and API wrapper. Applications may configure a different client; no live transaction is being observed.",
        "verification": "code",
        "sources": [
          {
            "label": "Default Requests session builder",
            "repository": "checkout/checkout-sdk-python",
            "commitSha": "bc8380bc564d4cb97c9055297fb1f3d12a120b8e",
            "sourcePath": "checkout_sdk/default_http_client.py",
            "lineStart": 8,
            "lineEnd": 14,
            "evidenceUrl": "https://github.com/checkout/checkout-sdk-python/blob/bc8380bc564d4cb97c9055297fb1f3d12a120b8e/checkout_sdk/default_http_client.py#L8-L14",
            "checkedAt": "2026-10-25T03:10:24Z",
            "sourceSha256": "11dd7932e1ab3d7b511072d9e8239e032c685a5f291ab56b48b097485bf07696",
            "sourceBlobSha": "2f9f9d59c054780a9b18cbaf943aaae5e0f10f3a"
          },
          {
            "label": "Authenticated API dispatch and response handling",
            "repository": "checkout/checkout-sdk-python",
            "commitSha": "bc8380bc564d4cb97c9055297fb1f3d12a120b8e",
            "sourcePath": "checkout_sdk/api_client.py",
            "lineStart": 79,
            "lineEnd": 134,
            "evidenceUrl": "https://github.com/checkout/checkout-sdk-python/blob/bc8380bc564d4cb97c9055297fb1f3d12a120b8e/checkout_sdk/api_client.py#L79-L134",
            "checkedAt": "2026-10-25T03:10:24Z",
            "sourceSha256": "36db04916bad67c3cfaef8d39b8c32ba459d9340f9a27d79dd5c2d2e9551673e",
            "sourceBlobSha": "64e605dda72bc642901772f76ee7b8de41386808"
          }
        ]
      }
    },
    {
      "id": "chia-climate",
      "organization": "Chia Network",
      "project": "Climate Token Driver",
      "repository": "Chia-Network/climate-token-driver",
      "category": "Crypto & Web3",
      "summary": "The climate token driver uses Requests to retrieve paginated climate registry records and organization metadata from a configured Climate Warehouse API.",
      "evidenceType": "Code usage",
      "evidenceUrl": "https://github.com/Chia-Network/climate-token-driver/blob/a2ccb65e7935ab2f2370b5a758c61501a6608376/app/crud/chia.py#L63-L63",
      "sourcePath": "app/crud/chia.py",
      "commitSha": "a2ccb65e7935ab2f2370b5a758c61501a6608376",
      "evidenceSnippet": "                response = requests.get(url, headers=self._headers())",
      "lineStart": 63,
      "lineEnd": 63,
      "checkedAt": "2026-10-25T02:52:38Z",
      "archived": false,
      "sourceBlobSha": "f3857e308f8743e2fe94c0e3377210ffa98c2dcc",
      "sector": "crypto",
      "useScope": "Application",
      "avatarSource": "https://avatars.githubusercontent.com/u/34047804?v=4",
      "avatarPath": "/static/observatory/organizations/chia-climate.png",
      "ownershipJustification": "The non-fork repository is owned by Chia-Network and describes carbon-tokenization functionality.",
      "defaultBranch": "develop",
      "sourceSha256": "ae38c2761c960fd0cd5774814ac3afdc7ce712afebfcf979bbc8f91d8c68a007",
      "usageDetails": {
        "title": "Retrieving climate registry records and metadata",
        "explanation": "The climate token driver’s ClimateWareHouseCrud component uses Requests to retrieve registry data from a configured Climate Warehouse API. It sends an API key header when available, follows pagination for units and projects, and combines the returned pages. Separate calls retrieve organizations and their metadata. These HTTP reads supply climate registry information to the application, including filters for marketplace-linked records.",
        "flow": [
          "Build climate registry URLs and add the API key when configured.",
          "Fetch units and projects page by page with marketplace filters.",
          "Return collected records and retrieve organization details through dedicated endpoints."
        ],
        "scopeNote": "This evidence concerns the application’s climate registry integration, not Requests acting as the Chia node RPC or consensus transport.",
        "verification": "code",
        "sources": [
          {
            "label": "Authenticated paginated registry retrieval",
            "repository": "Chia-Network/climate-token-driver",
            "commitSha": "a2ccb65e7935ab2f2370b5a758c61501a6608376",
            "sourcePath": "app/crud/chia.py",
            "lineStart": 25,
            "lineEnd": 96,
            "evidenceUrl": "https://github.com/Chia-Network/climate-token-driver/blob/a2ccb65e7935ab2f2370b5a758c61501a6608376/app/crud/chia.py#L25-L96",
            "checkedAt": "2026-10-25T02:52:38Z",
            "sourceSha256": "ae38c2761c960fd0cd5774814ac3afdc7ce712afebfcf979bbc8f91d8c68a007",
            "sourceBlobSha": "f3857e308f8743e2fe94c0e3377210ffa98c2dcc"
          },
          {
            "label": "Registry record endpoints",
            "repository": "Chia-Network/climate-token-driver",
            "commitSha": "a2ccb65e7935ab2f2370b5a758c61501a6608376",
            "sourcePath": "app/crud/chia.py",
            "lineStart": 98,
            "lineEnd": 148,
            "evidenceUrl": "https://github.com/Chia-Network/climate-token-driver/blob/a2ccb65e7935ab2f2370b5a758c61501a6608376/app/crud/chia.py#L98-L148",
            "checkedAt": "2026-10-25T02:52:38Z",
            "sourceSha256": "ae38c2761c960fd0cd5774814ac3afdc7ce712afebfcf979bbc8f91d8c68a007",
            "sourceBlobSha": "f3857e308f8743e2fe94c0e3377210ffa98c2dcc"
          }
        ]
      }
    },
    {
      "id": "clearml-sdk",
      "organization": "ClearML",
      "project": "ClearML Python SDK",
      "repository": "clearml/clearml",
      "category": "AI & data",
      "sector": "technology",
      "summary": "ClearML lists Requests in the requirements installed by its Python package.",
      "useScope": "SDK",
      "evidenceType": "Direct dependency",
      "sourcePath": "requirements.txt",
      "commitSha": "15238c95cc7c39f74e6cc65dec431a61af2dd842",
      "lineStart": 17,
      "lineEnd": 18,
      "checkedAt": "2026-10-25T02:51:47.373Z",
      "archived": false,
      "sourceBlobSha": "ec5b596de657613acb2d2836126b4e8bc809c43b",
      "avatarSource": "https://avatars.githubusercontent.com/u/38647316?v=4",
      "sourceSha256": "f4b3ebb51d3991a82f835224f42a7f5bfabf198e1497ab4ea052ded929700b2d",
      "evidenceSnippet": "requests>=2.20.0 ; python_version < '3.8'\nrequests>=2.32.0 ; python_version >= '3.8'",
      "evidenceUrl": "https://github.com/clearml/clearml/blob/15238c95cc7c39f74e6cc65dec431a61af2dd842/requirements.txt#L17-L18",
      "repositoryOwner": "clearml",
      "defaultBranch": "master",
      "avatarPath": "/static/observatory/organizations/clearml-sdk.png",
      "usageDetails": {
        "title": "Sending versioned operations to the ClearML API",
        "explanation": "ClearML's session layer constructs an API URL from the configured server, service, action and optional API version. It sends the data through a Requests-derived session, adding worker and client headers and selecting a timeout. The code also handles network failures and can refresh an authorization token once after an unauthorized response before retrying the operation.",
        "flow": [
          "Build the service-action URL and add worker and client headers.",
          "Send the payload through the configured Requests-derived HTTP session.",
          "Handle network failures or refresh an expired authorization token when appropriate."
        ],
        "scopeNote": "The inspected path is ClearML's online backend API transport; offline mode explicitly skips the request and returns without sending.",
        "verification": "code",
        "sources": [
          {
            "label": "Requests-derived session and retry configuration",
            "repository": "clearml/clearml",
            "commitSha": "15238c95cc7c39f74e6cc65dec431a61af2dd842",
            "sourcePath": "clearml/backend_api/utils.py",
            "lineStart": 89,
            "lineEnd": 180,
            "evidenceUrl": "https://github.com/clearml/clearml/blob/15238c95cc7c39f74e6cc65dec431a61af2dd842/clearml/backend_api/utils.py#L89-L180",
            "checkedAt": "2026-10-25T03:10:40.622918Z",
            "sourceSha256": "c3d7dcb2a0a14cec007b4e00b7c42e77fcfc05a73a0e08e27cffaefbd06dbf3f",
            "sourceBlobSha": "c2f23268ef04a5b8d3dabfffd46839c9fa7be482"
          },
          {
            "label": "Versioned API request and response handling",
            "repository": "clearml/clearml",
            "commitSha": "15238c95cc7c39f74e6cc65dec431a61af2dd842",
            "sourcePath": "clearml/backend_api/session/session.py",
            "lineStart": 390,
            "lineEnd": 500,
            "evidenceUrl": "https://github.com/clearml/clearml/blob/15238c95cc7c39f74e6cc65dec431a61af2dd842/clearml/backend_api/session/session.py#L390-L500",
            "checkedAt": "2026-10-25T03:10:40.622918Z",
            "sourceSha256": "e8ed4b105537a048d5b2e1602912c3956765f4f79216db13e86c321346e813cd",
            "sourceBlobSha": "ec0ae6cf92bc2ae78197563994ece417cf8fd560"
          }
        ]
      }
    },
    {
      "id": "cohere-sdk",
      "organization": "Cohere",
      "project": "Cohere Python SDK",
      "repository": "cohere-ai/cohere-python",
      "category": "AI & data",
      "sector": "technology",
      "summary": "Cohere's Python SDK declares Requests in its package dependencies.",
      "useScope": "SDK",
      "evidenceType": "Direct dependency",
      "sourcePath": "pyproject.toml",
      "commitSha": "e6595a6d8f43f858327ef2dd5ddcccd96db4749b",
      "lineStart": 48,
      "lineEnd": 48,
      "checkedAt": "2026-10-25T02:51:47.374Z",
      "archived": false,
      "sourceBlobSha": "03cf976e3836f34bfcb634ef452900d71f8e3af9",
      "avatarSource": "https://avatars.githubusercontent.com/u/54850923?v=4",
      "sourceSha256": "3abda8181c2125c00cba256469d5dc37d6d86fe8ce1cb62c2b4e14ba6f8bd05d",
      "evidenceSnippet": "requests = \"^2.0.0\"",
      "evidenceUrl": "https://github.com/cohere-ai/cohere-python/blob/e6595a6d8f43f858327ef2dd5ddcccd96db4749b/pyproject.toml#L48-L48",
      "repositoryOwner": "cohere-ai",
      "defaultBranch": "main",
      "avatarPath": "/static/observatory/organizations/cohere-sdk.png",
      "usageDetails": {
        "title": "Downloading tokenizers for local text encoding",
        "explanation": "Cohere's Python SDK uses Requests to obtain the tokenizer configuration needed by its local tokenization helpers. It first checks a model-specific cache and asks the model metadata for the tokenizer URL when needed. After downloading that configuration, it constructs and caches a tokenizer object that local encode and decode operations can reuse.",
        "flow": [
          "Look for the requested model's tokenizer in the SDK cache.",
          "Obtain its configuration URL and download the configuration with Requests.",
          "Cache the tokenizer and use it for local encoding or decoding."
        ],
        "scopeNote": "This describes the local-tokenizer helper, not a blanket claim that Cohere's generated API clients use Requests for every endpoint.",
        "verification": "code",
        "sources": [
          {
            "label": "Tokenizer discovery, download, cache and local use",
            "repository": "cohere-ai/cohere-python",
            "commitSha": "e6595a6d8f43f858327ef2dd5ddcccd96db4749b",
            "sourcePath": "src/cohere/manually_maintained/tokenizers.py",
            "lineStart": 15,
            "lineEnd": 52,
            "evidenceUrl": "https://github.com/cohere-ai/cohere-python/blob/e6595a6d8f43f858327ef2dd5ddcccd96db4749b/src/cohere/manually_maintained/tokenizers.py#L15-L52",
            "checkedAt": "2026-10-25T03:10:40.622918Z",
            "sourceSha256": "207a9f32d8f3192dc379149c8bc54b40a188b193fbf946238aae7e146406efb6",
            "sourceBlobSha": "c2681c62fca603a67b9b527636925b1688f4f7e0"
          }
        ]
      }
    },
    {
      "id": "comet-opik-optimizer",
      "organization": "Comet",
      "project": "Opik Optimizer ColBERT client",
      "repository": "comet-ml/opik",
      "category": "AI & data",
      "sector": "technology",
      "summary": "Opik Optimizer creates a Requests session for its ColBERT retrieval client.",
      "useScope": "Retrieval integration",
      "evidenceType": "Code usage",
      "sourcePath": "sdks/opik_optimizer/src/opik_optimizer/utils/tools/colbert.py",
      "commitSha": "763a2ec2568f71f7957aa33e0a9b10cb2b2d3ba2",
      "lineStart": 26,
      "lineEnd": 26,
      "checkedAt": "2026-10-25T02:51:47.374Z",
      "archived": false,
      "sourceBlobSha": "d2e39bbb6b7eb8514c7c941dbc070d42c6cae5c3",
      "avatarSource": "https://avatars.githubusercontent.com/u/31487821?v=4",
      "sourceSha256": "a92af3294506c3b3fdda62f2e0e7ee839a4119e4ec1c12cc25795748949f2aea",
      "evidenceSnippet": "    session = requests.Session()",
      "evidenceUrl": "https://github.com/comet-ml/opik/blob/763a2ec2568f71f7957aa33e0a9b10cb2b2d3ba2/sdks/opik_optimizer/src/opik_optimizer/utils/tools/colbert.py#L26-L26",
      "repositoryOwner": "comet-ml",
      "defaultBranch": "main",
      "avatarPath": "/static/observatory/organizations/comet-opik-optimizer.png",
      "usageDetails": {
        "title": "Retrieving relevant passages from a ColBERT server",
        "explanation": "Opik Optimizer's ColBERT utility creates a Requests session with retry adapters and submits a search query plus the desired result count to a retrieval server. It reads the JSON response, checks for server errors and extracts the top matching passages. Those results are normalized into the text fields expected by the surrounding retrieval integration.",
        "flow": [
          "Create a retry-enabled Requests session for the configured retrieval server.",
          "Send the search query and desired result count to ColBERT.",
          "Validate the JSON response and return the matching passage text."
        ],
        "scopeNote": "This is the ColBERT retrieval integration within Opik Optimizer, not evidence that every Comet feature or model operation uses Requests.",
        "verification": "code",
        "sources": [
          {
            "label": "Requests session with retry adapters",
            "repository": "comet-ml/opik",
            "commitSha": "763a2ec2568f71f7957aa33e0a9b10cb2b2d3ba2",
            "sourcePath": "sdks/opik_optimizer/src/opik_optimizer/utils/tools/colbert.py",
            "lineStart": 16,
            "lineEnd": 39,
            "evidenceUrl": "https://github.com/comet-ml/opik/blob/763a2ec2568f71f7957aa33e0a9b10cb2b2d3ba2/sdks/opik_optimizer/src/opik_optimizer/utils/tools/colbert.py#L16-L39",
            "checkedAt": "2026-10-25T03:10:40.622918Z",
            "sourceSha256": "a92af3294506c3b3fdda62f2e0e7ee839a4119e4ec1c12cc25795748949f2aea",
            "sourceBlobSha": "d2e39bbb6b7eb8514c7c941dbc070d42c6cae5c3"
          },
          {
            "label": "ColBERT search and result normalization",
            "repository": "comet-ml/opik",
            "commitSha": "763a2ec2568f71f7957aa33e0a9b10cb2b2d3ba2",
            "sourcePath": "sdks/opik_optimizer/src/opik_optimizer/utils/tools/colbert.py",
            "lineStart": 72,
            "lineEnd": 127,
            "evidenceUrl": "https://github.com/comet-ml/opik/blob/763a2ec2568f71f7957aa33e0a9b10cb2b2d3ba2/sdks/opik_optimizer/src/opik_optimizer/utils/tools/colbert.py#L72-L127",
            "checkedAt": "2026-10-25T03:10:40.622918Z",
            "sourceSha256": "a92af3294506c3b3fdda62f2e0e7ee839a4119e4ec1c12cc25795748949f2aea",
            "sourceBlobSha": "d2e39bbb6b7eb8514c7c941dbc070d42c6cae5c3"
          }
        ]
      }
    },
    {
      "id": "conda-package-manager",
      "organization": "Conda",
      "project": "Conda",
      "repository": "conda/conda",
      "category": "Developer tools",
      "sector": "technology",
      "summary": "The Conda package and environment manager declares Requests as a runtime dependency.",
      "useScope": "Application",
      "evidenceType": "Direct dependency",
      "evidenceUrl": "https://github.com/conda/conda/blob/e409a1d62bc6e4d34c45b1aeb5c18d1f137c7458/pyproject.toml#L43-L43",
      "sourcePath": "pyproject.toml",
      "commitSha": "e409a1d62bc6e4d34c45b1aeb5c18d1f137c7458",
      "evidenceSnippet": "  \"requests >=2.28.0,<3\",",
      "lineStart": 43,
      "lineEnd": 43,
      "checkedAt": "2026-10-25T02:52:37.944Z",
      "archived": false,
      "sourceSha256": "902263c971bbd891cb3d9d14d76d0078374954ef755a35a2b28a7f60f37a7d5c",
      "sourceBlobSha": "62534a56f660dac39d78f297bcf42ccb507132ca",
      "avatarSource": "https://avatars.githubusercontent.com/u/6392739?v=4",
      "repositoryOwner": "conda",
      "defaultBranch": "main",
      "avatarPath": "/static/observatory/organizations/conda-package-manager.png",
      "usageDetails": {
        "title": "Downloading package files through Conda sessions",
        "explanation": "Conda uses a Requests-based session for its regular HTTP download path. The downloader opens a temporary file, optionally sends a byte-range header to resume an incomplete download, and streams the server response with connection settings and timeouts. It checks HTTP errors before consuming the data. Some specialized adapters can download directly, so this is not the only possible transfer path.",
        "flow": [
          "Choose the download session and prepare a temporary destination file.",
          "Stream the HTTP response, adding a byte range when resuming.",
          "Check response status before processing the returned package-file data."
        ],
        "scopeNote": "This covers Conda HTTP downloads; specialized storage adapters may use another transfer mechanism, and cached installs need no network download.",
        "verification": "code",
        "sources": [
          {
            "label": "Streaming and resumable downloads",
            "repository": "conda/conda",
            "commitSha": "e409a1d62bc6e4d34c45b1aeb5c18d1f137c7458",
            "sourcePath": "conda/gateways/connection/download.py",
            "lineStart": 86,
            "lineEnd": 129,
            "evidenceUrl": "https://github.com/conda/conda/blob/e409a1d62bc6e4d34c45b1aeb5c18d1f137c7458/conda/gateways/connection/download.py#L86-L129",
            "checkedAt": "2026-10-25T03:07:47.383Z",
            "sourceSha256": "60a30f64937be279fadfacac36a2a83b52648b95eff3375c18f7ed256dda1b55",
            "sourceBlobSha": "3e6418a83c0ab6d7dff45f9dbe21a728d11323ee"
          },
          {
            "label": "Conda session implementation",
            "repository": "conda/conda",
            "commitSha": "e409a1d62bc6e4d34c45b1aeb5c18d1f137c7458",
            "sourcePath": "conda/gateways/connection/session.py",
            "lineStart": 272,
            "lineEnd": 285,
            "evidenceUrl": "https://github.com/conda/conda/blob/e409a1d62bc6e4d34c45b1aeb5c18d1f137c7458/conda/gateways/connection/session.py#L272-L285",
            "checkedAt": "2026-10-25T03:08:06.147Z",
            "sourceSha256": "d18c10a2f4a2bbd88177dff474c4d2a6e5e0902b00ff401db401b2026ad90474",
            "sourceBlobSha": "7c4705d2496b34d6ff4cca4e3d6bfe50abc85c74"
          }
        ]
      }
    },
    {
      "id": "consensys-ethjsonrpc",
      "organization": "Consensys",
      "project": "Legacy ethjsonrpc client",
      "repository": "Consensys/ethjsonrpc",
      "category": "Crypto & Web3",
      "summary": "Consensys' legacy Ethereum JSON-RPC client creates a Requests session for its transport.",
      "evidenceType": "Code usage",
      "evidenceUrl": "https://github.com/Consensys/ethjsonrpc/blob/fe525bdcd889924687ba1646fc46cef329410e22/ethjsonrpc/client.py#L35-L35",
      "sourcePath": "ethjsonrpc/client.py",
      "commitSha": "fe525bdcd889924687ba1646fc46cef329410e22",
      "evidenceSnippet": "        self.session = requests.Session()",
      "lineStart": 35,
      "lineEnd": 35,
      "checkedAt": "2026-10-25T02:52:38Z",
      "archived": false,
      "sourceBlobSha": "89a9edb0db9ca3510cf83398a121fb7c08967475",
      "sector": "crypto",
      "useScope": "Legacy SDK",
      "avatarSource": "https://avatars.githubusercontent.com/u/10818037?v=4",
      "avatarPath": "/static/observatory/organizations/consensys-ethjsonrpc.png",
      "ownershipJustification": "The non-fork repository is owned by Consensys. Its README documents a legacy Python client; this is not evidence of current Consensys production use.",
      "defaultBranch": "master",
      "sourceSha256": "edb2ec77f92fb27acc7cdb085e119dc6837f0cba3c5f6ba66de2a5034456fa81",
      "usageDetails": {
        "title": "Calling Ethereum nodes from a legacy client",
        "explanation": "Consensys’ legacy ethjsonrpc Python client uses a Requests session to send JSON-RPC calls to a configured Ethereum node host and port. Its shared call method packages the RPC method name, parameters, and request identifier as JSON, then posts the body over HTTP or HTTPS. It checks the response status and JSON structure before returning the result or raising a client exception.",
        "flow": [
          "Package the selected RPC method, parameters, and identifier as JSON.",
          "Post the body to the configured node host and port.",
          "Validate the response and return its result or raise an exception."
        ],
        "scopeNote": "This is legacy Consensys client code; it does not establish current company-wide use or Requests inside Ethereum’s consensus implementation.",
        "verification": "code",
        "sources": [
          {
            "label": "Legacy JSON-RPC transport",
            "repository": "Consensys/ethjsonrpc",
            "commitSha": "fe525bdcd889924687ba1646fc46cef329410e22",
            "sourcePath": "ethjsonrpc/client.py",
            "lineStart": 31,
            "lineEnd": 65,
            "evidenceUrl": "https://github.com/Consensys/ethjsonrpc/blob/fe525bdcd889924687ba1646fc46cef329410e22/ethjsonrpc/client.py#L31-L65",
            "checkedAt": "2026-10-25T02:52:38Z",
            "sourceSha256": "edb2ec77f92fb27acc7cdb085e119dc6837f0cba3c5f6ba66de2a5034456fa81",
            "sourceBlobSha": "89a9edb0db9ca3510cf83398a121fb7c08967475"
          }
        ]
      }
    },
    {
      "id": "dell-powerstore",
      "organization": "Dell",
      "project": "Python PowerStore",
      "repository": "dell/python-powerstore",
      "category": "Infrastructure & operations",
      "summary": "Dell's PowerStore Python client declares Requests as an installation dependency.",
      "evidenceType": "Direct dependency",
      "evidenceUrl": "https://github.com/dell/python-powerstore/blob/6fc5e03b8335bfd4697bc439b532d52378cc1655/setup.py#L16",
      "sourcePath": "setup.py",
      "commitSha": "6fc5e03b8335bfd4697bc439b532d52378cc1655",
      "evidenceSnippet": "        \"requests>=2.23.0\", ",
      "lineStart": 16,
      "lineEnd": 16,
      "checkedAt": "2026-10-25T02:51:17Z",
      "archived": false,
      "sourceBlobSha": "b400b1f5238ee90fd2754993560541a4714a8310",
      "sector": "technology",
      "useScope": "SDK",
      "avatarSource": "https://avatars.githubusercontent.com/u/20958494?v=4",
      "sourceSha256": "6485cfd7d5b5fce883a1238ab2714e7c857adf1250badd08cd7c9fbb5499523d",
      "avatarPath": "/static/observatory/organizations/dell-powerstore.jpg",
      "usageDetails": {
        "title": "Authenticating and calling PowerStore management endpoints",
        "explanation": "Dell's PowerStore client uses Requests both to establish a management session and to issue subsequent REST calls. Login collects the returned token and authentication cookie. Later requests attach those session details and send either JSON payloads, query parameters, or a plain request, using the configured certificate verification and timeout. This supplies the network layer beneath storage-management operations.",
        "flow": [
          "Requests calls the login endpoint and captures the returned session credentials.",
          "The client attaches session headers to a management API request.",
          "Requests sends the payload or query using configured connection options."
        ],
        "scopeNote": "The evidence covers the public PowerStore management client. It describes an administrative API workflow without identifying deployed storage systems or live operations.",
        "verification": "code",
        "sources": [
          {
            "label": "PowerStore login session",
            "repository": "dell/python-powerstore",
            "commitSha": "6fc5e03b8335bfd4697bc439b532d52378cc1655",
            "sourcePath": "PyPowerStore/client.py",
            "lineStart": 100,
            "lineEnd": 115,
            "evidenceUrl": "https://github.com/dell/python-powerstore/blob/6fc5e03b8335bfd4697bc439b532d52378cc1655/PyPowerStore/client.py#L100-L115",
            "checkedAt": "2026-10-25T03:10:24Z",
            "sourceSha256": "8328eca89200b3e559eb2173fe3fe15adf69393a31ec2325be5e1dd1a9235ff6",
            "sourceBlobSha": "100892a4ed980102745d6bd35f30ab58c29da855"
          },
          {
            "label": "Authenticated management calls",
            "repository": "dell/python-powerstore",
            "commitSha": "6fc5e03b8335bfd4697bc439b532d52378cc1655",
            "sourcePath": "PyPowerStore/client.py",
            "lineStart": 206,
            "lineEnd": 258,
            "evidenceUrl": "https://github.com/dell/python-powerstore/blob/6fc5e03b8335bfd4697bc439b532d52378cc1655/PyPowerStore/client.py#L206-L258",
            "checkedAt": "2026-10-25T03:10:24Z",
            "sourceSha256": "8328eca89200b3e559eb2173fe3fe15adf69393a31ec2325be5e1dd1a9235ff6",
            "sourceBlobSha": "100892a4ed980102745d6bd35f30ab58c29da855"
          }
        ]
      }
    },
    {
      "id": "docker-sdk",
      "organization": "Docker",
      "project": "Docker SDK for Python",
      "repository": "docker/docker-py",
      "category": "Developer tools",
      "summary": "Docker's Python SDK declares Requests as a runtime dependency.",
      "evidenceType": "Direct dependency",
      "evidenceUrl": "https://github.com/docker/docker-py/blob/56343ddf8f0c44281e151c2dad016c16cdb8393d/pyproject.toml#L33-L33",
      "sourcePath": "pyproject.toml",
      "commitSha": "56343ddf8f0c44281e151c2dad016c16cdb8393d",
      "evidenceSnippet": "    \"requests >= 2.26.0\",",
      "lineStart": 33,
      "lineEnd": 33,
      "checkedAt": "2026-10-25T01:27:26Z",
      "archived": false,
      "sourceSha256": "03cd086ed6e3b7cdc43bf111a05cfb50d63383147b1bbc338b74fea3e6d7d2c1",
      "sourceBlobSha": "525a9b81a80234bb49f555d18ca1c39023d4dcd0",
      "sector": "technology",
      "useScope": "SDK",
      "avatarSource": "https://avatars.githubusercontent.com/u/5429470?v=4",
      "avatarPath": "/static/observatory/organizations/docker-sdk.png",
      "usageDetails": {
        "title": "Calling the Docker Engine from Python",
        "explanation": "Docker's Python SDK builds its low-level Engine API client on Requests.Session. SDK helpers send HTTP GET, POST, PUT, and DELETE operations with configured timeouts, then convert response errors and decode results. Custom transport adapters allow the same client to reach a local Unix socket, Windows named pipe, SSH connection, or HTTP endpoint according to its configuration.",
        "flow": [
          "Configure the Docker Engine endpoint and its matching transport adapter.",
          "Send the API operation using Requests session methods with timeouts.",
          "Check HTTP status and decode the Engine response for callers."
        ],
        "scopeNote": "This is client-side Docker SDK transport, not the implementation of Docker Engine itself or evidence that every container runs Requests.",
        "verification": "code",
        "sources": [
          {
            "label": "Requests-based Engine client",
            "repository": "docker/docker-py",
            "commitSha": "56343ddf8f0c44281e151c2dad016c16cdb8393d",
            "sourcePath": "docker/api/client.py",
            "lineStart": 57,
            "lineEnd": 78,
            "evidenceUrl": "https://github.com/docker/docker-py/blob/56343ddf8f0c44281e151c2dad016c16cdb8393d/docker/api/client.py#L57-L78",
            "checkedAt": "2026-10-25T03:07:48.435Z",
            "sourceSha256": "1542d486504238d251a6fd668bb84eb8a56f3f7f2e3d15fbba2ee403a8bcb550",
            "sourceBlobSha": "394ceb1f56d31f0491d429e141c8c43d18f1aa88"
          },
          {
            "label": "HTTP operation helpers and responses",
            "repository": "docker/docker-py",
            "commitSha": "56343ddf8f0c44281e151c2dad016c16cdb8393d",
            "sourcePath": "docker/api/client.py",
            "lineStart": 234,
            "lineEnd": 284,
            "evidenceUrl": "https://github.com/docker/docker-py/blob/56343ddf8f0c44281e151c2dad016c16cdb8393d/docker/api/client.py#L234-L284",
            "checkedAt": "2026-10-25T03:07:48.435Z",
            "sourceSha256": "1542d486504238d251a6fd668bb84eb8a56f3f7f2e3d15fbba2ee403a8bcb550",
            "sourceBlobSha": "394ceb1f56d31f0491d429e141c8c43d18f1aa88"
          }
        ]
      }
    },
    {
      "id": "docling-toolkit",
      "organization": "Docling",
      "project": "Docling document toolkit",
      "repository": "docling-project/docling",
      "category": "AI & data",
      "sector": "technology",
      "summary": "Docling's document-processing package declares Requests as a runtime dependency.",
      "useScope": "Library",
      "evidenceType": "Direct dependency",
      "sourcePath": "pyproject.toml",
      "commitSha": "53c11a20a5dd6ac0d85fe88cc257ca3b4b3a72d4",
      "lineStart": 54,
      "lineEnd": 54,
      "checkedAt": "2026-10-25T02:51:47.373Z",
      "archived": false,
      "sourceBlobSha": "12bb71482c43d0381ba8cd30a4a394be43f3b792",
      "avatarSource": "https://avatars.githubusercontent.com/u/188446108?v=4",
      "sourceSha256": "92e7d7d175ceac480d048d8a1fb1fc559150f4e8e374b61183cc795d8429832b",
      "evidenceSnippet": "  'requests>=2.32.2,<3.0.0',",
      "evidenceUrl": "https://github.com/docling-project/docling/blob/53c11a20a5dd6ac0d85fe88cc257ca3b4b3a72d4/pyproject.toml#L54-L54",
      "repositoryOwner": "docling-project",
      "defaultBranch": "main",
      "avatarPath": "/static/observatory/organizations/docling-toolkit.png",
      "usageDetails": {
        "title": "Downloading OCR model files before document processing",
        "explanation": "Docling's EasyOCR integration uses a shared Requests downloader to obtain selected detection and recognition model archives. Existing files can be reused unless a forced download is requested. The helper streams the archive into an in-memory buffer, optionally reports progress, and passes it back so the integration can extract the model files into its local model directory.",
        "flow": [
          "Select OCR model archives that are missing or require a forced refresh.",
          "Stream each archive through Requests into an in-memory download buffer.",
          "Extract the model files into the configured local directory."
        ],
        "scopeNote": "This is the EasyOCR model-preparation path; the evidence does not say Requests performs OCR inference or downloads every input document.",
        "verification": "code",
        "sources": [
          {
            "label": "Selecting and extracting OCR model archives",
            "repository": "docling-project/docling",
            "commitSha": "53c11a20a5dd6ac0d85fe88cc257ca3b4b3a72d4",
            "sourcePath": "docling/models/stages/ocr/easyocr_model.py",
            "lineStart": 260,
            "lineEnd": 306,
            "evidenceUrl": "https://github.com/docling-project/docling/blob/53c11a20a5dd6ac0d85fe88cc257ca3b4b3a72d4/docling/models/stages/ocr/easyocr_model.py#L260-L306",
            "checkedAt": "2026-10-25T03:10:40.622918Z",
            "sourceSha256": "0f018fcf4c604ee0b38900b9b32114592e79968141c3ada23d0ca2d7bcbf43ac",
            "sourceBlobSha": "981424623e7606c1e6900505b8c890260b1f04fc"
          },
          {
            "label": "Requests stream into a progress-tracked buffer",
            "repository": "docling-project/docling",
            "commitSha": "53c11a20a5dd6ac0d85fe88cc257ca3b4b3a72d4",
            "sourcePath": "docling/utils/utils.py",
            "lineStart": 50,
            "lineEnd": 70,
            "evidenceUrl": "https://github.com/docling-project/docling/blob/53c11a20a5dd6ac0d85fe88cc257ca3b4b3a72d4/docling/utils/utils.py#L50-L70",
            "checkedAt": "2026-10-25T03:10:40.622918Z",
            "sourceSha256": "9218b997c5ef0b381296fa67ca74982a00613de0ee465d66b68d74067099d39b",
            "sourceBlobSha": "5053dcf4e82e23eda37c525774e2de3e5f3e1f15"
          }
        ]
      }
    },
    {
      "id": "dune-client",
      "organization": "Dune",
      "project": "Dune Python client",
      "repository": "duneanalytics/dune-client",
      "category": "Crypto & Web3",
      "summary": "The Dune Python client declares Requests as a runtime dependency.",
      "evidenceType": "Direct dependency",
      "evidenceUrl": "https://github.com/duneanalytics/dune-client/blob/ef605dda451fe39f2f0beb3fa4ee21a72374a4ba/pyproject.toml#L27-L27",
      "sourcePath": "pyproject.toml",
      "commitSha": "ef605dda451fe39f2f0beb3fa4ee21a72374a4ba",
      "evidenceSnippet": "    \"requests>=2.33,<2.35\",",
      "lineStart": 27,
      "lineEnd": 27,
      "checkedAt": "2026-10-25T02:52:38Z",
      "archived": false,
      "sourceBlobSha": "30a0831fefaac48b3d4de065d701cd8abf435a19",
      "sector": "crypto",
      "useScope": "SDK",
      "avatarSource": "https://avatars.githubusercontent.com/u/43092013?v=4",
      "avatarPath": "/static/observatory/organizations/dune-client.png",
      "ownershipJustification": "Owned by duneanalytics; the manifest names Dune Analytics as coauthor and the README links the official docs.dune.com API documentation.",
      "defaultBranch": "main",
      "sourceSha256": "b712e3ae0a81b8baa8bc14e0f3b4f54f93878ab6828b0ee72cc66492078d6832",
      "usageDetails": {
        "title": "Sending authenticated requests to Dune APIs",
        "explanation": "Dune’s synchronous Python API client creates a Requests session with an adapter that retries selected HTTP failures. Its router combines the configured API base, API version, and route, then sends requests with the Dune API key header and timeout. GET calls can return raw responses, while ordinary calls process JSON. POST and PATCH helpers send structured request bodies through the same session.",
        "flow": [
          "Create a reusable HTTP session with retry rules for selected failures.",
          "Build the API route and attach the Dune authentication header.",
          "Send the operation and return its processed JSON or raw response."
        ],
        "scopeNote": "This verifies the synchronous public Python client’s HTTP transport, without establishing how Dune’s query execution backend is implemented.",
        "verification": "code",
        "sources": [
          {
            "label": "Session retries and API authentication",
            "repository": "duneanalytics/dune-client",
            "commitSha": "ef605dda451fe39f2f0beb3fa4ee21a72374a4ba",
            "sourcePath": "dune_client/api/base.py",
            "lineStart": 36,
            "lineEnd": 91,
            "evidenceUrl": "https://github.com/duneanalytics/dune-client/blob/ef605dda451fe39f2f0beb3fa4ee21a72374a4ba/dune_client/api/base.py#L36-L91",
            "checkedAt": "2026-10-25T03:07:13.636Z",
            "sourceSha256": "af96499996ed54db2c6c3602d25f658c8773b574cd8f55f58a357920df38bc3a",
            "sourceBlobSha": "1a84bf7d084567f9a45f88f6f74a119abbbccf22"
          },
          {
            "label": "Synchronous API route dispatch",
            "repository": "duneanalytics/dune-client",
            "commitSha": "ef605dda451fe39f2f0beb3fa4ee21a72374a4ba",
            "sourcePath": "dune_client/api/base.py",
            "lineStart": 145,
            "lineEnd": 229,
            "evidenceUrl": "https://github.com/duneanalytics/dune-client/blob/ef605dda451fe39f2f0beb3fa4ee21a72374a4ba/dune_client/api/base.py#L145-L229",
            "checkedAt": "2026-10-25T03:07:13.636Z",
            "sourceSha256": "af96499996ed54db2c6c3602d25f658c8773b574cd8f55f58a357920df38bc3a",
            "sourceBlobSha": "1a84bf7d084567f9a45f88f6f74a119abbbccf22"
          }
        ]
      }
    },
    {
      "id": "dydx-governance",
      "organization": "dYdX",
      "project": "V4 governance proposal tooling",
      "repository": "dydxprotocol/v4-chain",
      "category": "Crypto & Web3",
      "summary": "A governance script uses Requests to retrieve market information when preparing a delisting proposal.",
      "evidenceType": "Code usage",
      "evidenceUrl": "https://github.com/dydxprotocol/v4-chain/blob/80b766f69946143dd6f1b08e3b175fea10c8c1e2/protocol/scripts/governance/create_delisting_proposal.py#L15-L15",
      "sourcePath": "protocol/scripts/governance/create_delisting_proposal.py",
      "commitSha": "80b766f69946143dd6f1b08e3b175fea10c8c1e2",
      "evidenceSnippet": "    marketmap_data = requests.get(MARKETMAP_URL).json()",
      "lineStart": 15,
      "lineEnd": 15,
      "checkedAt": "2026-10-25T02:52:38Z",
      "archived": false,
      "sourceBlobSha": "e1799c763dc67a1078a8757c90a742ccdb8fbc5f",
      "sector": "crypto",
      "useScope": "Developer tooling",
      "avatarSource": "https://avatars.githubusercontent.com/u/35151859?v=4",
      "avatarPath": "/static/observatory/organizations/dydx-governance.png",
      "ownershipJustification": "The non-fork repository is owned by dydxprotocol and identifies itself as the dYdX V4 protocol.",
      "defaultBranch": "main",
      "sourceSha256": "235624fa8dfabb5f0881a15a5c8ed45701173efe3af0e26be159d70d7ec5a013",
      "usageDetails": {
        "title": "Preparing market delisting proposals from API data",
        "explanation": "A governance helper in dYdX’s v4-chain repository uses Requests to retrieve market, perpetual, and order book pair definitions from configured REST endpoints. It matches the tickers selected for delisting to their identifiers, then constructs proposal messages that change the relevant market state and disable the market map entry. The script prints the resulting proposal JSON for a subsequent governance workflow.",
        "flow": [
          "Fetch market, perpetual, and order book pair definitions from REST endpoints.",
          "Match selected tickers to identifiers and construct the delisting proposal messages.",
          "Print the proposal JSON for the operator’s subsequent governance workflow."
        ],
        "scopeNote": "The verified script prepares governance proposal data; it does not itself submit the proposal or implement the dYdX trading engine.",
        "verification": "code",
        "sources": [
          {
            "label": "Market metadata retrieval and proposal construction",
            "repository": "dydxprotocol/v4-chain",
            "commitSha": "80b766f69946143dd6f1b08e3b175fea10c8c1e2",
            "sourcePath": "protocol/scripts/governance/create_delisting_proposal.py",
            "lineStart": 5,
            "lineEnd": 56,
            "evidenceUrl": "https://github.com/dydxprotocol/v4-chain/blob/80b766f69946143dd6f1b08e3b175fea10c8c1e2/protocol/scripts/governance/create_delisting_proposal.py#L5-L56",
            "checkedAt": "2026-10-25T02:52:38Z",
            "sourceSha256": "235624fa8dfabb5f0881a15a5c8ed45701173efe3af0e26be159d70d7ec5a013",
            "sourceBlobSha": "e1799c763dc67a1078a8757c90a742ccdb8fbc5f"
          }
        ]
      }
    },
    {
      "id": "earthaccess-nasa-data",
      "organization": "earthaccess",
      "project": "earthaccess",
      "repository": "earthaccess-dev/earthaccess",
      "category": "Science & research",
      "sector": "technology",
      "summary": "The community earthaccess library for NASA Earthdata APIs declares Requests as a runtime dependency.",
      "useScope": "Data tooling",
      "evidenceType": "Direct dependency",
      "evidenceUrl": "https://github.com/earthaccess-dev/earthaccess/blob/f27edbc5a9c3bbc3a8c21e415863a114a01daa6e/pyproject.toml#L47-L47",
      "sourcePath": "pyproject.toml",
      "commitSha": "f27edbc5a9c3bbc3a8c21e415863a114a01daa6e",
      "evidenceSnippet": "  \"requests >=2.26\",",
      "lineStart": 47,
      "lineEnd": 47,
      "checkedAt": "2026-10-25T02:52:44.278Z",
      "archived": false,
      "sourceSha256": "904eb90e46cf16f5bc34892bcdc8c07b697430cbcad1b639d122caf1e8ed0664",
      "sourceBlobSha": "0d2c965d074ca8f6f30f80427bb956cf3b9ee0de",
      "avatarSource": "https://avatars.githubusercontent.com/u/196376372?v=4",
      "repositoryOwner": "earthaccess-dev",
      "defaultBranch": "main",
      "avatarPath": "/static/observatory/organizations/earthaccess-nasa-data.png",
      "usageDetails": {
        "title": "Obtaining authenticated access to Earthdata resources",
        "explanation": "The community earthaccess library uses Requests sessions for NASA Earthdata authentication-related calls. Its session can carry a bearer token and handle authentication redirects. A demonstrated operation fetches temporary S3 credentials from a data provider's HTTPS endpoint and decodes the JSON response. Another operation posts to Earthdata Login to find or create a token for subsequent access.",
        "flow": [
          "Create a session carrying the configured Earthdata authentication details.",
          "Contact the provider credentials endpoint or Earthdata Login token endpoint.",
          "Read the returned credentials or token for subsequent data access."
        ],
        "scopeNote": "earthaccess is labeled as a community project; these client authentication calls do not establish ownership or NASA-wide production usage.",
        "verification": "code",
        "sources": [
          {
            "label": "Temporary cloud credentials and session",
            "repository": "earthaccess-dev/earthaccess",
            "commitSha": "f27edbc5a9c3bbc3a8c21e415863a114a01daa6e",
            "sourcePath": "earthaccess/auth.py",
            "lineStart": 178,
            "lineEnd": 240,
            "evidenceUrl": "https://github.com/earthaccess-dev/earthaccess/blob/f27edbc5a9c3bbc3a8c21e415863a114a01daa6e/earthaccess/auth.py#L178-L240",
            "checkedAt": "2026-10-25T03:07:49.608Z",
            "sourceSha256": "74e4a861ded09a41b67420a78820bedfd2b93c92b243f1701dea082d7271fcb0",
            "sourceBlobSha": "ecd5989ec1ffddf4af33deae1eaecbc72c385536"
          },
          {
            "label": "Earthdata token request",
            "repository": "earthaccess-dev/earthaccess",
            "commitSha": "f27edbc5a9c3bbc3a8c21e415863a114a01daa6e",
            "sourcePath": "earthaccess/auth.py",
            "lineStart": 335,
            "lineEnd": 341,
            "evidenceUrl": "https://github.com/earthaccess-dev/earthaccess/blob/f27edbc5a9c3bbc3a8c21e415863a114a01daa6e/earthaccess/auth.py#L335-L341",
            "checkedAt": "2026-10-25T03:07:49.608Z",
            "sourceSha256": "74e4a861ded09a41b67420a78820bedfd2b93c92b243f1701dea082d7271fcb0",
            "sourceBlobSha": "ecd5989ec1ffddf4af33deae1eaecbc72c385536"
          }
        ]
      }
    },
    {
      "id": "elastic-enterprise-search",
      "organization": "Elastic",
      "project": "Enterprise Search Python Client",
      "repository": "elastic/enterprise-search-python",
      "category": "Developer tools",
      "summary": "Elastic's Enterprise Search client offers an optional Requests transport extra.",
      "evidenceType": "Optional dependency",
      "evidenceUrl": "https://github.com/elastic/enterprise-search-python/blob/35130824c0d750e37f19ff19aee03af25f6b0036/setup.py#L70",
      "sourcePath": "setup.py",
      "commitSha": "35130824c0d750e37f19ff19aee03af25f6b0036",
      "evidenceSnippet": "        \"requests\": [\"requests>=2.4, <3\"],",
      "lineStart": 70,
      "lineEnd": 70,
      "checkedAt": "2026-10-25T02:51:17Z",
      "archived": false,
      "sourceBlobSha": "02dc87e77f0f5604a59c26aa5659578bb4623610",
      "sector": "technology",
      "useScope": "Optional transport",
      "avatarSource": "https://avatars.githubusercontent.com/u/6764390?v=4",
      "sourceSha256": "2078d2ff0e1f2e7185b2b1183327013affc09b89a2056df64f65d5c9adfd269c",
      "avatarPath": "/static/observatory/organizations/elastic-enterprise-search.png",
      "usageDetails": {
        "title": "Installing the client's optional Requests dependency extra",
        "explanation": "Elastic's Enterprise Search package exposes a named Requests extra alongside its standard dependencies. Installing that extra adds the supported Requests version range to the environment. This establishes an optional integration path, rather than mandatory use for every search call. The inspected package manifest does not identify a specific Requests callsite, so this entry describes dependency configuration only.",
        "flow": [
          "A developer selects the package's optional Requests installation extra.",
          "The installer adds Requests within the manifest's supported version range.",
          "The client environment now includes that optional HTTP library."
        ],
        "scopeNote": "This is dependency-level evidence for an optional extra; the inspected sources do not establish a specific runtime call.",
        "verification": "dependency",
        "sources": [
          {
            "label": "Optional Requests installation extra",
            "repository": "elastic/enterprise-search-python",
            "commitSha": "35130824c0d750e37f19ff19aee03af25f6b0036",
            "sourcePath": "setup.py",
            "lineStart": 62,
            "lineEnd": 74,
            "evidenceUrl": "https://github.com/elastic/enterprise-search-python/blob/35130824c0d750e37f19ff19aee03af25f6b0036/setup.py#L62-L74",
            "checkedAt": "2026-10-25T03:10:24Z",
            "sourceSha256": "2078d2ff0e1f2e7185b2b1183327013affc09b89a2056df64f65d5c9adfd269c",
            "sourceBlobSha": "02dc87e77f0f5604a59c26aa5659578bb4623610"
          }
        ]
      }
    },
    {
      "id": "ethereum",
      "organization": "Ethereum",
      "project": "Execution specification tooling",
      "repository": "ethereum/execution-specs",
      "category": "Crypto & Web3",
      "summary": "The execution specification repository uses Requests in a script that downloads Geth.",
      "useScope": "Development tooling",
      "evidenceType": "Code usage",
      "evidenceUrl": "https://github.com/ethereum/execution-specs/blob/97166d93ff7d0250e1528cf42bebb9814f131476/scripts/download_geth_linux.py#L33-L37",
      "sourcePath": "scripts/download_geth_linux.py",
      "commitSha": "97166d93ff7d0250e1528cf42bebb9814f131476",
      "evidenceSnippet": "    )\n    r = requests.get(url)\n\n    with open(f\"{target_dir}/geth.tar.gz\", \"wb\") as f:\n        f.write(r.content)",
      "lineStart": 33,
      "lineEnd": 37,
      "checkedAt": "2026-10-25T01:26:47Z",
      "archived": false,
      "repositoryOwner": "ethereum",
      "defaultBranch": "forks/bogota",
      "sourceBlobSha": "e589d406e6c37240eca29ab21e79c3db177d79b0",
      "sourceSha256": "2a37f2344a48a895a05702c67e803abb1aa343b423699b15038576c04c0fa458",
      "sector": "crypto",
      "avatarSource": "https://avatars.githubusercontent.com/u/6250754?v=4",
      "avatarPath": "/static/observatory/organizations/ethereum.png",
      "usageDetails": {
        "title": "Downloading Geth for execution specification tooling",
        "explanation": "A helper in Ethereum’s execution-specs repository uses Requests to download a particular Linux Geth release archive from the Geth build storage URL. It writes the response bytes to a local archive, extracts the package, moves the Geth executable into place, and removes temporary files. Requests supplies the download step in this developer setup process; the remaining operations use local filesystem utilities.",
        "flow": [
          "Construct the build storage URL for the specified Linux Geth release.",
          "Download the archive bytes with Requests and write them locally.",
          "Extract the executable into place and clean up temporary files."
        ],
        "scopeNote": "This is an execution-specification setup script, not Requests implementing the Geth node, Ethereum execution rules, or consensus protocol.",
        "verification": "code",
        "sources": [
          {
            "label": "Geth archive download and installation",
            "repository": "ethereum/execution-specs",
            "commitSha": "97166d93ff7d0250e1528cf42bebb9814f131476",
            "sourcePath": "scripts/download_geth_linux.py",
            "lineStart": 27,
            "lineEnd": 44,
            "evidenceUrl": "https://github.com/ethereum/execution-specs/blob/97166d93ff7d0250e1528cf42bebb9814f131476/scripts/download_geth_linux.py#L27-L44",
            "checkedAt": "2026-10-25T01:26:47Z",
            "sourceSha256": "2a37f2344a48a895a05702c67e803abb1aa343b423699b15038576c04c0fa458",
            "sourceBlobSha": "e589d406e6c37240eca29ab21e79c3db177d79b0"
          }
        ]
      }
    },
    {
      "id": "spacy-nlp",
      "organization": "Explosion",
      "project": "spaCy",
      "repository": "explosion/spaCy",
      "category": "AI & data",
      "sector": "technology",
      "summary": "spaCy declares Requests among the package's installation dependencies.",
      "useScope": "Library",
      "evidenceType": "Direct dependency",
      "sourcePath": "setup.cfg",
      "commitSha": "6d51b88afdb26a7c3c37a1da7cf35fdd3ce687ac",
      "lineStart": 65,
      "lineEnd": 65,
      "checkedAt": "2026-10-25T02:51:47.374Z",
      "archived": false,
      "sourceBlobSha": "bbfd747ceb390fb3fda890ec7d5d63e4eafdc133",
      "avatarSource": "https://avatars.githubusercontent.com/u/20011530?v=4",
      "sourceSha256": "f5da0f8b5a7819938d0bd3117972dd1e2be8bf3cfbd7aceb2cc3d5eb7399d33b",
      "evidenceSnippet": "    requests>=2.13.0,<3.0.0",
      "evidenceUrl": "https://github.com/explosion/spaCy/blob/6d51b88afdb26a7c3c37a1da7cf35fdd3ce687ac/setup.cfg#L65-L65",
      "repositoryOwner": "explosion",
      "defaultBranch": "master",
      "avatarPath": "/static/observatory/organizations/spacy-nlp.png",
      "usageDetails": {
        "title": "Finding a compatible language-pipeline package version",
        "explanation": "spaCy's download command uses Requests to fetch its pipeline compatibility table. It reads the table's JSON and selects versions matching the installed spaCy release, then determines an appropriate version for the requested pipeline. The command subsequently constructs the package download URL and invokes the package installer; Requests' directly verified role here is retrieving the compatibility information.",
        "flow": [
          "Retrieve the published pipeline compatibility table with an HTTP GET.",
          "Select the requested pipeline version compatible with the installed spaCy release.",
          "Build the package URL and hand installation to the package installer."
        ],
        "scopeNote": "The inspected Requests call retrieves compatibility metadata; package installation is delegated to a separate installer command in this code.",
        "verification": "code",
        "sources": [
          {
            "label": "Using compatibility data before installation",
            "repository": "explosion/spaCy",
            "commitSha": "6d51b88afdb26a7c3c37a1da7cf35fdd3ce687ac",
            "sourcePath": "spacy/cli/download.py",
            "lineStart": 88,
            "lineEnd": 101,
            "evidenceUrl": "https://github.com/explosion/spaCy/blob/6d51b88afdb26a7c3c37a1da7cf35fdd3ce687ac/spacy/cli/download.py#L88-L101",
            "checkedAt": "2026-10-25T03:10:40.622918Z",
            "sourceSha256": "7d3f45177a30f1924f27b286de46a19f30dd6952ff86ef427b1e7d7726f2ee20",
            "sourceBlobSha": "4690343af5ca9a24e9ca7fc8e394a9d7de988afb"
          },
          {
            "label": "Compatibility GET and package-install command",
            "repository": "explosion/spaCy",
            "commitSha": "6d51b88afdb26a7c3c37a1da7cf35fdd3ce687ac",
            "sourcePath": "spacy/cli/download.py",
            "lineStart": 136,
            "lineEnd": 189,
            "evidenceUrl": "https://github.com/explosion/spaCy/blob/6d51b88afdb26a7c3c37a1da7cf35fdd3ce687ac/spacy/cli/download.py#L136-L189",
            "checkedAt": "2026-10-25T03:10:40.622918Z",
            "sourceSha256": "7d3f45177a30f1924f27b286de46a19f30dd6952ff86ef427b1e7d7726f2ee20",
            "sourceBlobSha": "4690343af5ca9a24e9ca7fc8e394a9d7de988afb"
          }
        ]
      }
    },
    {
      "id": "f5-icontrol-rest",
      "organization": "F5",
      "project": "iControl REST Python SDK",
      "repository": "F5Networks/f5-icontrol-rest-python",
      "category": "Infrastructure & operations",
      "summary": "F5's iControl REST Python SDK declares Requests as an installation dependency.",
      "evidenceType": "Direct dependency",
      "evidenceUrl": "https://github.com/F5Networks/f5-icontrol-rest-python/blob/3fee4a4599e903cce1abfe232e6ffb74d7085b64/setup.py#L31",
      "sourcePath": "setup.py",
      "commitSha": "3fee4a4599e903cce1abfe232e6ffb74d7085b64",
      "evidenceSnippet": "      install_requires=['requests >= 2.5.0, < 3'],",
      "lineStart": 31,
      "lineEnd": 31,
      "checkedAt": "2026-10-25T02:51:17Z",
      "archived": false,
      "sourceBlobSha": "0c1fc466e48b36ed2a5bbf95f92c76e90298f5d5",
      "sector": "technology",
      "useScope": "SDK",
      "avatarSource": "https://avatars.githubusercontent.com/u/8935905?v=4",
      "sourceSha256": "7741d6d53b20185cba4a67c843efeaf36f4105920433558cfed6a84a49b2e480",
      "avatarPath": "/static/observatory/organizations/f5-icontrol-rest.png",
      "usageDetails": {
        "title": "Preparing and sending BIG-IP management requests",
        "explanation": "F5's iControl REST wrapper composes a Requests session and exposes methods for BIG-IP REST operations. Its GET implementation separates request options from send options, prepares a Requests request, applies the session timeout when needed, and sends through the session. Similar wrappers cover other HTTP methods, giving callers a consistent interface for management API communication.",
        "flow": [
          "The iControl wrapper creates a session with connection and authentication settings.",
          "A management operation becomes a prepared Requests request with timeout options.",
          "The session sends it and returns the management endpoint's response."
        ],
        "scopeNote": "This evidence concerns the public BIG-IP management SDK. It does not establish which appliances, customers, or live network configurations currently use it.",
        "verification": "code",
        "sources": [
          {
            "label": "Requests session and authentication setup",
            "repository": "F5Networks/f5-icontrol-rest-python",
            "commitSha": "3fee4a4599e903cce1abfe232e6ffb74d7085b64",
            "sourcePath": "icontrol/session.py",
            "lineStart": 421,
            "lineEnd": 453,
            "evidenceUrl": "https://github.com/F5Networks/f5-icontrol-rest-python/blob/3fee4a4599e903cce1abfe232e6ffb74d7085b64/icontrol/session.py#L421-L453",
            "checkedAt": "2026-10-25T03:10:24Z",
            "sourceSha256": "b2db59b60d64d307ba00c71ba17eb8b4278f15be61571110970bef135a1e64ca",
            "sourceBlobSha": "7263edf7280b5061adf6e484834cbbedd44c70ff"
          },
          {
            "label": "Prepared management request wrappers",
            "repository": "F5Networks/f5-icontrol-rest-python",
            "commitSha": "3fee4a4599e903cce1abfe232e6ffb74d7085b64",
            "sourcePath": "icontrol/session.py",
            "lineStart": 503,
            "lineEnd": 597,
            "evidenceUrl": "https://github.com/F5Networks/f5-icontrol-rest-python/blob/3fee4a4599e903cce1abfe232e6ffb74d7085b64/icontrol/session.py#L503-L597",
            "checkedAt": "2026-10-25T03:10:24Z",
            "sourceSha256": "b2db59b60d64d307ba00c71ba17eb8b4278f15be61571110970bef135a1e64ca",
            "sourceBlobSha": "7263edf7280b5061adf6e484834cbbedd44c70ff"
          }
        ]
      }
    },
    {
      "id": "fastai-vision",
      "organization": "fast.ai",
      "project": "fastai image-search utility",
      "repository": "fastai/fastai",
      "category": "AI & data",
      "sector": "technology",
      "summary": "fastai's vision utility calls an image-search API with Requests.",
      "useScope": "Library utility",
      "evidenceType": "Code usage",
      "sourcePath": "fastai/vision/utils.py",
      "commitSha": "46231bdc3e88a457c940dd7bde8a03c92fb42901",
      "lineStart": 143,
      "lineEnd": 145,
      "checkedAt": "2026-10-25T02:51:47.374Z",
      "archived": false,
      "sourceBlobSha": "774ccc85a38a8a2829c82146aba8df976f9f2986",
      "avatarSource": "https://avatars.githubusercontent.com/u/20547620?v=4",
      "sourceSha256": "5cfd3a7ef79e3b5ad4bdf0fd7cc5dc92181971f19a64e57b57390fa46cda3a1f",
      "evidenceSnippet": "        r = requests.get(url, params=params)\n        r.raise_for_status()\n        j = r.json()",
      "evidenceUrl": "https://github.com/fastai/fastai/blob/46231bdc3e88a457c940dd7bde8a03c92fb42901/fastai/vision/utils.py#L143-L145",
      "repositoryOwner": "fastai",
      "defaultBranch": "main",
      "avatarPath": "/static/observatory/organizations/fastai-vision.png",
      "usageDetails": {
        "title": "Collecting image URLs from a search service",
        "explanation": "fastai's SerpApi image-search helper sends a search term, engine choice and caller-provided API key through Requests. It checks the HTTP response, parses the returned JSON and collects original-image URLs. If more results are needed, it follows the service's next-page link, then removes duplicates and applies the requested maximum before returning the URL list.",
        "flow": [
          "Build an image-search query with the selected engine and API key.",
          "Fetch result pages through Requests and collect original-image URLs.",
          "Follow pagination as needed, then deduplicate and limit the returned list."
        ],
        "scopeNote": "This helper retrieves image-search results for a caller; it does not show Requests running fastai's neural-network training computations.",
        "verification": "code",
        "sources": [
          {
            "label": "SerpApi search, pagination and result collection",
            "repository": "fastai/fastai",
            "commitSha": "46231bdc3e88a457c940dd7bde8a03c92fb42901",
            "sourcePath": "fastai/vision/utils.py",
            "lineStart": 130,
            "lineEnd": 153,
            "evidenceUrl": "https://github.com/fastai/fastai/blob/46231bdc3e88a457c940dd7bde8a03c92fb42901/fastai/vision/utils.py#L130-L153",
            "checkedAt": "2026-10-25T03:10:40.622918Z",
            "sourceSha256": "5cfd3a7ef79e3b5ad4bdf0fd7cc5dc92181971f19a64e57b57390fa46cda3a1f",
            "sourceBlobSha": "774ccc85a38a8a2829c82146aba8df976f9f2986"
          }
        ]
      }
    },
    {
      "id": "filecoin-slate",
      "organization": "Filecoin Project",
      "project": "Slate upload examples",
      "repository": "filecoin-project/slate",
      "category": "Crypto & Web3",
      "summary": "Slate's API documentation includes Python examples that upload files using Requests.",
      "evidenceType": "Code usage",
      "evidenceUrl": "https://github.com/filecoin-project/slate/blob/1c654c664fcf5cadb9c01501e4da465c93372356/components/api-docs/v3/upload.js#L30-L30",
      "sourcePath": "components/api-docs/v3/upload.js",
      "commitSha": "1c654c664fcf5cadb9c01501e4da465c93372356",
      "evidenceSnippet": "r = requests.post(url, headers=headers, files=files)`;",
      "lineStart": 30,
      "lineEnd": 30,
      "checkedAt": "2026-10-25T02:52:38Z",
      "archived": false,
      "sourceBlobSha": "ca2c798657f4e6b72f6d4aeeef90d33d78385646",
      "sector": "crypto",
      "useScope": "Official code example",
      "avatarSource": "https://avatars.githubusercontent.com/u/22014611?v=4",
      "avatarPath": "/static/observatory/organizations/filecoin-slate.png",
      "ownershipJustification": "The non-fork filecoin-project/slate repository identifies the Slate storage application and links Filecoin and Textile. This is project-specific example code, not Filecoin network runtime.",
      "defaultBranch": "main",
      "sourceSha256": "556e5d3833326467b2693aca32f6e4856ce50b0d4a36d3dd59f84c6386efbd4d",
      "usageDetails": {
        "title": "Demonstrating authenticated file uploads to Slate",
        "explanation": "Slate’s API documentation includes Python examples that use Requests to upload a local file. The example opens the file in binary mode, supplies an API key in the Authorization header, and sends a multipart POST to uploads.slate.host. A second version places a collection identifier in the upload URL. Requests handles the example’s HTTP upload, while the service receives the file.",
        "flow": [
          "Open the local file in binary mode and prepare authentication.",
          "Choose the general upload URL or a collection-specific upload endpoint.",
          "Send the file as a multipart POST using Requests."
        ],
        "scopeNote": "The evidence is a published Python upload example in Filecoin Project’s Slate repository, not the implementation of Filecoin’s storage protocol.",
        "verification": "code",
        "sources": [
          {
            "label": "Python upload examples",
            "repository": "filecoin-project/slate",
            "commitSha": "1c654c664fcf5cadb9c01501e4da465c93372356",
            "sourcePath": "components/api-docs/v3/upload.js",
            "lineStart": 20,
            "lineEnd": 60,
            "evidenceUrl": "https://github.com/filecoin-project/slate/blob/1c654c664fcf5cadb9c01501e4da465c93372356/components/api-docs/v3/upload.js#L20-L60",
            "checkedAt": "2026-10-25T02:52:38Z",
            "sourceSha256": "556e5d3833326467b2693aca32f6e4856ce50b0d4a36d3dd59f84c6386efbd4d",
            "sourceBlobSha": "ca2c798657f4e6b72f6d4aeeef90d33d78385646"
          }
        ]
      }
    },
    {
      "id": "fireblocks-recovery",
      "organization": "Fireblocks",
      "project": "Key Backup and Recovery Tool",
      "repository": "fireblocks/fireblocks-key-recovery-tool",
      "category": "Crypto & Web3",
      "summary": "A Tezos helper in the recovery tool uses Requests to query an explorer's account metadata.",
      "evidenceType": "Code usage",
      "evidenceUrl": "https://github.com/fireblocks/fireblocks-key-recovery-tool/blob/aa00e584bd6de9f148b3f8ec98e71cd73eab3c36/utils/xtz_helpers.py#L155-L155",
      "sourcePath": "utils/xtz_helpers.py",
      "commitSha": "aa00e584bd6de9f148b3f8ec98e71cd73eab3c36",
      "evidenceSnippet": "        key_revealed = requests.get(EXPLORER + xtz_address).json()[REVEALED]",
      "lineStart": 155,
      "lineEnd": 155,
      "checkedAt": "2026-10-25T02:52:38Z",
      "archived": false,
      "sourceBlobSha": "e353dfe0f90d3b49d01235d14e473cd8ded05270",
      "sector": "crypto",
      "useScope": "Developer tooling",
      "avatarSource": "https://avatars.githubusercontent.com/u/40918269?v=4",
      "avatarPath": "/static/observatory/organizations/fireblocks-recovery.png",
      "ownershipJustification": "The Fireblocks-owned non-fork repository's README identifies the recovery tool and links Fireblocks support documentation. Scope is this helper.",
      "defaultBranch": "master",
      "sourceSha256": "456a4afff0e9c925876b0c205598f89bc6ccff0ee1fdc63c27bf3bf304f54652",
      "usageDetails": {
        "title": "Checking Tezos account status before transaction preparation",
        "explanation": "A Tezos helper in Fireblocks’ key recovery tool uses Requests to query the TzStats explorer for an account address. It reads whether that account’s public key has already been revealed. If not, the helper adds a reveal operation before constructing and filling the transaction. Requests provides this external account-status lookup; other code handles the transaction operations and signing-related work.",
        "flow": [
          "Derive the Tezos address and query its explorer account record.",
          "Read the account’s revealed status from the returned JSON data.",
          "Include a reveal operation when needed before preparing the transaction."
        ],
        "scopeNote": "This is one account-status lookup in recovery tooling, not evidence that Requests performs cryptographic recovery or operates Fireblocks custody infrastructure.",
        "verification": "code",
        "sources": [
          {
            "label": "Explorer endpoint and revealed status field",
            "repository": "fireblocks/fireblocks-key-recovery-tool",
            "commitSha": "aa00e584bd6de9f148b3f8ec98e71cd73eab3c36",
            "sourcePath": "utils/xtz_helpers.py",
            "lineStart": 15,
            "lineEnd": 23,
            "evidenceUrl": "https://github.com/fireblocks/fireblocks-key-recovery-tool/blob/aa00e584bd6de9f148b3f8ec98e71cd73eab3c36/utils/xtz_helpers.py#L15-L23",
            "checkedAt": "2026-10-25T02:52:38Z",
            "sourceSha256": "456a4afff0e9c925876b0c205598f89bc6ccff0ee1fdc63c27bf3bf304f54652",
            "sourceBlobSha": "e353dfe0f90d3b49d01235d14e473cd8ded05270"
          },
          {
            "label": "Account status lookup before transaction preparation",
            "repository": "fireblocks/fireblocks-key-recovery-tool",
            "commitSha": "aa00e584bd6de9f148b3f8ec98e71cd73eab3c36",
            "sourcePath": "utils/xtz_helpers.py",
            "lineStart": 136,
            "lineEnd": 162,
            "evidenceUrl": "https://github.com/fireblocks/fireblocks-key-recovery-tool/blob/aa00e584bd6de9f148b3f8ec98e71cd73eab3c36/utils/xtz_helpers.py#L136-L162",
            "checkedAt": "2026-10-25T02:52:38Z",
            "sourceSha256": "456a4afff0e9c925876b0c205598f89bc6ccff0ee1fdc63c27bf3bf304f54652",
            "sourceBlobSha": "e353dfe0f90d3b49d01235d14e473cd8ded05270"
          }
        ]
      }
    },
    {
      "id": "gocardless-python",
      "organization": "GoCardless",
      "project": "GoCardless Pro Python Client",
      "repository": "gocardless/gocardless-pro-python",
      "category": "Payments & commerce",
      "summary": "GoCardless' Python client declares Requests as an installation dependency.",
      "evidenceType": "Direct dependency",
      "evidenceUrl": "https://github.com/gocardless/gocardless-pro-python/blob/6b01d9b7acc396dcfda48949e573241bd3395400/setup.py#L11",
      "sourcePath": "setup.py",
      "commitSha": "6b01d9b7acc396dcfda48949e573241bd3395400",
      "evidenceSnippet": "    install_requires = ['requests>=2.34.2'],",
      "lineStart": 11,
      "lineEnd": 11,
      "checkedAt": "2026-10-25T02:51:17Z",
      "archived": false,
      "sourceBlobSha": "c2c1a6c20d9ae836e1fb44b16e8dfb3b85e75a3b",
      "sector": "technology",
      "useScope": "SDK",
      "avatarSource": "https://avatars.githubusercontent.com/u/790629?v=4",
      "sourceSha256": "6f96fdb2346082b8d58d3e46e036dfdb751da773fc98ec1e50046fa79fa9e449",
      "avatarPath": "/static/observatory/organizations/gocardless-python.png",
      "usageDetails": {
        "title": "Sending API resource requests as HTTP operations",
        "explanation": "GoCardless' API client maps SDK HTTP operations to Requests calls. GET requests carry query parameters, while POST, PUT, and DELETE serialize their bodies as JSON. The client supplies its endpoint and headers, then checks the response for API errors before returning it. Decorated methods also update the client's rate-limit information from the response.",
        "flow": [
          "The client builds an endpoint, headers, and parameters or JSON body.",
          "Requests performs the selected GET, POST, PUT, or DELETE operation.",
          "The wrapper checks API errors and updates its rate-limit information."
        ],
        "scopeNote": "The evidence covers the public GoCardless client's HTTP implementation. It does not identify payment customers or confirm that a collection is happening.",
        "verification": "code",
        "sources": [
          {
            "label": "Resource HTTP operations",
            "repository": "gocardless/gocardless-pro-python",
            "commitSha": "6b01d9b7acc396dcfda48949e573241bd3395400",
            "sourcePath": "gocardless_pro/api_client.py",
            "lineStart": 19,
            "lineEnd": 119,
            "evidenceUrl": "https://github.com/gocardless/gocardless-pro-python/blob/6b01d9b7acc396dcfda48949e573241bd3395400/gocardless_pro/api_client.py#L19-L119",
            "checkedAt": "2026-10-25T03:10:24Z",
            "sourceSha256": "814ec9ce2d1925bd2c5ce40d9d0e8485d2344e3111adeda423b6be3cfd5e7122",
            "sourceBlobSha": "a8bf5b86936d392d72e580d12cc4893699f7c4cd"
          },
          {
            "label": "Rate-limit response tracking",
            "repository": "gocardless/gocardless-pro-python",
            "commitSha": "6b01d9b7acc396dcfda48949e573241bd3395400",
            "sourcePath": "gocardless_pro/rate_limit.py",
            "lineStart": 4,
            "lineEnd": 37,
            "evidenceUrl": "https://github.com/gocardless/gocardless-pro-python/blob/6b01d9b7acc396dcfda48949e573241bd3395400/gocardless_pro/rate_limit.py#L4-L37",
            "checkedAt": "2026-10-25T03:10:24Z",
            "sourceSha256": "79488a5afae6da9b8e6eb906cde5da08dea6cb02098f21804420f4848b95bbe5",
            "sourceBlobSha": "7e7d2c4e208186b8ce0562023b17650fc7ff3316"
          }
        ]
      }
    },
    {
      "id": "hetzner-cloud-python",
      "organization": "Hetzner",
      "project": "Hetzner Cloud Python SDK",
      "repository": "hetznercloud/hcloud-python",
      "category": "Cloud & platforms",
      "sector": "technology",
      "summary": "Hetzner's official Cloud SDK creates a Requests session in its API client.",
      "useScope": "SDK",
      "evidenceType": "Code usage",
      "evidenceUrl": "https://github.com/hetznercloud/hcloud-python/blob/62cbd25d87ae91dcae89633764484f1bae795269/hcloud/_client.py#L365-L365",
      "sourcePath": "hcloud/_client.py",
      "commitSha": "62cbd25d87ae91dcae89633764484f1bae795269",
      "evidenceSnippet": "        self._session = requests.Session()",
      "lineStart": 365,
      "lineEnd": 365,
      "checkedAt": "2026-10-25T02:52:32.668Z",
      "archived": false,
      "sourceSha256": "6f30d325fb71d6f1f7be7b88edcc689e7218feb145642ae49b9e650897ef2b32",
      "sourceBlobSha": "4a71bb0bc3412b7063b7f6426620a73aec0d3253",
      "avatarSource": "https://avatars.githubusercontent.com/u/22154697?v=4",
      "repositoryOwner": "hetznercloud",
      "defaultBranch": "main",
      "avatarPath": "/static/observatory/organizations/hetzner-cloud-python.png",
      "usageDetails": {
        "title": "Making authenticated Hetzner Cloud API calls",
        "explanation": "Hetzner's Python SDK uses a Requests session in its common API client. It combines a relative operation path with the configured API endpoint, attaches the client's headers, and sends the chosen HTTP method. The response reader decodes JSON and turns error responses into SDK exceptions. The request wrapper also retries eligible API failures and timeouts within configured limits.",
        "flow": [
          "Combine the API endpoint, operation path, and configured client headers.",
          "Send the operation through Requests and retry eligible temporary failures.",
          "Decode the JSON response or raise a structured SDK error."
        ],
        "scopeNote": "This demonstrates the official Python SDK request path, not live Hetzner customer activity or every service in the company.",
        "verification": "code",
        "sources": [
          {
            "label": "API calls, retries, and response decoding",
            "repository": "hetznercloud/hcloud-python",
            "commitSha": "62cbd25d87ae91dcae89633764484f1bae795269",
            "sourcePath": "hcloud/_client.py",
            "lineStart": 365,
            "lineEnd": 437,
            "evidenceUrl": "https://github.com/hetznercloud/hcloud-python/blob/62cbd25d87ae91dcae89633764484f1bae795269/hcloud/_client.py#L365-L437",
            "checkedAt": "2026-10-25T03:07:50.671Z",
            "sourceSha256": "6f30d325fb71d6f1f7be7b88edcc689e7218feb145642ae49b9e650897ef2b32",
            "sourceBlobSha": "4a71bb0bc3412b7063b7f6426620a73aec0d3253"
          }
        ]
      }
    },
    {
      "id": "hummingbot-reporting",
      "organization": "Hummingbot",
      "project": "Reported Volumes dashboard tooling",
      "repository": "hummingbot/datadog",
      "category": "Crypto & Web3",
      "summary": "The volume export script uses Requests to retrieve reporting data from Datadog.",
      "evidenceType": "Code usage",
      "evidenceUrl": "https://github.com/hummingbot/datadog/blob/9ea8b9ecd774655e3a515385a74d1a440238a4b0/export_data.py#L36-L36",
      "sourcePath": "export_data.py",
      "commitSha": "9ea8b9ecd774655e3a515385a74d1a440238a4b0",
      "evidenceSnippet": "    response = requests.get(url, headers=headers, params=params)",
      "lineStart": 36,
      "lineEnd": 36,
      "checkedAt": "2026-10-25T02:52:38Z",
      "archived": false,
      "sourceBlobSha": "817917813b9058f41d2d991f57d6cda685dafa53",
      "sector": "crypto",
      "useScope": "Analytics tooling",
      "avatarSource": "https://avatars.githubusercontent.com/u/88165212?v=4",
      "avatarPath": "/static/observatory/organizations/hummingbot-reporting.png",
      "ownershipJustification": "The Hummingbot-owned non-fork repository identifies its reported-volume dashboard and links hummingbot.org/reporting.",
      "defaultBranch": "main",
      "sourceSha256": "cbd024253e9f8018e6498016cf677455980b566f26d5d1ad56566c3c10297106",
      "usageDetails": {
        "title": "Exporting historical trading metrics from Datadog",
        "explanation": "Hummingbot’s reporting script uses Requests to call Datadog’s metrics query API with API and application keys. It supplies a query and time range, receives time series, and turns daily volume points into rows grouped by exchange connector. The script sorts those rows and writes a CSV file. The verified HTTP traffic retrieves previously reported metrics rather than placing exchange orders.",
        "flow": [
          "Build the Datadog metrics query and select its historical time range.",
          "Request the time series using the configured Datadog authentication keys.",
          "Transform daily volume points into sorted rows and export CSV."
        ],
        "scopeNote": "This evidence covers a metrics export script, without proving that every Hummingbot installation reports data or uses Requests for trading.",
        "verification": "code",
        "sources": [
          {
            "label": "Datadog authentication and metrics query",
            "repository": "hummingbot/datadog",
            "commitSha": "9ea8b9ecd774655e3a515385a74d1a440238a4b0",
            "sourcePath": "export_data.py",
            "lineStart": 10,
            "lineEnd": 38,
            "evidenceUrl": "https://github.com/hummingbot/datadog/blob/9ea8b9ecd774655e3a515385a74d1a440238a4b0/export_data.py#L10-L38",
            "checkedAt": "2026-10-25T02:52:38Z",
            "sourceSha256": "cbd024253e9f8018e6498016cf677455980b566f26d5d1ad56566c3c10297106",
            "sourceBlobSha": "817917813b9058f41d2d991f57d6cda685dafa53"
          },
          {
            "label": "Exchange volume transformation and CSV export",
            "repository": "hummingbot/datadog",
            "commitSha": "9ea8b9ecd774655e3a515385a74d1a440238a4b0",
            "sourcePath": "export_data.py",
            "lineStart": 50,
            "lineEnd": 84,
            "evidenceUrl": "https://github.com/hummingbot/datadog/blob/9ea8b9ecd774655e3a515385a74d1a440238a4b0/export_data.py#L50-L84",
            "checkedAt": "2026-10-25T02:52:38Z",
            "sourceSha256": "cbd024253e9f8018e6498016cf677455980b566f26d5d1ad56566c3c10297106",
            "sourceBlobSha": "817917813b9058f41d2d991f57d6cda685dafa53"
          }
        ]
      }
    },
    {
      "id": "ibm-sdk-core",
      "organization": "IBM",
      "project": "IBM Python SDK Core",
      "repository": "IBM/python-sdk-core",
      "category": "Cloud & platforms",
      "summary": "IBM's shared Python SDK core declares Requests as a runtime dependency.",
      "evidenceType": "Direct dependency",
      "evidenceUrl": "https://github.com/IBM/python-sdk-core/blob/cf7c2fe618dc9d36bd36ecd1561c3cb8cf8ee1ed/pyproject.toml#L29-L29",
      "sourcePath": "pyproject.toml",
      "commitSha": "cf7c2fe618dc9d36bd36ecd1561c3cb8cf8ee1ed",
      "evidenceSnippet": "    \"requests>=2.32.4,<3.0.0\",",
      "lineStart": 29,
      "lineEnd": 29,
      "checkedAt": "2026-10-25T01:27:26Z",
      "archived": false,
      "sourceSha256": "21e2bf9b45bce36326317676a2e4d2f893a65aa3f7447b8437c04dbf698de374",
      "sourceBlobSha": "519efb6edf94ad9235ab02cb75d0089846656978",
      "sector": "technology",
      "useScope": "SDK",
      "avatarSource": "https://avatars.githubusercontent.com/u/1459110?v=4",
      "avatarPath": "/static/observatory/organizations/ibm-sdk-core.jpg",
      "usageDetails": {
        "title": "Providing shared HTTP transport for IBM SDKs",
        "explanation": "IBM's SDK core creates a Requests session for its shared service base class. Its send method applies HTTP configuration, cookies, and a default timeout, then delegates the prepared call to that session. Successful responses become detailed results containing parsed JSON, a stream, or response data; unsuccessful responses become API exceptions. This centralizes transport behavior for SDKs using the base service.",
        "flow": [
          "The base service owns a Requests session and HTTP configuration.",
          "Its send method forwards the prepared request with cookies and timeout.",
          "The wrapper returns a detailed response or raises an API exception."
        ],
        "scopeNote": "This evidence covers IBM's public SDK core base service. It does not establish use by every IBM product or reveal current customer activity.",
        "verification": "code",
        "sources": [
          {
            "label": "Shared Requests session",
            "repository": "IBM/python-sdk-core",
            "commitSha": "cf7c2fe618dc9d36bd36ecd1561c3cb8cf8ee1ed",
            "sourcePath": "ibm_cloud_sdk_core/base_service.py",
            "lineStart": 92,
            "lineEnd": 116,
            "evidenceUrl": "https://github.com/IBM/python-sdk-core/blob/cf7c2fe618dc9d36bd36ecd1561c3cb8cf8ee1ed/ibm_cloud_sdk_core/base_service.py#L92-L116",
            "checkedAt": "2026-10-25T03:10:24Z",
            "sourceSha256": "915b701b732f7dbfe2a33aa15424158986cf232166c72eb114f9b5fccba56441",
            "sourceBlobSha": "931a2b614a70060cb66e428512689416f51b91aa"
          },
          {
            "label": "Service request and response handling",
            "repository": "IBM/python-sdk-core",
            "commitSha": "cf7c2fe618dc9d36bd36ecd1561c3cb8cf8ee1ed",
            "sourcePath": "ibm_cloud_sdk_core/base_service.py",
            "lineStart": 298,
            "lineEnd": 362,
            "evidenceUrl": "https://github.com/IBM/python-sdk-core/blob/cf7c2fe618dc9d36bd36ecd1561c3cb8cf8ee1ed/ibm_cloud_sdk_core/base_service.py#L298-L362",
            "checkedAt": "2026-10-25T03:10:24Z",
            "sourceSha256": "915b701b732f7dbfe2a33aa15424158986cf232166c72eb114f9b5fccba56441",
            "sourceBlobSha": "931a2b614a70060cb66e428512689416f51b91aa"
          }
        ]
      }
    },
    {
      "id": "imperva-python",
      "organization": "Imperva",
      "project": "Imperva Python SDK",
      "repository": "imperva/imperva-sdk-python",
      "category": "Security & identity",
      "summary": "Imperva's Python SDK declares Requests as an installation dependency.",
      "evidenceType": "Direct dependency",
      "evidenceUrl": "https://github.com/imperva/imperva-sdk-python/blob/b0718fb2168fd7ee8d33eaf4ba606c94f914f291/setup.py#L34",
      "sourcePath": "setup.py",
      "commitSha": "b0718fb2168fd7ee8d33eaf4ba606c94f914f291",
      "evidenceSnippet": "    install_requires=['requests'],",
      "lineStart": 34,
      "lineEnd": 34,
      "checkedAt": "2026-10-25T02:51:17Z",
      "archived": false,
      "sourceBlobSha": "e22cca9493c7928657e1522fa87d14f1bb69bee4",
      "sector": "technology",
      "useScope": "SDK",
      "avatarSource": "https://avatars.githubusercontent.com/u/34535031?v=4",
      "sourceSha256": "a1c5ee98a61352f1a79ca42e350b67eb340da75d52315bad7e26c274881f8aa1",
      "avatarPath": "/static/observatory/organizations/imperva-python.png",
      "usageDetails": {
        "title": "Calling SecureSphere management endpoints through HTTP sessions",
        "explanation": "Imperva's connection helper assembles a SecureSphere management API URL from the host, port, version, and path. It creates a Requests session, mounts its TLS adapter, and dispatches POST, GET, DELETE, or PUT with configured headers and timeout. Successful JSON responses are decoded for the caller, while missing endpoints and other failures become SDK exceptions.",
        "flow": [
          "The helper builds the SecureSphere management URL and connection options.",
          "A Requests session performs the selected management HTTP operation.",
          "The SDK decodes successful JSON or raises a management exception."
        ],
        "scopeNote": "This describes the public SecureSphere SDK connection helper. It does not reveal protected applications, appliance deployments, or current security operations.",
        "verification": "code",
        "sources": [
          {
            "label": "SecureSphere management API connection",
            "repository": "imperva/imperva-sdk-python",
            "commitSha": "b0718fb2168fd7ee8d33eaf4ba606c94f914f291",
            "sourcePath": "imperva_sdk/MxConnection.py",
            "lineStart": 215,
            "lineEnd": 278,
            "evidenceUrl": "https://github.com/imperva/imperva-sdk-python/blob/b0718fb2168fd7ee8d33eaf4ba606c94f914f291/imperva_sdk/MxConnection.py#L215-L278",
            "checkedAt": "2026-10-25T03:10:24Z",
            "sourceSha256": "08a132574a361cd95d42d0fee855e78ec375acb7ea2270375b04c2bf22a1ee33",
            "sourceBlobSha": "4a529738ae94ca0415ba736548f453b92e8257aa"
          }
        ]
      }
    },
    {
      "id": "intel-neural-compressor-ci",
      "organization": "Intel",
      "project": "Neural Compressor CI log collector",
      "repository": "intel/neural-compressor",
      "category": "AI & data",
      "sector": "technology",
      "summary": "Neural Compressor's CI log collector uses Requests to query Azure build artifacts.",
      "useScope": "CI tooling",
      "evidenceType": "Code usage",
      "sourcePath": ".azure-pipelines/scripts/models/collect_log_all.py",
      "commitSha": "4528123b7f0a2169b4fb08b50601ff811a95cbef",
      "lineStart": 67,
      "lineEnd": 67,
      "checkedAt": "2026-10-25T02:51:47.374Z",
      "archived": false,
      "sourceBlobSha": "45c297af4017934d889f7276d8a7d3eb63227bf8",
      "avatarSource": "https://avatars.githubusercontent.com/u/17888862?v=4",
      "sourceSha256": "336e5db8ad481761a6bfbc0ebf5082113bd5f7d5b8b64f900c38717ab70b56d0",
      "evidenceSnippet": "    azure_artifacts_data = dict(requests.get(azure_artifact_api_url).json().items())",
      "evidenceUrl": "https://github.com/intel/neural-compressor/blob/4528123b7f0a2169b4fb08b50601ff811a95cbef/.azure-pipelines/scripts/models/collect_log_all.py#L67-L67",
      "repositoryOwner": "intel",
      "defaultBranch": "main",
      "avatarPath": "/static/observatory/organizations/intel-neural-compressor-ci.png",
      "usageDetails": {
        "title": "Attaching artifact links to CI benchmark reports",
        "explanation": "Neural Compressor's CI log collector uses Requests to query the Azure build-artifacts endpoint for a supplied build identifier. It reads the artifact names and download URLs into a lookup table. The script then uses those links when combining tuning and benchmark log entries, replacing placeholder URLs with paths to the relevant model's build artifact.",
        "flow": [
          "Query Azure build artifacts for the supplied CI build identifier.",
          "Map artifact names to the download URLs in the JSON response.",
          "Insert the corresponding artifact links into combined benchmark and tuning logs."
        ],
        "scopeNote": "This is a continuous-integration report helper, not the model-compression algorithm or evidence of Requests inside Intel hardware execution.",
        "verification": "code",
        "sources": [
          {
            "label": "Artifact discovery and CI log-link construction",
            "repository": "intel/neural-compressor",
            "commitSha": "4528123b7f0a2169b4fb08b50601ff811a95cbef",
            "sourcePath": ".azure-pipelines/scripts/models/collect_log_all.py",
            "lineStart": 14,
            "lineEnd": 75,
            "evidenceUrl": "https://github.com/intel/neural-compressor/blob/4528123b7f0a2169b4fb08b50601ff811a95cbef/.azure-pipelines/scripts/models/collect_log_all.py#L14-L75",
            "checkedAt": "2026-10-25T03:10:40.622918Z",
            "sourceSha256": "336e5db8ad481761a6bfbc0ebf5082113bd5f7d5b8b64f900c38717ab70b56d0",
            "sourceBlobSha": "45c297af4017934d889f7276d8a7d3eb63227bf8"
          }
        ]
      }
    },
    {
      "id": "internet-archive-python",
      "organization": "Internet Archive",
      "project": "Internet Archive Python library and CLI",
      "repository": "jjjake/internetarchive",
      "category": "Knowledge & publishing",
      "sector": "technology",
      "summary": "The Python library and CLI documented by Internet Archive declare Requests as a runtime dependency.",
      "useScope": "API client",
      "evidenceType": "Direct dependency",
      "evidenceUrl": "https://github.com/jjjake/internetarchive/blob/3e2a57de598482db35dc99b072a22cffbb8d6798/pyproject.toml#L34-L34",
      "sourcePath": "pyproject.toml",
      "commitSha": "3e2a57de598482db35dc99b072a22cffbb8d6798",
      "evidenceSnippet": "  \"requests>=2.25.0,<3.0.0\",",
      "lineStart": 34,
      "lineEnd": 34,
      "checkedAt": "2026-10-25T02:52:42.169Z",
      "archived": false,
      "sourceSha256": "093ed97a846cd667529b3155d89e06c87255a0f5ed352f7ce13fa2efc1e91eda",
      "sourceBlobSha": "eb5f74c95494a1caba48cbd730db534b9418a598",
      "avatarSource": "https://avatars.githubusercontent.com/u/130493?v=4",
      "repositoryOwner": "jjjake",
      "defaultBranch": "master",
      "avatarPath": "/static/observatory/organizations/internet-archive-python.jpg",
      "usageDetails": {
        "title": "Retrieving Internet Archive item metadata records",
        "explanation": "The Internet Archive Python library extends Requests.Session for its archive connection. In the demonstrated metadata method, it builds an item's metadata URL, optionally supplies archive credentials, performs an HTTP GET, and checks for errors. It then returns decoded JSON to the caller. This gives Python programs and the related CLI access to structured information about an archive item.",
        "flow": [
          "Build the metadata API URL from the requested archive identifier.",
          "Fetch the record through the archive session with optional credentials.",
          "Check the response and return its decoded JSON metadata."
        ],
        "scopeNote": "This describes the library documented by Internet Archive, not a measurement of archive visitors or a claim about all backend services.",
        "verification": "code",
        "sources": [
          {
            "label": "Requests-derived archive session",
            "repository": "jjjake/internetarchive",
            "commitSha": "3e2a57de598482db35dc99b072a22cffbb8d6798",
            "sourcePath": "internetarchive/session.py",
            "lineStart": 65,
            "lineEnd": 72,
            "evidenceUrl": "https://github.com/jjjake/internetarchive/blob/3e2a57de598482db35dc99b072a22cffbb8d6798/internetarchive/session.py#L65-L72",
            "checkedAt": "2026-10-25T03:07:51.731Z",
            "sourceSha256": "a82603a6ab5535d04cd124e6537c16b4ef769b32651a9e23880dcf6614903a61",
            "sourceBlobSha": "345b1e9b0a17d7aa1c4fe1e3feed9b1de43fff03"
          },
          {
            "label": "Item metadata API retrieval",
            "repository": "jjjake/internetarchive",
            "commitSha": "3e2a57de598482db35dc99b072a22cffbb8d6798",
            "sourcePath": "internetarchive/session.py",
            "lineStart": 412,
            "lineEnd": 437,
            "evidenceUrl": "https://github.com/jjjake/internetarchive/blob/3e2a57de598482db35dc99b072a22cffbb8d6798/internetarchive/session.py#L412-L437",
            "checkedAt": "2026-10-25T03:07:51.731Z",
            "sourceSha256": "a82603a6ab5535d04cd124e6537c16b4ef769b32651a9e23880dcf6614903a61",
            "sourceBlobSha": "345b1e9b0a17d7aa1c4fe1e3feed9b1de43fff03"
          }
        ]
      }
    },
    {
      "id": "kubernetes-python",
      "organization": "Kubernetes",
      "project": "Kubernetes Python Client",
      "repository": "kubernetes-client/python",
      "category": "Cloud & platforms",
      "summary": "The official Kubernetes Python client lists Requests in its requirements.",
      "evidenceType": "Direct dependency",
      "evidenceUrl": "https://github.com/kubernetes-client/python/blob/054f3ed703b8bd7241d67a803da67bf1983b3716/requirements.txt#L7-L7",
      "sourcePath": "requirements.txt",
      "commitSha": "054f3ed703b8bd7241d67a803da67bf1983b3716",
      "evidenceSnippet": "requests # Apache-2.0",
      "lineStart": 7,
      "lineEnd": 7,
      "checkedAt": "2026-10-25T01:27:26Z",
      "archived": false,
      "sourceSha256": "57f145e9ab06055c20552ddfc0014b93097669b882b52fcb02de1a7374b57b33",
      "sourceBlobSha": "21629757099c8c752a5b296bbddf55d316d467e6",
      "sector": "technology",
      "useScope": "SDK",
      "avatarSource": "https://avatars.githubusercontent.com/u/26615988?v=4",
      "avatarPath": "/static/observatory/organizations/kubernetes-python.png",
      "usageDetails": {
        "title": "Refreshing Google credentials for Kubernetes configuration",
        "explanation": "The Kubernetes Python client's configuration loader has a Google authentication path that creates a Requests-backed Google Auth transport. When Google authentication support is available, it obtains default Google credentials and asks them to refresh through that transport. The refreshed credentials can then be used by the configuration flow. This is a specific authentication integration, not the SDK's general API networking implementation.",
        "flow": [
          "Select the Google credential-refresh path when authentication support is available.",
          "Create the Google Auth transport backed by the Requests library.",
          "Refresh and return credentials for the Kubernetes configuration workflow."
        ],
        "scopeNote": "The evidence is an optional Google-auth integration in configuration loading; it does not show all Kubernetes API calls using Requests.",
        "verification": "code",
        "sources": [
          {
            "label": "Google credentials refreshed through Requests transport",
            "repository": "kubernetes-client/python",
            "commitSha": "054f3ed703b8bd7241d67a803da67bf1983b3716",
            "sourcePath": "kubernetes/config/kube_config.py",
            "lineStart": 242,
            "lineEnd": 264,
            "evidenceUrl": "https://github.com/kubernetes-client/python/blob/054f3ed703b8bd7241d67a803da67bf1983b3716/kubernetes/config/kube_config.py#L242-L264",
            "checkedAt": "2026-10-25T03:07:52.787Z",
            "sourceSha256": "c51abb7f5c4bc7cfbf2e0602696d43779b8d9628a839aaf67663d53e444d2558",
            "sourceBlobSha": "d9e735b9ab7fd2dd9c019a44c30f46a23ad68841"
          }
        ]
      }
    },
    {
      "id": "kucoin-universal",
      "organization": "KuCoin",
      "project": "Universal SDK for Python",
      "repository": "Kucoin/kucoin-universal-sdk",
      "category": "Crypto & Web3",
      "summary": "KuCoin's Python Universal SDK declares Requests as an installation dependency.",
      "evidenceType": "Direct dependency",
      "evidenceUrl": "https://github.com/Kucoin/kucoin-universal-sdk/blob/c2f39bdb8b7d5f31cfb3fd532f9baf2f09fd8f12/sdk/python/setup.py#L43-L43",
      "sourcePath": "sdk/python/setup.py",
      "commitSha": "c2f39bdb8b7d5f31cfb3fd532f9baf2f09fd8f12",
      "evidenceSnippet": "        \"requests>=2.32.3\",",
      "lineStart": 43,
      "lineEnd": 43,
      "checkedAt": "2026-10-25T02:52:38Z",
      "archived": false,
      "sourceBlobSha": "97bc813218a2627ea3851c54c1b3e208345ebf43",
      "sector": "crypto",
      "useScope": "SDK",
      "avatarSource": "https://avatars.githubusercontent.com/u/6188901?v=4",
      "avatarPath": "/static/observatory/organizations/kucoin-universal.png",
      "ownershipJustification": "The package manifest names KuCoin as author, api@kucoin.com as contact, and describes it as the official SDK.",
      "defaultBranch": "main",
      "sourceSha256": "2354a072461502d9662de793397bc85719cb66d5caa321e124aca9d6d12911f2",
      "usageDetails": {
        "title": "Transporting signed KuCoin SDK API calls",
        "explanation": "KuCoin’s Universal Python SDK uses Requests as the HTTP transport behind its prepared API calls. It creates a session with configured connection pools, retries, and proxy options, prepares URLs and request bodies, and attaches headers produced by the SDK signer. The transport sends each request with separate connection and read timeouts, runs configured interceptors, and processes the API response for its caller.",
        "flow": [
          "Configure the HTTP session with pooling, retry, and optional proxy settings.",
          "Prepare the endpoint and body, then add the SDK’s signature headers.",
          "Send with configured timeouts and process responses through the transport layer."
        ],
        "scopeNote": "The source establishes Requests inside the public SDK’s transport, not the implementation or current runtime of KuCoin’s exchange backend.",
        "verification": "code",
        "sources": [
          {
            "label": "Session configuration and signature headers",
            "repository": "Kucoin/kucoin-universal-sdk",
            "commitSha": "c2f39bdb8b7d5f31cfb3fd532f9baf2f09fd8f12",
            "sourcePath": "sdk/python/kucoin_universal_sdk/internal/infra/default_transport.py",
            "lineStart": 24,
            "lineEnd": 74,
            "evidenceUrl": "https://github.com/Kucoin/kucoin-universal-sdk/blob/c2f39bdb8b7d5f31cfb3fd532f9baf2f09fd8f12/sdk/python/kucoin_universal_sdk/internal/infra/default_transport.py#L24-L74",
            "checkedAt": "2026-10-25T03:07:13.636Z",
            "sourceSha256": "f7e8dcefb1fb74fbb9d5d82f99c6dd7516c8e2bde019c0688fed3995bd7f78c1",
            "sourceBlobSha": "7140e192232b147c2612751795faf26a67e1b6df"
          },
          {
            "label": "Request preparation and HTTP transport",
            "repository": "Kucoin/kucoin-universal-sdk",
            "commitSha": "c2f39bdb8b7d5f31cfb3fd532f9baf2f09fd8f12",
            "sourcePath": "sdk/python/kucoin_universal_sdk/internal/infra/default_transport.py",
            "lineStart": 116,
            "lineEnd": 241,
            "evidenceUrl": "https://github.com/Kucoin/kucoin-universal-sdk/blob/c2f39bdb8b7d5f31cfb3fd532f9baf2f09fd8f12/sdk/python/kucoin_universal_sdk/internal/infra/default_transport.py#L116-L241",
            "checkedAt": "2026-10-25T03:07:13.636Z",
            "sourceSha256": "f7e8dcefb1fb74fbb9d5d82f99c6dd7516c8e2bde019c0688fed3995bd7f78c1",
            "sourceBlobSha": "7140e192232b147c2612751795faf26a67e1b6df"
          }
        ]
      }
    },
    {
      "id": "ledger",
      "organization": "Ledger",
      "project": "Ledger Blue Python loader",
      "repository": "LedgerHQ/blue-loader-python",
      "category": "Crypto & Web3",
      "summary": "The Ledger Blue Python loader's HTTP proxy uses Requests to send and retrieve APDU messages.",
      "useScope": "Developer tooling",
      "evidenceType": "Code usage",
      "evidenceUrl": "https://github.com/LedgerHQ/blue-loader-python/blob/a37ef7fe0a7ee7d01882c91afe87b58c03927317/ledgerblue/commHTTP.py#L34-L38",
      "sourcePath": "ledgerblue/commHTTP.py",
      "commitSha": "a37ef7fe0a7ee7d01882c91afe87b58c03927317",
      "evidenceSnippet": "        try:\n            ret = requests.post(\n                self.remote_host + \"/send_apdu\", params={\"data\": apdu.hex()}\n            )\n",
      "lineStart": 34,
      "lineEnd": 38,
      "checkedAt": "2026-10-25T01:26:47Z",
      "archived": false,
      "repositoryOwner": "LedgerHQ",
      "defaultBranch": "master",
      "sourceBlobSha": "f81031c222652ad3c2540ec996c9c7a7e116af55",
      "sourceSha256": "c69bea76953daefeb88ec4c86aa52b3e097e80665f1f8746e821174612b88206",
      "sector": "crypto",
      "avatarSource": "https://avatars.githubusercontent.com/u/9784193?v=4",
      "avatarPath": "/static/observatory/organizations/ledger.png",
      "usageDetails": {
        "title": "Exchanging device commands through an HTTP proxy",
        "explanation": "Ledger’s Python loader tooling includes an HTTP proxy transport built with Requests. It encodes a device command as hexadecimal, posts it to the proxy’s /send_apdu endpoint, and repeatedly calls /fetch_apdu until a response is available. The returned hexadecimal data is converted back into bytes. This lets the tool exchange device commands through a configured proxy rather than a direct device connection.",
        "flow": [
          "Encode the device command as hexadecimal for the configured HTTP proxy.",
          "Post the command and poll the proxy until a reply arrives.",
          "Decode the returned hexadecimal response into bytes for the calling tool."
        ],
        "scopeNote": "This verifies an optional HTTP proxy transport in developer loader tooling, not all Ledger wallet traffic or firmware networking.",
        "verification": "code",
        "sources": [
          {
            "label": "HTTP proxy command exchange",
            "repository": "LedgerHQ/blue-loader-python",
            "commitSha": "a37ef7fe0a7ee7d01882c91afe87b58c03927317",
            "sourcePath": "ledgerblue/commHTTP.py",
            "lineStart": 25,
            "lineEnd": 47,
            "evidenceUrl": "https://github.com/LedgerHQ/blue-loader-python/blob/a37ef7fe0a7ee7d01882c91afe87b58c03927317/ledgerblue/commHTTP.py#L25-L47",
            "checkedAt": "2026-10-25T01:26:47Z",
            "sourceSha256": "c69bea76953daefeb88ec4c86aa52b3e097e80665f1f8746e821174612b88206",
            "sourceBlobSha": "f81031c222652ad3c2540ec996c9c7a7e116af55"
          }
        ]
      }
    },
    {
      "id": "lido-oracle",
      "organization": "Lido",
      "project": "Oracle healthcheck",
      "repository": "lidofinance/lido-oracle",
      "category": "Crypto & Web3",
      "summary": "The Lido Oracle healthcheck uses Requests to query a health endpoint.",
      "evidenceType": "Code usage",
      "evidenceUrl": "https://github.com/lidofinance/lido-oracle/blob/fff59c898eebbcc41790b05b03e884d2f5f53fc0/src/scripts/healthcheck.py#L13-L13",
      "sourcePath": "src/scripts/healthcheck.py",
      "commitSha": "fff59c898eebbcc41790b05b03e884d2f5f53fc0",
      "evidenceSnippet": "        response = requests.get(url, timeout=timeout, allow_redirects=False)",
      "lineStart": 13,
      "lineEnd": 13,
      "checkedAt": "2026-10-25T02:52:38Z",
      "archived": false,
      "sourceBlobSha": "fbdc6ddc06fa8ad159394a7d0df5336c5c6231ee",
      "sector": "crypto",
      "useScope": "Monitoring tooling",
      "avatarSource": "https://avatars.githubusercontent.com/u/68384064?v=4",
      "avatarPath": "/static/observatory/organizations/lido-oracle.png",
      "ownershipJustification": "The non-fork lidofinance/lido-oracle repository identifies itself as the Lido Oracle daemon.",
      "defaultBranch": "master",
      "sourceSha256": "c301ab2bf671e3dba0b3762bcdc0ae9fe5385516c74a41826541f13711735e62",
      "usageDetails": {
        "title": "Checking service health for oracle operations",
        "explanation": "The Lido oracle repository includes a command line healthcheck script that uses Requests to probe a supplied URL. It performs a GET with a configurable timeout and disables redirects, then treats only successful HTTP statuses as healthy. Network errors or other statuses produce a failure exit code. This gives the surrounding operational environment a simple way to detect an unhealthy service endpoint.",
        "flow": [
          "Read the probe URL and optional timeout from command line arguments.",
          "Send a GET request without following redirects to another endpoint.",
          "Return a success or failure exit code from the response."
        ],
        "scopeNote": "The verified use is an operational healthcheck script, not Requests calculating oracle reports or participating in Lido’s onchain consensus.",
        "verification": "code",
        "sources": [
          {
            "label": "Command line HTTP health probe",
            "repository": "lidofinance/lido-oracle",
            "commitSha": "fff59c898eebbcc41790b05b03e884d2f5f53fc0",
            "sourcePath": "src/scripts/healthcheck.py",
            "lineStart": 6,
            "lineEnd": 32,
            "evidenceUrl": "https://github.com/lidofinance/lido-oracle/blob/fff59c898eebbcc41790b05b03e884d2f5f53fc0/src/scripts/healthcheck.py#L6-L32",
            "checkedAt": "2026-10-25T02:52:38Z",
            "sourceSha256": "c301ab2bf671e3dba0b3762bcdc0ae9fe5385516c74a41826541f13711735e62",
            "sourceBlobSha": "fbdc6ddc06fa8ad159394a7d0df5336c5c6231ee"
          }
        ]
      }
    },
    {
      "id": "lightning-servable-validator",
      "organization": "Lightning AI",
      "project": "PyTorch Lightning serving validator",
      "repository": "Lightning-AI/pytorch-lightning",
      "category": "AI & data",
      "sector": "technology",
      "summary": "Lightning's servable-module validator posts a payload to its local validation server using Requests.",
      "useScope": "Validation tooling",
      "evidenceType": "Code usage",
      "sourcePath": "src/lightning/pytorch/serve/servable_module_validator.py",
      "commitSha": "84df182f50ab34301aabb3c0eb4031815bfb413d",
      "lineStart": 119,
      "lineEnd": 119,
      "checkedAt": "2026-10-25T02:51:47.373Z",
      "archived": false,
      "sourceBlobSha": "4c0e6192abdbac07cb7c7d28a8104bafd9304d22",
      "avatarSource": "https://avatars.githubusercontent.com/u/58386951?v=4",
      "sourceSha256": "876a284357c0c64d2d6455b964e8dcbe42633daa1ce37e2d1670f2638d6b2dc0",
      "evidenceSnippet": "        self.resp = requests.post(f\"http://{self.host}:{self.port}/serve\", json=payload)",
      "evidenceUrl": "https://github.com/Lightning-AI/pytorch-lightning/blob/84df182f50ab34301aabb3c0eb4031815bfb413d/src/lightning/pytorch/serve/servable_module_validator.py#L119-L119",
      "repositoryOwner": "Lightning-AI",
      "defaultBranch": "master",
      "avatarPath": "/static/observatory/organizations/lightning-servable-validator.png",
      "usageDetails": {
        "title": "Testing whether a model can be served",
        "explanation": "Lightning's serving validator starts a local process for a model's serving endpoint, then polls its ping endpoint with Requests until it responds successfully. It posts the model's configured test payload to the serve endpoint and records the response. When an expected response is supplied, the validator compares it with the returned JSON before reporting whether validation succeeded.",
        "flow": [
          "Start the temporary serving process and poll its readiness endpoint.",
          "Post the model's configured validation payload using a Requests call.",
          "Compare the response when configured and report the serving validation result."
        ],
        "scopeNote": "This is local serving validation around a Lightning model; the Requests calls are not the tensor operations that produce its predictions.",
        "verification": "code",
        "sources": [
          {
            "label": "Readiness polling, validation request and result check",
            "repository": "Lightning-AI/pytorch-lightning",
            "commitSha": "84df182f50ab34301aabb3c0eb4031815bfb413d",
            "sourcePath": "src/lightning/pytorch/serve/servable_module_validator.py",
            "lineStart": 98,
            "lineEnd": 136,
            "evidenceUrl": "https://github.com/Lightning-AI/pytorch-lightning/blob/84df182f50ab34301aabb3c0eb4031815bfb413d/src/lightning/pytorch/serve/servable_module_validator.py#L98-L136",
            "checkedAt": "2026-10-25T03:10:40.622918Z",
            "sourceSha256": "876a284357c0c64d2d6455b964e8dcbe42633daa1ce37e2d1670f2638d6b2dc0",
            "sourceBlobSha": "4c0e6192abdbac07cb7c7d28a8104bafd9304d22"
          }
        ]
      }
    },
    {
      "id": "llamaindex-core",
      "organization": "LlamaIndex",
      "project": "LlamaIndex Core",
      "repository": "run-llama/llama_index",
      "category": "AI & data",
      "sector": "technology",
      "summary": "LlamaIndex Core declares Requests as a runtime dependency.",
      "useScope": "Library",
      "evidenceType": "Direct dependency",
      "sourcePath": "llama-index-core/pyproject.toml",
      "commitSha": "619d74664e8404612038bc15a1a40c686037277c",
      "lineStart": 70,
      "lineEnd": 70,
      "checkedAt": "2026-10-25T02:51:47.373Z",
      "archived": false,
      "sourceBlobSha": "739e8039826b35f4f5e37eeaf43be01c1809b444",
      "avatarSource": "https://avatars.githubusercontent.com/u/130722866?v=4",
      "sourceSha256": "2d11ea9a8cf0d7c6bf23c53c6eae2f9ae55df0e3ca7db7831185e440eb051c55",
      "evidenceSnippet": "    \"requests>=2.31.0\",",
      "evidenceUrl": "https://github.com/run-llama/llama_index/blob/619d74664e8404612038bc15a1a40c686037277c/llama-index-core/pyproject.toml#L70-L70",
      "repositoryOwner": "run-llama",
      "defaultBranch": "main",
      "avatarPath": "/static/observatory/organizations/llamaindex-core.png",
      "usageDetails": {
        "title": "Resolving remote images into document content",
        "explanation": "LlamaIndex Core's image-document representation can hold an image as embedded data, a local path or a URL. For the URL case, its image resolver uses Requests to download the content with connection and read timeouts. It returns those bytes in an in-memory buffer, optionally encoded as base64, so image-consuming code can read a consistent representation.",
        "flow": [
          "Inspect the image document and select its URL-backed resource.",
          "Fetch the remote image bytes with configured Requests timeouts.",
          "Return an in-memory image buffer, optionally encoded as base64."
        ],
        "scopeNote": "This describes resolving URL-backed ImageDocument content, not a claim that every LlamaIndex connector, model call or query uses Requests.",
        "verification": "code",
        "sources": [
          {
            "label": "ImageDocument URL resolution",
            "repository": "run-llama/llama_index",
            "commitSha": "619d74664e8404612038bc15a1a40c686037277c",
            "sourcePath": "llama-index-core/llama_index/core/schema.py",
            "lineStart": 1413,
            "lineEnd": 1445,
            "evidenceUrl": "https://github.com/run-llama/llama_index/blob/619d74664e8404612038bc15a1a40c686037277c/llama-index-core/llama_index/core/schema.py#L1413-L1445",
            "checkedAt": "2026-10-25T03:10:40.622918Z",
            "sourceSha256": "690c751ff2e8372150b4cb7dc921221ed0ce57bbf44a31a3053f3dc14c9c56a4",
            "sourceBlobSha": "57da5a2b0e5f287aa1d6d51375ecafddda4ae9c6"
          }
        ]
      }
    },
    {
      "id": "mercadopago-python",
      "organization": "Mercado Pago",
      "project": "Mercado Pago Python SDK",
      "repository": "mercadopago/sdk-python",
      "category": "Payments & commerce",
      "summary": "Mercado Pago's Python SDK declares Requests as a runtime dependency.",
      "evidenceType": "Direct dependency",
      "evidenceUrl": "https://github.com/mercadopago/sdk-python/blob/5da68f4294b71e83eb6044394eb8401fa084d6dc/pyproject.toml#L17",
      "sourcePath": "pyproject.toml",
      "commitSha": "5da68f4294b71e83eb6044394eb8401fa084d6dc",
      "evidenceSnippet": "    \"requests>=2.33.0,<3\"",
      "lineStart": 17,
      "lineEnd": 17,
      "checkedAt": "2026-10-25T02:51:17Z",
      "archived": false,
      "sourceBlobSha": "1e14e4782021482269b13cd7a70db933e79fad83",
      "sector": "technology",
      "useScope": "SDK",
      "avatarSource": "https://avatars.githubusercontent.com/u/900583?v=4",
      "sourceSha256": "f72647efa80e14b21342796842ad064a3b931f86937ce0c6b0693eb7727375da",
      "avatarPath": "/static/observatory/organizations/mercadopago-python.png",
      "usageDetails": {
        "title": "Transporting REST calls with configured retry behavior",
        "explanation": "Mercado Pago's HTTP client creates a fresh Requests session for each call and mounts an HTTPS adapter with a retry policy. It forwards the selected method, endpoint, and request options through that session. The result is normalized into a status code and parsed JSON body, with explicit handling for empty responses and invalid JSON.",
        "flow": [
          "The HTTP client builds the retry policy for the current call.",
          "A fresh Requests session sends the method, URL, and options.",
          "The client returns status and JSON or reports invalid response content."
        ],
        "scopeNote": "The evidence covers Mercado Pago's public SDK transport. It describes request handling, not live payments, merchants, or transaction throughput.",
        "verification": "code",
        "sources": [
          {
            "label": "Retry adapter, HTTP call, and JSON response",
            "repository": "mercadopago/sdk-python",
            "commitSha": "5da68f4294b71e83eb6044394eb8401fa084d6dc",
            "sourcePath": "mercadopago/http/http_client.py",
            "lineStart": 14,
            "lineEnd": 81,
            "evidenceUrl": "https://github.com/mercadopago/sdk-python/blob/5da68f4294b71e83eb6044394eb8401fa084d6dc/mercadopago/http/http_client.py#L14-L81",
            "checkedAt": "2026-10-25T03:10:24Z",
            "sourceSha256": "e2979b39971c60f8e44deae604a16796627697aefc8cf43d26b41759400cfbcf",
            "sourceBlobSha": "80458f8b382f8728a52facd77f0fc3bfee8ed729"
          }
        ]
      }
    },
    {
      "id": "mlflow-platform",
      "organization": "MLflow",
      "project": "MLflow",
      "repository": "mlflow/mlflow",
      "category": "AI & data",
      "sector": "technology",
      "summary": "MLflow declares Requests in its main package dependencies.",
      "useScope": "Application",
      "evidenceType": "Direct dependency",
      "sourcePath": "pyproject.toml",
      "commitSha": "5869d7339fe15415cc08798cb321ab7f9aa6ba33",
      "lineStart": 64,
      "lineEnd": 64,
      "checkedAt": "2026-10-25T02:51:47.373Z",
      "archived": false,
      "sourceBlobSha": "c0530360b069ec8ed2f10182c3bc7440f01c1b5a",
      "avatarSource": "https://avatars.githubusercontent.com/u/39938107?v=4",
      "sourceSha256": "9c1ea6e7e71057069377bd8e706202a64b24166a9eacc4af9f34384068e84935",
      "evidenceSnippet": "  \"requests<3,>=2.17.3\",",
      "evidenceUrl": "https://github.com/mlflow/mlflow/blob/5869d7339fe15415cc08798cb321ab7f9aa6ba33/pyproject.toml#L64-L64",
      "repositoryOwner": "mlflow",
      "defaultBranch": "master",
      "avatarPath": "/static/observatory/organizations/mlflow-platform.png",
      "usageDetails": {
        "title": "Executing authenticated HTTP calls with retry policies",
        "explanation": "MLflow's HTTP utilities prepare authentication, certificate settings and request timeouts before sending an operation to a configured service endpoint. The standard transport uses a cached Requests session with connection adapters and a configured retry policy. It executes the requested method and returns the response to the calling API helper, allowing repeated service calls to share the transport configuration.",
        "flow": [
          "Prepare the endpoint URL, authentication headers and request timeout.",
          "Obtain a configured Requests session with the selected retry policy.",
          "Execute the HTTP method and return its response to the API helper."
        ],
        "scopeNote": "This covers MLflow's standard HTTP transport path; the same module also contains a separate branch using the Databricks SDK.",
        "verification": "code",
        "sources": [
          {
            "label": "Authentication and transport configuration",
            "repository": "mlflow/mlflow",
            "commitSha": "5869d7339fe15415cc08798cb321ab7f9aa6ba33",
            "sourcePath": "mlflow/utils/rest_utils.py",
            "lineStart": 248,
            "lineEnd": 311,
            "evidenceUrl": "https://github.com/mlflow/mlflow/blob/5869d7339fe15415cc08798cb321ab7f9aa6ba33/mlflow/utils/rest_utils.py#L248-L311",
            "checkedAt": "2026-10-25T03:10:40.622918Z",
            "sourceSha256": "bf77d375fa81748c9f1bf5d5a3b2eeac6e0c6dbb2d8e3d7b9254a1d9b08f8120",
            "sourceBlobSha": "1c63df548207ee053dd19a57286769426913d0e3"
          },
          {
            "label": "Cached Requests session and request execution",
            "repository": "mlflow/mlflow",
            "commitSha": "5869d7339fe15415cc08798cb321ab7f9aa6ba33",
            "sourcePath": "mlflow/utils/request_utils.py",
            "lineStart": 152,
            "lineEnd": 287,
            "evidenceUrl": "https://github.com/mlflow/mlflow/blob/5869d7339fe15415cc08798cb321ab7f9aa6ba33/mlflow/utils/request_utils.py#L152-L287",
            "checkedAt": "2026-10-25T03:10:40.622918Z",
            "sourceSha256": "5094bfef7e54e828fb6d2ee31ec86fe7af1a5ace7ab9945dbd52f3b1989c3807",
            "sourceBlobSha": "97b5dae9ba9f423625646ad3ad39251b03a6f9a4"
          }
        ]
      }
    },
    {
      "id": "mollie-python",
      "organization": "Mollie",
      "project": "Mollie API Client for Python",
      "repository": "mollie/mollie-api-python",
      "category": "Payments & commerce",
      "summary": "Mollie's Python API client declares Requests as an installation dependency.",
      "evidenceType": "Direct dependency",
      "evidenceUrl": "https://github.com/mollie/mollie-api-python/blob/32f57a18ac1bf22e502598989488283b1727d4c5/setup.py#L81",
      "sourcePath": "setup.py",
      "commitSha": "32f57a18ac1bf22e502598989488283b1727d4c5",
      "evidenceSnippet": "        \"requests\",",
      "lineStart": 81,
      "lineEnd": 81,
      "checkedAt": "2026-10-25T02:51:17Z",
      "archived": false,
      "sourceBlobSha": "91d4105483bffecd72e2122dfdf9ca76b76f4a32",
      "sector": "technology",
      "useScope": "SDK",
      "avatarSource": "https://avatars.githubusercontent.com/u/1327170?v=4",
      "sourceSha256": "21af69269448f39d7a8cd1fee9e95ba075c903c323ec455ac60cfaa11b39907b",
      "avatarPath": "/static/observatory/organizations/mollie-python.png",
      "usageDetails": {
        "title": "Sending API-key authenticated calls through a session",
        "explanation": "Mollie's API-key transport creates and reuses a Requests session, enables certificate verification, and configures retry behavior. For each call it formats the endpoint and payload, adds a bearer API key and optional idempotency key, and sends with the configured timeout. Requests supplies the HTTP response, while connection exceptions become Mollie client errors.",
        "flow": [
          "The client prepares the endpoint, payload, and API-key authorization headers.",
          "Its Requests session sends the operation with timeout and retry configuration.",
          "The client returns the response or translates a network exception."
        ],
        "scopeNote": "This evidence describes Mollie's API-key client path. A separate OAuth path also exists; the source does not expose live payments or customer identities.",
        "verification": "code",
        "sources": [
          {
            "label": "API-key Requests transport",
            "repository": "mollie/mollie-api-python",
            "commitSha": "32f57a18ac1bf22e502598989488283b1727d4c5",
            "sourcePath": "mollie/api/client.py",
            "lineStart": 214,
            "lineEnd": 254,
            "evidenceUrl": "https://github.com/mollie/mollie-api-python/blob/32f57a18ac1bf22e502598989488283b1727d4c5/mollie/api/client.py#L214-L254",
            "checkedAt": "2026-10-25T03:10:24Z",
            "sourceSha256": "8714c09ae7cb1a02d8683389a1106e61d63978ec0df644c1023e92a938b9cecc",
            "sourceBlobSha": "92fac64fff953f1ab5c184150f545ae573c111cf"
          }
        ]
      }
    },
    {
      "id": "monero-rpc",
      "organization": "Monero",
      "project": "Python RPC testing framework",
      "repository": "monero-project/monero",
      "category": "Crypto & Web3",
      "summary": "Monero's Python RPC framework uses Requests to send JSON-RPC POST calls.",
      "evidenceType": "Code usage",
      "evidenceUrl": "https://github.com/monero-project/monero/blob/4487cc68f672c48006f7a3e3d1ba6d9ca2233bd0/utils/python-rpc/framework/rpc.py#L62-L64",
      "sourcePath": "utils/python-rpc/framework/rpc.py",
      "commitSha": "4487cc68f672c48006f7a3e3d1ba6d9ca2233bd0",
      "evidenceSnippet": "        res = requests.post(\n            self.url + path,\n            data=json.dumps(inputs),",
      "lineStart": 62,
      "lineEnd": 64,
      "checkedAt": "2026-10-25T02:52:38Z",
      "archived": false,
      "sourceBlobSha": "b9f35bb68a2dd5308cc366bc28ac1e078ea11ded",
      "sector": "crypto",
      "useScope": "Tests",
      "avatarSource": "https://avatars.githubusercontent.com/u/7450663?v=4",
      "avatarPath": "/static/observatory/organizations/monero-rpc.png",
      "ownershipJustification": "The canonical non-fork monero-project/monero repository links getmonero.org. Scope is its Python test framework.",
      "defaultBranch": "master",
      "sourceSha256": "06e37cd42c35e58eaf95e63adde932e81e4eac5ecf493f13fe062ef88a756959",
      "usageDetails": {
        "title": "Calling Monero RPC endpoints from test tools",
        "explanation": "Monero’s Python RPC test framework uses Requests to send calls to a configured server. Its JSON helper serializes the request, optionally adds HTTP digest authentication, posts to the selected path, and checks the returned JSON for errors. A separate binary helper sends serialized data, validates the HTTP status, and reads the streamed binary response. These helpers support automated RPC interactions in testing.",
        "flow": [
          "Serialize the requested RPC operation as JSON or binary data.",
          "Post to the configured server, applying digest authentication when supplied.",
          "Validate the reply and decode it into the framework’s response format."
        ],
        "scopeNote": "This is the repository’s Python RPC test framework, not Requests implementing Monero’s peer networking, cryptography, or consensus engine.",
        "verification": "code",
        "sources": [
          {
            "label": "JSON and binary RPC test transport",
            "repository": "monero-project/monero",
            "commitSha": "4487cc68f672c48006f7a3e3d1ba6d9ca2233bd0",
            "sourcePath": "utils/python-rpc/framework/rpc.py",
            "lineStart": 55,
            "lineEnd": 95,
            "evidenceUrl": "https://github.com/monero-project/monero/blob/4487cc68f672c48006f7a3e3d1ba6d9ca2233bd0/utils/python-rpc/framework/rpc.py#L55-L95",
            "checkedAt": "2026-10-25T02:52:38Z",
            "sourceSha256": "06e37cd42c35e58eaf95e63adde932e81e4eac5ecf493f13fe062ef88a756959",
            "sourceBlobSha": "b9f35bb68a2dd5308cc366bc28ac1e078ea11ded"
          }
        ]
      }
    },
    {
      "id": "mysten-walrus",
      "organization": "Mysten Labs",
      "project": "Walrus Python web API example",
      "repository": "MystenLabs/walrus",
      "category": "Crypto & Web3",
      "summary": "Walrus' Python example uses Requests to store and read blobs through its web API.",
      "evidenceType": "Code usage",
      "evidenceUrl": "https://github.com/MystenLabs/walrus/blob/6ca7f05def1b173f4c83bfabc0fef32d8241f9fb/docs/examples/python/hello_walrus_webapi.py#L32-L32",
      "sourcePath": "docs/examples/python/hello_walrus_webapi.py",
      "commitSha": "6ca7f05def1b173f4c83bfabc0fef32d8241f9fb",
      "evidenceSnippet": "    response = requests.put(store_url, data=data)",
      "lineStart": 32,
      "lineEnd": 32,
      "checkedAt": "2026-10-25T02:52:38Z",
      "archived": false,
      "sourceBlobSha": "8fc0fcb992b80dd63219ce27ed8b8595ae19e841",
      "sector": "crypto",
      "useScope": "Official code example",
      "avatarSource": "https://avatars.githubusercontent.com/u/88845815?v=4",
      "avatarPath": "/static/observatory/organizations/mysten-walrus.png",
      "ownershipJustification": "The MystenLabs-owned non-fork Walrus repository links docs.wal.app and describes its Sui-based storage project.",
      "defaultBranch": "main",
      "sourceSha256": "2a198570e7679430dde217914574eef303e836ece6492ec71cfa463a0e2f2d6f",
      "usageDetails": {
        "title": "Demonstrating a Walrus blob upload and download",
        "explanation": "An official Walrus Python example uses Requests to communicate with a local Walrus client daemon’s web API. It uploads bytes with a PUT to /v1/blobs and a storage-duration parameter, extracts the returned blob identifier, and downloads that blob with GET. The example generates test data, compares the downloaded bytes with the original content, and reports timing for the round trip.",
        "flow": [
          "Generate test bytes and upload them to the local client daemon.",
          "Read the returned blob identifier and download the stored content.",
          "Compare the returned bytes and report the upload and download timing."
        ],
        "scopeNote": "The evidence is a Python web API example for a local Walrus client, not the storage network’s internal protocol implementation.",
        "verification": "code",
        "sources": [
          {
            "label": "Blob upload and round-trip verification example",
            "repository": "MystenLabs/walrus",
            "commitSha": "6ca7f05def1b173f4c83bfabc0fef32d8241f9fb",
            "sourcePath": "docs/examples/python/hello_walrus_webapi.py",
            "lineStart": 24,
            "lineEnd": 70,
            "evidenceUrl": "https://github.com/MystenLabs/walrus/blob/6ca7f05def1b173f4c83bfabc0fef32d8241f9fb/docs/examples/python/hello_walrus_webapi.py#L24-L70",
            "checkedAt": "2026-10-25T02:52:38Z",
            "sourceSha256": "2a198570e7679430dde217914574eef303e836ece6492ec71cfa463a0e2f2d6f",
            "sourceBlobSha": "8fc0fcb992b80dd63219ce27ed8b8595ae19e841"
          }
        ]
      }
    },
    {
      "id": "nasa-python-cmr",
      "organization": "NASA",
      "project": "Python CMR API client",
      "repository": "nasa/python_cmr",
      "category": "Science & research",
      "sector": "technology",
      "summary": "NASA's Python wrapper for the Common Metadata Repository API declares Requests as a runtime dependency.",
      "useScope": "API client",
      "evidenceType": "Direct dependency",
      "evidenceUrl": "https://github.com/nasa/python_cmr/blob/9f7648ccb925b9c0eb50241e35f15d6454e89505/pyproject.toml#L32-L32",
      "sourcePath": "pyproject.toml",
      "commitSha": "9f7648ccb925b9c0eb50241e35f15d6454e89505",
      "evidenceSnippet": "requests = \"^2.26.0\"",
      "lineStart": 32,
      "lineEnd": 32,
      "checkedAt": "2026-10-25T02:52:46.419Z",
      "archived": false,
      "sourceSha256": "0e6a6bf61b958fcb3b2709084c1073b9fb5e7b7c399ea4869cbbfeda200698d3",
      "sourceBlobSha": "a5ceb05ed6cc06568de4d4f00b2ec50a6d8a424a",
      "avatarSource": "https://avatars.githubusercontent.com/u/848102?v=4",
      "repositoryOwner": "nasa",
      "defaultBranch": "develop",
      "avatarPath": "/static/observatory/organizations/nasa-python-cmr.png",
      "usageDetails": {
        "title": "Searching NASA Earthdata metadata across pages",
        "explanation": "NASA's Python CMR client uses Requests to query the Common Metadata Repository. It builds the search URL from the configured query, sends HTTP GET requests with page-size parameters and headers, and checks each response. JSON entries are collected or yielded to the caller. A continuation header tells the client how to request the next page of matching metadata.",
        "flow": [
          "Build the CMR search URL from the configured query criteria.",
          "Fetch one results page using Requests and check response status.",
          "Return metadata entries and follow the continuation header for additional pages."
        ],
        "scopeNote": "This is a client for searching Earthdata metadata; the shown calls do not download the underlying scientific data files themselves.",
        "verification": "code",
        "sources": [
          {
            "label": "Paginated CMR metadata retrieval",
            "repository": "nasa/python_cmr",
            "commitSha": "9f7648ccb925b9c0eb50241e35f15d6454e89505",
            "sourcePath": "cmr/queries.py",
            "lineStart": 64,
            "lineEnd": 104,
            "evidenceUrl": "https://github.com/nasa/python_cmr/blob/9f7648ccb925b9c0eb50241e35f15d6454e89505/cmr/queries.py#L64-L104",
            "checkedAt": "2026-10-25T03:07:53.844Z",
            "sourceSha256": "1693c72323646ca900f7fb1afcc2a299952308d2bdf30cbd19d9280e3bc16326",
            "sourceBlobSha": "3e4a1f99f3aae149d5ede0764795e40b69e9c37d"
          }
        ]
      }
    },
    {
      "id": "near-metrics",
      "organization": "NEAR Protocol",
      "project": "Nearcore test metrics helper",
      "repository": "near/nearcore",
      "category": "Crypto & Web3",
      "summary": "Nearcore's Python test helper uses Requests to retrieve a node's metrics.",
      "evidenceType": "Code usage",
      "evidenceUrl": "https://github.com/near/nearcore/blob/6ac40f1a7806598f26e8e8593b51b3214b9e3f5f/pytest/lib/metrics.py#L31-L31",
      "sourcePath": "pytest/lib/metrics.py",
      "commitSha": "6ac40f1a7806598f26e8e8593b51b3214b9e3f5f",
      "evidenceSnippet": "        response = requests.get(metrics_url, timeout=10)",
      "lineStart": 31,
      "lineEnd": 31,
      "checkedAt": "2026-10-25T02:52:38Z",
      "archived": false,
      "sourceBlobSha": "6c5b27d5c8868a90b88bf77d5b3d9f04e16e6289",
      "sector": "crypto",
      "useScope": "Tests",
      "avatarSource": "https://avatars.githubusercontent.com/u/7613128?v=4",
      "avatarPath": "/static/observatory/organizations/near-metrics.png",
      "ownershipJustification": "The non-fork near/nearcore repository is the NEAR reference client and links near.org.",
      "defaultBranch": "master",
      "sourceSha256": "b01b5f36d75c7804344785f32cb6c0f113cce5e59b76551bf62101bff2d3e001",
      "usageDetails": {
        "title": "Reading node performance metrics in NEAR tests",
        "explanation": "A NEAR test helper uses Requests to read a node’s Prometheus metrics endpoint from a supplied URL. It checks the HTTP status, decodes the text, and parses the metrics into structured values. The helper extracts processed blocks, transaction counts, memory usage, and timing histograms, making those measurements available to tests that inspect node behavior and performance.",
        "flow": [
          "Fetch the supplied metrics URL with a bounded HTTP timeout.",
          "Validate the response and parse its Prometheus text into structured metrics.",
          "Extract node activity, memory, and timing measurements for test code."
        ],
        "scopeNote": "This evidence is a Python test metrics collector, not Requests carrying NEAR transactions or replacing the node’s peer networking.",
        "verification": "code",
        "sources": [
          {
            "label": "Prometheus metrics retrieval and parsing",
            "repository": "near/nearcore",
            "commitSha": "6ac40f1a7806598f26e8e8593b51b3214b9e3f5f",
            "sourcePath": "pytest/lib/metrics.py",
            "lineStart": 29,
            "lineEnd": 62,
            "evidenceUrl": "https://github.com/near/nearcore/blob/6ac40f1a7806598f26e8e8593b51b3214b9e3f5f/pytest/lib/metrics.py#L29-L62",
            "checkedAt": "2026-10-25T02:52:38Z",
            "sourceSha256": "b01b5f36d75c7804344785f32cb6c0f113cce5e59b76551bf62101bff2d3e001",
            "sourceBlobSha": "6c5b27d5c8868a90b88bf77d5b3d9f04e16e6289"
          }
        ]
      }
    },
    {
      "id": "odoo-erp",
      "organization": "Odoo",
      "project": "Odoo",
      "repository": "odoo/odoo",
      "category": "Enterprise software",
      "sector": "technology",
      "summary": "Odoo's ERP application lists Requests in its Python runtime requirements.",
      "useScope": "Application",
      "evidenceType": "Direct dependency",
      "evidenceUrl": "https://github.com/odoo/odoo/blob/270ff677b63ad41f03000c0e82dbf3a43009049a/requirements.txt#L51-L51",
      "sourcePath": "requirements.txt",
      "commitSha": "270ff677b63ad41f03000c0e82dbf3a43009049a",
      "evidenceSnippet": "requests==2.31.0 ; python_version >= '3.11' # (Noble)",
      "lineStart": 51,
      "lineEnd": 51,
      "checkedAt": "2026-10-25T02:52:47.465Z",
      "archived": false,
      "sourceSha256": "ccda41a05218bb913c4e5053e1a58ae08155c1abd7cc5c719c924251836204a2",
      "sourceBlobSha": "53268bdca3390daf45e21517ac11c456695b59c0",
      "avatarSource": "https://avatars.githubusercontent.com/u/6368483?v=4",
      "repositoryOwner": "odoo",
      "defaultBranch": "20.0",
      "avatarPath": "/static/observatory/organizations/odoo-erp.png",
      "usageDetails": {
        "title": "Searching Unsplash images inside Odoo integrations",
        "explanation": "Odoo's Unsplash integration uses Requests to search for images. It reads configured Unsplash access credentials, filters incoming search options to supported fields, and sends an authenticated GET to the photo-search API with a timeout. A successful response returns image-search JSON to Odoo; configuration or HTTP failures produce an error result for the integration to handle.",
        "flow": [
          "Read Unsplash credentials and filter the requested photo-search options.",
          "Send an authenticated search request with Requests and a timeout.",
          "Return image-search JSON or an error result to the integration."
        ],
        "scopeNote": "This is the web_unsplash add-on in Odoo; it does not imply that every Odoo installation enables this integration.",
        "verification": "code",
        "sources": [
          {
            "label": "Unsplash photo-search integration",
            "repository": "odoo/odoo",
            "commitSha": "270ff677b63ad41f03000c0e82dbf3a43009049a",
            "sourcePath": "addons/web_unsplash/models/ir_attachment.py",
            "lineStart": 20,
            "lineEnd": 46,
            "evidenceUrl": "https://github.com/odoo/odoo/blob/270ff677b63ad41f03000c0e82dbf3a43009049a/addons/web_unsplash/models/ir_attachment.py#L20-L46",
            "checkedAt": "2026-10-25T03:07:54.910Z",
            "sourceSha256": "b54e81ca843965ec4b0fd44fa8e68a54d356e3477e139098745258a56fdfc1ee",
            "sourceBlobSha": "32c7f3bc7ee539612d8a355556a37ed164a7602e"
          }
        ]
      }
    },
    {
      "id": "openstack-keystoneauth",
      "organization": "OpenStack",
      "project": "Keystoneauth",
      "repository": "openstack/keystoneauth",
      "category": "Cloud & platforms",
      "sector": "technology",
      "summary": "OpenStack's Keystone authentication library creates a Requests session for its HTTP transport.",
      "useScope": "SDK",
      "evidenceType": "Code usage",
      "evidenceUrl": "https://github.com/openstack/keystoneauth/blob/f89bb1a725150f415fab183770d3f426d6bce3dd/keystoneauth1/session.py#L88-L88",
      "sourcePath": "keystoneauth1/session.py",
      "commitSha": "f89bb1a725150f415fab183770d3f426d6bce3dd",
      "evidenceSnippet": "        session_obj = requests.Session()",
      "lineStart": 88,
      "lineEnd": 88,
      "checkedAt": "2026-10-25T02:52:45.332Z",
      "archived": false,
      "sourceSha256": "d557360256e658e113e1407757a166f358caa925805f1e274364ed2deb065cce",
      "sourceBlobSha": "697f29784daa964a33f5dafb4048c601d8f0db3b",
      "avatarSource": "https://avatars.githubusercontent.com/u/324574?v=4",
      "repositoryOwner": "openstack",
      "defaultBranch": "master",
      "avatarPath": "/static/observatory/organizations/openstack-keystoneauth.png",
      "usageDetails": {
        "title": "Authenticating and sending OpenStack service requests",
        "explanation": "OpenStack's Keystoneauth library uses Requests as the network layer beneath its authentication-aware session. Before sending an authenticated call, it obtains authentication headers and adds them to the outgoing message. Its send helper delegates the HTTP exchange to a Requests session and translates connection, timeout, and TLS failures into Keystoneauth errors that calling OpenStack clients can handle.",
        "flow": [
          "Obtain authentication headers and attach them to the outgoing call.",
          "Send the service request through the underlying Requests session.",
          "Return the response or translate network failures into client exceptions."
        ],
        "scopeNote": "This describes the Keystoneauth client library, not the internals of every OpenStack service or a census of deployed clouds.",
        "verification": "code",
        "sources": [
          {
            "label": "Adding authentication headers",
            "repository": "openstack/keystoneauth",
            "commitSha": "f89bb1a725150f415fab183770d3f426d6bce3dd",
            "sourcePath": "keystoneauth1/session.py",
            "lineStart": 916,
            "lineEnd": 926,
            "evidenceUrl": "https://github.com/openstack/keystoneauth/blob/f89bb1a725150f415fab183770d3f426d6bce3dd/keystoneauth1/session.py#L916-L926",
            "checkedAt": "2026-10-25T03:07:55.960Z",
            "sourceSha256": "d557360256e658e113e1407757a166f358caa925805f1e274364ed2deb065cce",
            "sourceBlobSha": "697f29784daa964a33f5dafb4048c601d8f0db3b"
          },
          {
            "label": "Requests transport and error translation",
            "repository": "openstack/keystoneauth",
            "commitSha": "f89bb1a725150f415fab183770d3f426d6bce3dd",
            "sourcePath": "keystoneauth1/session.py",
            "lineStart": 1158,
            "lineEnd": 1206,
            "evidenceUrl": "https://github.com/openstack/keystoneauth/blob/f89bb1a725150f415fab183770d3f426d6bce3dd/keystoneauth1/session.py#L1158-L1206",
            "checkedAt": "2026-10-25T03:07:55.960Z",
            "sourceSha256": "d557360256e658e113e1407757a166f358caa925805f1e274364ed2deb065cce",
            "sourceBlobSha": "697f29784daa964a33f5dafb4048c601d8f0db3b"
          }
        ]
      }
    },
    {
      "id": "optimism-analytics",
      "organization": "Optimism",
      "project": "OP Analytics GitHub helper",
      "repository": "ethereum-optimism/op-analytics",
      "category": "Crypto & Web3",
      "summary": "An OP Analytics utility uses Requests to retrieve file information from GitHub.",
      "evidenceType": "Code usage",
      "evidenceUrl": "https://github.com/ethereum-optimism/op-analytics/blob/dff6ff52a6256083d25d3122162d736c402eb33b/helper_functions/github_utils.py#L26-L26",
      "sourcePath": "helper_functions/github_utils.py",
      "commitSha": "dff6ff52a6256083d25d3122162d736c402eb33b",
      "evidenceSnippet": "    inf = requests.get(req_api)",
      "lineStart": 26,
      "lineEnd": 26,
      "checkedAt": "2026-10-25T02:52:38Z",
      "archived": false,
      "sourceBlobSha": "b5293a018e16dd23474496b3aa5cfcda2b90ed5e",
      "sector": "crypto",
      "useScope": "Analytics tooling",
      "avatarSource": "https://avatars.githubusercontent.com/u/58791460?v=4",
      "avatarPath": "/static/observatory/organizations/optimism-analytics.png",
      "ownershipJustification": "The non-fork repository is owned by ethereum-optimism and describes analytics utilities for Optimism.",
      "defaultBranch": "main",
      "sourceSha256": "179c5b64c1761615f3d3518981e0b072481a8f73535d5632adf2b3ed75d9adb7",
      "usageDetails": {
        "title": "Resolving GitHub file URLs for analytics",
        "explanation": "An Optimism analytics helper uses Requests to call GitHub’s repository contents API. The caller supplies a repository owner, repository name, and file path; the helper constructs the API URL and decodes the response JSON. It returns GitHub’s download_url field so other code can locate the file. The active function resolves that URL; the separate download code shown below it is commented out.",
        "flow": [
          "Receive the repository owner, repository name, and requested file path.",
          "Fetch file metadata from GitHub’s repository contents API using Requests.",
          "Return the download URL contained in the decoded metadata response."
        ],
        "scopeNote": "The verified use is a repository metadata helper in analytics tooling, not the Optimism node, sequencer, or bridge transport.",
        "verification": "code",
        "sources": [
          {
            "label": "GitHub contents API URL resolver",
            "repository": "ethereum-optimism/op-analytics",
            "commitSha": "dff6ff52a6256083d25d3122162d736c402eb33b",
            "sourcePath": "helper_functions/github_utils.py",
            "lineStart": 7,
            "lineEnd": 30,
            "evidenceUrl": "https://github.com/ethereum-optimism/op-analytics/blob/dff6ff52a6256083d25d3122162d736c402eb33b/helper_functions/github_utils.py#L7-L30",
            "checkedAt": "2026-10-25T02:52:38Z",
            "sourceSha256": "179c5b64c1761615f3d3518981e0b072481a8f73535d5632adf2b3ed75d9adb7",
            "sourceBlobSha": "b5293a018e16dd23474496b3aa5cfcda2b90ed5e"
          }
        ]
      }
    },
    {
      "id": "ovh-python-api",
      "organization": "OVHcloud",
      "project": "OVHcloud Python API client",
      "repository": "ovh/python-ovh",
      "category": "Cloud & platforms",
      "sector": "technology",
      "summary": "OVHcloud's API client creates a Requests session to reuse HTTPS connections.",
      "useScope": "SDK",
      "evidenceType": "Code usage",
      "evidenceUrl": "https://github.com/ovh/python-ovh/blob/3a1485d0563916f449fddfe86fa1e5a93c0e1b3b/ovh/client.py#L242-L243",
      "sourcePath": "ovh/client.py",
      "commitSha": "3a1485d0563916f449fddfe86fa1e5a93c0e1b3b",
      "evidenceSnippet": "        # use a requests session to reuse HTTPS connections between requests\n        self._session = Session()",
      "lineStart": 242,
      "lineEnd": 243,
      "checkedAt": "2026-10-25T02:52:28.097Z",
      "archived": false,
      "sourceSha256": "ed99975772144e3ed068acd2bc7ff242f77db93ffa02f4f98bbfd856c6ea4d72",
      "sourceBlobSha": "2489cfc0f5045e2b647ef5b69787b40656583daa",
      "avatarSource": "https://avatars.githubusercontent.com/u/1698434?v=4",
      "repositoryOwner": "ovh",
      "defaultBranch": "master",
      "avatarPath": "/static/observatory/organizations/ovh-python-api.png",
      "usageDetails": {
        "title": "Sending signed OVHcloud API operation requests",
        "explanation": "OVHcloud's Python API client uses a Requests session to send API operations. In its application-key authentication path, it builds the target URL, serializes any JSON body, computes an authentication signature, and adds the required headers. The session then sends the selected HTTP method with the configured timeout and returns the response to the API client.",
        "flow": [
          "Build the OVHcloud endpoint URL and serialize any JSON body.",
          "Calculate the request signature and attach application authentication headers.",
          "Send the operation through Requests with the configured client timeout."
        ],
        "scopeNote": "This details the application-key path of the Python client; the same file also offers a separately configured OAuth authentication path.",
        "verification": "code",
        "sources": [
          {
            "label": "Signing and sending API operations",
            "repository": "ovh/python-ovh",
            "commitSha": "3a1485d0563916f449fddfe86fa1e5a93c0e1b3b",
            "sourcePath": "ovh/client.py",
            "lineStart": 583,
            "lineEnd": 618,
            "evidenceUrl": "https://github.com/ovh/python-ovh/blob/3a1485d0563916f449fddfe86fa1e5a93c0e1b3b/ovh/client.py#L583-L618",
            "checkedAt": "2026-10-25T03:07:57.034Z",
            "sourceSha256": "ed99975772144e3ed068acd2bc7ff242f77db93ffa02f4f98bbfd856c6ea4d72",
            "sourceBlobSha": "2489cfc0f5045e2b647ef5b69787b40656583daa"
          }
        ]
      }
    },
    {
      "id": "paddleocr",
      "organization": "PaddlePaddle",
      "project": "PaddleOCR",
      "repository": "PaddlePaddle/PaddleOCR",
      "category": "AI & data",
      "sector": "technology",
      "summary": "PaddleOCR declares Requests among its runtime package dependencies.",
      "useScope": "Library",
      "evidenceType": "Direct dependency",
      "sourcePath": "pyproject.toml",
      "commitSha": "dab3fe35379033fdcb2d0e9572fac0b36c9a9ebf",
      "lineStart": 52,
      "lineEnd": 52,
      "checkedAt": "2026-10-25T02:51:47.374Z",
      "archived": false,
      "sourceBlobSha": "184dec7f58fcb8ca40c06128adbba7cc1ea9af74",
      "avatarSource": "https://avatars.githubusercontent.com/u/23534030?v=4",
      "sourceSha256": "63e8bfa19e197e47649a95dad422bcb09c1d2959367cafd40b0a7f19e4452412",
      "evidenceSnippet": "    \"requests\",",
      "evidenceUrl": "https://github.com/PaddlePaddle/PaddleOCR/blob/dab3fe35379033fdcb2d0e9572fac0b36c9a9ebf/pyproject.toml#L52-L52",
      "repositoryOwner": "PaddlePaddle",
      "defaultBranch": "main",
      "avatarPath": "/static/observatory/organizations/paddleocr.jpg",
      "usageDetails": {
        "title": "Submitting document-processing jobs and fetching their results",
        "explanation": "PaddleOCR's API client creates a Requests session with bearer authentication for its configured processing service. It can submit a document URL or upload a local file, then retrieve job or batch status. A separate Requests GET downloads the result JSONL from its result URL and parses each nonempty line into an object returned to the caller.",
        "flow": [
          "Submit a document URL or file through the authenticated Requests session.",
          "Retrieve the submitted job or batch status from the API.",
          "Download the result JSONL and parse its individual result records."
        ],
        "scopeNote": "This is PaddleOCR's remote-service client; it does not establish Requests as the implementation of local OCR model inference.",
        "verification": "code",
        "sources": [
          {
            "label": "Authenticated job submission, status and JSONL results",
            "repository": "PaddlePaddle/PaddleOCR",
            "commitSha": "dab3fe35379033fdcb2d0e9572fac0b36c9a9ebf",
            "sourcePath": "paddleocr/_api_client/_http.py",
            "lineStart": 75,
            "lineEnd": 201,
            "evidenceUrl": "https://github.com/PaddlePaddle/PaddleOCR/blob/dab3fe35379033fdcb2d0e9572fac0b36c9a9ebf/paddleocr/_api_client/_http.py#L75-L201",
            "checkedAt": "2026-10-25T03:10:40.622918Z",
            "sourceSha256": "339610b9c8f1ad2d0a05b4b329aec28581f778cd91f8d04c99509d235cd0d30a",
            "sourceBlobSha": "26a1e3206bc23bfbc9395da50bba22d5d5bf7d22"
          }
        ]
      }
    },
    {
      "id": "poetry-package-manager",
      "organization": "Poetry",
      "project": "Poetry",
      "repository": "python-poetry/poetry",
      "category": "Developer tools",
      "sector": "technology",
      "summary": "Poetry's dependency-management application declares Requests as a runtime dependency.",
      "useScope": "Application",
      "evidenceType": "Direct dependency",
      "evidenceUrl": "https://github.com/python-poetry/poetry/blob/f7794d4787fdf201d25b61f33aa8e990a54d54d0/pyproject.toml#L20-L20",
      "sourcePath": "pyproject.toml",
      "commitSha": "f7794d4787fdf201d25b61f33aa8e990a54d54d0",
      "evidenceSnippet": "    \"requests (>=2.26,<3.0)\",",
      "lineStart": 20,
      "lineEnd": 20,
      "checkedAt": "2026-10-25T02:52:38.994Z",
      "archived": false,
      "sourceSha256": "ed9e227d0e63195b4fcbccb812a2632b412b2957b5647217d94747aeccb166e1",
      "sourceBlobSha": "20fbbb15eec7e66a39a126c5da99b16944857f50",
      "avatarSource": "https://avatars.githubusercontent.com/u/48722593?v=4",
      "repositoryOwner": "python-poetry",
      "defaultBranch": "main",
      "avatarPath": "/static/observatory/organizations/poetry-package-manager.png",
      "usageDetails": {
        "title": "Authenticating HTTP calls to package repositories",
        "explanation": "Poetry uses Requests in its repository-aware HTTP authenticator. It finds credentials for the destination, constructs a request with optional basic authentication, and prepares it in a reusable session. The sender applies certificate, proxy, streaming, and timeout settings before the network exchange. It returns successful responses and retries selected temporary failures, helping package-repository interactions work with public or authenticated sources.",
        "flow": [
          "Resolve repository credentials and prepare the authenticated HTTP request.",
          "Apply certificate, proxy, and timeout settings before sending through Requests.",
          "Return the response or retry eligible temporary connection and server failures."
        ],
        "scopeNote": "This is Poetry application networking for repository interactions, not a claim that packages installed by Poetry themselves use Requests.",
        "verification": "code",
        "sources": [
          {
            "label": "Preparing authenticated repository calls",
            "repository": "python-poetry/poetry",
            "commitSha": "f7794d4787fdf201d25b61f33aa8e990a54d54d0",
            "sourcePath": "src/poetry/utils/authenticator.py",
            "lineStart": 214,
            "lineEnd": 247,
            "evidenceUrl": "https://github.com/python-poetry/poetry/blob/f7794d4787fdf201d25b61f33aa8e990a54d54d0/src/poetry/utils/authenticator.py#L214-L247",
            "checkedAt": "2026-10-25T03:07:58.089Z",
            "sourceSha256": "d2eeb4267c25146b7058e623eae21bdea972d8a33f6cac4e05c34fcc65119ed9",
            "sourceBlobSha": "c33ae69fc955dc6cf92e8abafeee84abd6863e9e"
          },
          {
            "label": "Sending and retrying requests",
            "repository": "python-poetry/poetry",
            "commitSha": "f7794d4787fdf201d25b61f33aa8e990a54d54d0",
            "sourcePath": "src/poetry/utils/authenticator.py",
            "lineStart": 249,
            "lineEnd": 297,
            "evidenceUrl": "https://github.com/python-poetry/poetry/blob/f7794d4787fdf201d25b61f33aa8e990a54d54d0/src/poetry/utils/authenticator.py#L249-L297",
            "checkedAt": "2026-10-25T03:07:58.089Z",
            "sourceSha256": "d2eeb4267c25146b7058e623eae21bdea972d8a33f6cac4e05c34fcc65119ed9",
            "sourceBlobSha": "c33ae69fc955dc6cf92e8abafeee84abd6863e9e"
          }
        ]
      }
    },
    {
      "id": "jupyter-jupyterhub",
      "organization": "Project Jupyter",
      "project": "JupyterHub",
      "repository": "jupyterhub/jupyterhub",
      "category": "AI & data",
      "sector": "technology",
      "summary": "JupyterHub lists Requests among its application requirements.",
      "useScope": "Application",
      "evidenceType": "Direct dependency",
      "evidenceUrl": "https://github.com/jupyterhub/jupyterhub/blob/4224d01251779a37112d8ae26dc384244d31cb77/requirements.txt#L15-L15",
      "sourcePath": "requirements.txt",
      "commitSha": "4224d01251779a37112d8ae26dc384244d31cb77",
      "evidenceSnippet": "requests",
      "lineStart": 15,
      "lineEnd": 15,
      "checkedAt": "2026-10-25T02:52:40.052Z",
      "archived": false,
      "sourceSha256": "81a0873205dc74736581db7c8a4c0a9d58ab1fb2cebae2513afc99d1afedb527",
      "sourceBlobSha": "5af21a5993bdcb40d09b3a2c4e625008298aefe1",
      "avatarSource": "https://avatars.githubusercontent.com/u/17927519?v=4",
      "repositoryOwner": "jupyterhub",
      "defaultBranch": "main",
      "avatarPath": "/static/observatory/organizations/jupyter-jupyterhub.png",
      "usageDetails": {
        "title": "Demonstrating notebook server control through HTTP",
        "explanation": "JupyterHub includes an official example that uses Requests to control a user's notebook server through the Hub API. It creates a session carrying a service token, checks the user's server state, posts a start command, and reads progress events until ready. The example later sends a delete request and polls until the server has stopped.",
        "flow": [
          "Create a Requests session carrying the JupyterHub service API token.",
          "Check the user state, start a server, and read progress events.",
          "Request server shutdown and poll until the server has stopped."
        ],
        "scopeNote": "This demonstrates the repository example client; it does not show the Hub server using Requests for its internal traffic.",
        "verification": "code",
        "sources": [
          {
            "label": "Example session and server startup",
            "repository": "jupyterhub/jupyterhub",
            "commitSha": "4224d01251779a37112d8ae26dc384244d31cb77",
            "sourcePath": "examples/server-api/start-stop-server.py",
            "lineStart": 36,
            "lineEnd": 111,
            "evidenceUrl": "https://github.com/jupyterhub/jupyterhub/blob/4224d01251779a37112d8ae26dc384244d31cb77/examples/server-api/start-stop-server.py#L36-L111",
            "checkedAt": "2026-10-25T03:07:59.148Z",
            "sourceSha256": "1b5bed78c9830bd8e4a37c0a9a75dab1d9062f2ac62b8baffee4f48f6aee0d8a",
            "sourceBlobSha": "3fbb94a7b718255dc864d8ee2ffa3e626eb2fc9a"
          },
          {
            "label": "Example server shutdown",
            "repository": "jupyterhub/jupyterhub",
            "commitSha": "4224d01251779a37112d8ae26dc384244d31cb77",
            "sourcePath": "examples/server-api/start-stop-server.py",
            "lineStart": 115,
            "lineEnd": 150,
            "evidenceUrl": "https://github.com/jupyterhub/jupyterhub/blob/4224d01251779a37112d8ae26dc384244d31cb77/examples/server-api/start-stop-server.py#L115-L150",
            "checkedAt": "2026-10-25T03:07:59.148Z",
            "sourceSha256": "1b5bed78c9830bd8e4a37c0a9a75dab1d9062f2ac62b8baffee4f48f6aee0d8a",
            "sourceBlobSha": "3fbb94a7b718255dc864d8ee2ffa3e626eb2fc9a"
          }
        ]
      }
    },
    {
      "id": "pyth-observer",
      "organization": "Pyth Network",
      "project": "Pyth Observer mapping tool",
      "repository": "pyth-network/pyth-observer",
      "category": "Crypto & Web3",
      "summary": "Pyth Observer's mapping script uses Requests to fetch Hermes price-feed metadata.",
      "evidenceType": "Code usage",
      "evidenceUrl": "https://github.com/pyth-network/pyth-observer/blob/1a1f839fbedbad778575c464b681c3784a663ac9/scripts/build_coingecko_mapping.py#L352-L352",
      "sourcePath": "scripts/build_coingecko_mapping.py",
      "commitSha": "1a1f839fbedbad778575c464b681c3784a663ac9",
      "evidenceSnippet": "        response = requests.get(HERMES_API_URL, timeout=30)",
      "lineStart": 352,
      "lineEnd": 352,
      "checkedAt": "2026-10-25T02:52:38Z",
      "archived": false,
      "sourceBlobSha": "0cfa5fe00a3bf8f6bf968878783a35e71259893f",
      "sector": "crypto",
      "useScope": "Monitoring tooling",
      "avatarSource": "https://avatars.githubusercontent.com/u/75637738?v=4",
      "avatarPath": "/static/observatory/organizations/pyth-observer.jpg",
      "ownershipJustification": "The non-fork pyth-network/pyth-observer repository links pyth.network and describes monitoring on-chain Pyth data.",
      "defaultBranch": "main",
      "sourceSha256": "9e7e2afafa84f3c98faa3e89360b9da7ccea230bc223b7b02e162e5da47e346e",
      "usageDetails": {
        "title": "Fetching Hermes data for asset mapping",
        "explanation": "Pyth Observer’s mapping script uses Requests to fetch feed metadata and latest price updates from the Hermes API. It decodes the responses, batches price queries by feed identifier, and converts price values using their exponents. The wider script matches Pyth assets with CoinGecko entries to build a mapping file. The verified Requests calls supply Hermes data for this monitoring support workflow.",
        "flow": [
          "Fetch the list of price feeds and decode their metadata.",
          "Request latest Hermes prices in batches of selected feed identifiers.",
          "Normalize returned prices for the script’s asset mapping support workflow."
        ],
        "scopeNote": "This is an observer support script that reads public API data, not evidence that Requests publishes Pyth prices onchain.",
        "verification": "code",
        "sources": [
          {
            "label": "Mapping script purpose and API configuration",
            "repository": "pyth-network/pyth-observer",
            "commitSha": "1a1f839fbedbad778575c464b681c3784a663ac9",
            "sourcePath": "scripts/build_coingecko_mapping.py",
            "lineStart": 1,
            "lineEnd": 31,
            "evidenceUrl": "https://github.com/pyth-network/pyth-observer/blob/1a1f839fbedbad778575c464b681c3784a663ac9/scripts/build_coingecko_mapping.py#L1-L31",
            "checkedAt": "2026-10-25T02:52:38Z",
            "sourceSha256": "9e7e2afafa84f3c98faa3e89360b9da7ccea230bc223b7b02e162e5da47e346e",
            "sourceBlobSha": "0cfa5fe00a3bf8f6bf968878783a35e71259893f"
          },
          {
            "label": "Hermes feed metadata and latest prices",
            "repository": "pyth-network/pyth-observer",
            "commitSha": "1a1f839fbedbad778575c464b681c3784a663ac9",
            "sourcePath": "scripts/build_coingecko_mapping.py",
            "lineStart": 348,
            "lineEnd": 421,
            "evidenceUrl": "https://github.com/pyth-network/pyth-observer/blob/1a1f839fbedbad778575c464b681c3784a663ac9/scripts/build_coingecko_mapping.py#L348-L421",
            "checkedAt": "2026-10-25T02:52:38Z",
            "sourceSha256": "9e7e2afafa84f3c98faa3e89360b9da7ccea230bc223b7b02e162e5da47e346e",
            "sourceBlobSha": "0cfa5fe00a3bf8f6bf968878783a35e71259893f"
          }
        ]
      }
    },
    {
      "id": "pypa-pip",
      "organization": "Python Packaging Authority",
      "project": "pip",
      "repository": "pypa/pip",
      "category": "Developer tools",
      "sector": "technology",
      "summary": "pip's network session extends the Requests session from its bundled copy of the library.",
      "useScope": "Application",
      "evidenceType": "Vendored library",
      "evidenceUrl": "https://github.com/pypa/pip/blob/0d09686649a97c2dd304322b191e44eb06ab4d44/src/pip/_internal/network/session.py#L306-L306",
      "sourcePath": "src/pip/_internal/network/session.py",
      "commitSha": "0d09686649a97c2dd304322b191e44eb06ab4d44",
      "evidenceSnippet": "class PipSession(requests.Session):",
      "lineStart": 306,
      "lineEnd": 306,
      "checkedAt": "2026-10-25T02:52:36.887Z",
      "archived": false,
      "sourceSha256": "538a3dbe2e6bbfba57a0811ace0e37b3dc5fde10e748a2fff9e24c2d2ea8fbd7",
      "sourceBlobSha": "6f03456fad3662a3e8d623e62443148e0c19e99a",
      "avatarSource": "https://avatars.githubusercontent.com/u/647025?v=4",
      "repositoryOwner": "pypa",
      "defaultBranch": "main",
      "avatarPath": "/static/observatory/organizations/pypa-pip.png",
      "usageDetails": {
        "title": "Downloading Python package files over HTTP",
        "explanation": "pip uses its bundled copy of Requests to download package files. Its download helper sends a streaming GET through PipSession, checks HTTP errors, and returns the response for download processing. When resuming an interrupted transfer, it adds a byte-range header and, when possible, a file-version condition. This supports package retrieval while pip handles the installation workflow around it.",
        "flow": [
          "Choose the package-file URL and prepare normal or resume headers.",
          "Fetch the file as a stream through the Requests-based PipSession.",
          "Check HTTP errors and pass the response into download processing."
        ],
        "scopeNote": "pip vendors Requests inside its distribution, so this usage need not create a separate Requests package download from PyPI.",
        "verification": "code",
        "sources": [
          {
            "label": "PipSession extends Requests",
            "repository": "pypa/pip",
            "commitSha": "0d09686649a97c2dd304322b191e44eb06ab4d44",
            "sourcePath": "src/pip/_internal/network/session.py",
            "lineStart": 306,
            "lineEnd": 325,
            "evidenceUrl": "https://github.com/pypa/pip/blob/0d09686649a97c2dd304322b191e44eb06ab4d44/src/pip/_internal/network/session.py#L306-L325",
            "checkedAt": "2026-10-25T03:08:59.598Z",
            "sourceSha256": "538a3dbe2e6bbfba57a0811ace0e37b3dc5fde10e748a2fff9e24c2d2ea8fbd7",
            "sourceBlobSha": "6f03456fad3662a3e8d623e62443148e0c19e99a"
          },
          {
            "label": "Streaming and resumable package fetches",
            "repository": "pypa/pip",
            "commitSha": "0d09686649a97c2dd304322b191e44eb06ab4d44",
            "sourcePath": "src/pip/_internal/network/download.py",
            "lineStart": 367,
            "lineEnd": 392,
            "evidenceUrl": "https://github.com/pypa/pip/blob/0d09686649a97c2dd304322b191e44eb06ab4d44/src/pip/_internal/network/download.py#L367-L392",
            "checkedAt": "2026-10-25T03:08:00.202Z",
            "sourceSha256": "fb5d5276a3bf77eb87f9b19d2c6bf52b18d0b0e46bae4f482cac9b714b78aa18",
            "sourceBlobSha": "2c59925a119daa6e7978c8dc328a9bfe39907c00"
          }
        ]
      }
    },
    {
      "id": "pytorch-ci-stats",
      "organization": "PyTorch",
      "project": "Workflow statistics helper",
      "repository": "pytorch/pytorch",
      "category": "AI & data",
      "sector": "technology",
      "summary": "PyTorch's statistics helper downloads GitHub workflow artifacts using Requests.",
      "useScope": "CI tooling",
      "evidenceType": "Code usage",
      "sourcePath": "tools/stats/upload_stats_lib.py",
      "commitSha": "c9b5004c45376c912422325d032b2d74b4828d5c",
      "lineStart": 87,
      "lineEnd": 87,
      "checkedAt": "2026-10-25T02:51:47.374Z",
      "archived": false,
      "sourceBlobSha": "5b960122cb360faeb204137c20a18c029238cf32",
      "avatarSource": "https://avatars.githubusercontent.com/u/21003710?v=4",
      "sourceSha256": "2d07eef648ce848957f9c4b16d964312a62002a986486d9be5b401fbdbb6ef29",
      "evidenceSnippet": "    response = requests.get(artifact_url, headers=_get_request_headers())",
      "evidenceUrl": "https://github.com/pytorch/pytorch/blob/c9b5004c45376c912422325d032b2d74b4828d5c/tools/stats/upload_stats_lib.py#L87-L87",
      "repositoryOwner": "pytorch",
      "defaultBranch": "main",
      "avatarPath": "/static/observatory/organizations/pytorch-ci-stats.jpg",
      "usageDetails": {
        "title": "Downloading workflow artifacts for CI statistics",
        "explanation": "PyTorch's statistics helper uses Requests to call GitHub's workflow-artifacts API with authentication supplied by the CI environment. It follows pagination and selects artifacts whose names match a requested prefix. Another Requests call downloads the selected archive bytes to a local file, making those workflow outputs available to the statistics-processing tools.",
        "flow": [
          "Request workflow artifact listings from GitHub using the CI authentication header.",
          "Follow result pages and select artifact names matching the requested prefix.",
          "Download the selected archive with Requests and save its bytes locally."
        ],
        "scopeNote": "This code supports PyTorch's CI statistics workflow; it is not evidence that training, autograd or tensor operations depend on HTTP calls.",
        "verification": "code",
        "sources": [
          {
            "label": "Workflow artifact listing and download",
            "repository": "pytorch/pytorch",
            "commitSha": "c9b5004c45376c912422325d032b2d74b4828d5c",
            "sourcePath": "tools/stats/upload_stats_lib.py",
            "lineStart": 38,
            "lineEnd": 90,
            "evidenceUrl": "https://github.com/pytorch/pytorch/blob/c9b5004c45376c912422325d032b2d74b4828d5c/tools/stats/upload_stats_lib.py#L38-L90",
            "checkedAt": "2026-10-25T03:10:40.622918Z",
            "sourceSha256": "2d07eef648ce848957f9c4b16d964312a62002a986486d9be5b401fbdbb6ef29",
            "sourceBlobSha": "5b960122cb360faeb204137c20a18c029238cf32"
          }
        ]
      }
    },
    {
      "id": "qdrant-fastembed",
      "organization": "Qdrant",
      "project": "FastEmbed",
      "repository": "qdrant/fastembed",
      "category": "AI & data",
      "sector": "technology",
      "summary": "Qdrant's FastEmbed embedding library declares Requests as a runtime dependency.",
      "useScope": "Library",
      "evidenceType": "Direct dependency",
      "sourcePath": "pyproject.toml",
      "commitSha": "b105723f06ae0c1814dea6557637068cb77463c3",
      "lineStart": 30,
      "lineEnd": 30,
      "checkedAt": "2026-10-25T02:51:47.374Z",
      "archived": false,
      "sourceBlobSha": "8193a9c7788364d0bf8bc4a55a690e0d0e3d15ad",
      "avatarSource": "https://avatars.githubusercontent.com/u/73504361?v=4",
      "sourceSha256": "b584f43acef851601529cf067ac55dade569ed17c7b0cc9b030ef90434ea5b7b",
      "evidenceSnippet": "    \"requests>=2.31,<3\",",
      "evidenceUrl": "https://github.com/qdrant/fastembed/blob/b105723f06ae0c1814dea6557637068cb77463c3/pyproject.toml#L30-L30",
      "repositoryOwner": "qdrant",
      "defaultBranch": "main",
      "avatarPath": "/static/observatory/organizations/qdrant-fastembed.png",
      "usageDetails": {
        "title": "Retrieving model archives from explicit URL sources",
        "explanation": "FastEmbed retains an archive-download path for models with an explicit URL source. Its downloader uses Requests to stream the archive into a local file, checks HTTP failures and updates progress while writing chunks. The model-management layer can then unpack that archive into its cache. This is separate from the preferred Hugging Face path used by the built-in model sources.",
        "flow": [
          "Select the explicit URL source when the model's download path requires it.",
          "Stream the archive with Requests while checking errors and writing chunks.",
          "Unpack the downloaded archive into the model's local cache."
        ],
        "scopeNote": "This is the explicit URL and legacy-cache path; the code notes built-in models are no longer downloaded from the old bucket.",
        "verification": "code",
        "sources": [
          {
            "label": "Requests-based model archive streaming",
            "repository": "qdrant/fastembed",
            "commitSha": "b105723f06ae0c1814dea6557637068cb77463c3",
            "sourcePath": "fastembed/common/model_management.py",
            "lineStart": 126,
            "lineEnd": 171,
            "evidenceUrl": "https://github.com/qdrant/fastembed/blob/b105723f06ae0c1814dea6557637068cb77463c3/fastembed/common/model_management.py#L126-L171",
            "checkedAt": "2026-10-25T03:10:40.622918Z",
            "sourceSha256": "97d41fcecba2e68d74fd20dbda1a10308f0d4a6218b71b9cedd39445d1a7be09",
            "sourceBlobSha": "583bef5ae15ce822b24503f20b80eac2ad5f33eb"
          },
          {
            "label": "Archive cache and source-selection behavior",
            "repository": "qdrant/fastembed",
            "commitSha": "b105723f06ae0c1814dea6557637068cb77463c3",
            "sourcePath": "fastembed/common/model_management.py",
            "lineStart": 527,
            "lineEnd": 740,
            "evidenceUrl": "https://github.com/qdrant/fastembed/blob/b105723f06ae0c1814dea6557637068cb77463c3/fastembed/common/model_management.py#L527-L740",
            "checkedAt": "2026-10-25T03:10:40.622918Z",
            "sourceSha256": "97d41fcecba2e68d74fd20dbda1a10308f0d4a6218b71b9cedd39445d1a7be09",
            "sourceBlobSha": "583bef5ae15ce822b24503f20b80eac2ad5f33eb"
          }
        ]
      }
    },
    {
      "id": "ray-dashboard-sdk",
      "organization": "Ray",
      "project": "Dashboard submission client",
      "repository": "ray-project/ray",
      "category": "AI & data",
      "sector": "technology",
      "summary": "Ray's dashboard submission client sends authenticated HTTP calls with Requests.",
      "useScope": "SDK",
      "evidenceType": "Code usage",
      "sourcePath": "python/ray/dashboard/modules/dashboard_sdk.py",
      "commitSha": "8d53e59e3da91a39beb6b1b614265cf05d3d26a4",
      "lineStart": 326,
      "lineEnd": 332,
      "checkedAt": "2026-10-25T02:51:47.373Z",
      "archived": false,
      "sourceBlobSha": "3fe82e37d20570aa712bb57eb9f6ded84ec17368",
      "avatarSource": "https://avatars.githubusercontent.com/u/22125274?v=4",
      "sourceSha256": "a3b8512b33a4952d482b17261dcd606936e52077a28168cad76f46acead4da5b",
      "evidenceSnippet": "        response = requests.request(\n            method,\n            url,\n            cookies=self._cookies,\n            data=data,\n            json=json_data,\n            headers=self._headers,",
      "evidenceUrl": "https://github.com/ray-project/ray/blob/8d53e59e3da91a39beb6b1b614265cf05d3d26a4/python/ray/dashboard/modules/dashboard_sdk.py#L326-L332",
      "repositoryOwner": "ray-project",
      "defaultBranch": "master",
      "avatarPath": "/static/observatory/organizations/ray-dashboard-sdk.png",
      "usageDetails": {
        "title": "Uploading runtime packages to a Ray cluster",
        "explanation": "Ray's dashboard submission client uses Requests for HTTP communication with a configured cluster. One concrete use is checking whether a runtime package already exists and uploading it when needed. The client builds the package endpoint, sends its bytes with a PUT request, and carries configured cookies, headers and TLS verification settings through the shared request helper.",
        "flow": [
          "Check the cluster's package endpoint for the required runtime package.",
          "Create or read the package archive when an upload is needed.",
          "Upload its bytes through Requests with the configured authentication settings."
        ],
        "scopeNote": "This describes the submission client's runtime-package transport, not Ray's distributed task-execution protocol or all communication between cluster workers.",
        "verification": "code",
        "sources": [
          {
            "label": "Requests transport, package checks and package upload",
            "repository": "ray-project/ray",
            "commitSha": "8d53e59e3da91a39beb6b1b614265cf05d3d26a4",
            "sourcePath": "python/ray/dashboard/modules/dashboard_sdk.py",
            "lineStart": 309,
            "lineEnd": 426,
            "evidenceUrl": "https://github.com/ray-project/ray/blob/8d53e59e3da91a39beb6b1b614265cf05d3d26a4/python/ray/dashboard/modules/dashboard_sdk.py#L309-L426",
            "checkedAt": "2026-10-25T03:10:40.622918Z",
            "sourceSha256": "a3b8512b33a4952d482b17261dcd606936e52077a28168cad76f46acead4da5b",
            "sourceBlobSha": "3fe82e37d20570aa712bb57eb9f6ded84ec17368"
          }
        ]
      }
    },
    {
      "id": "razorpay-python",
      "organization": "Razorpay",
      "project": "Razorpay Python SDK",
      "repository": "razorpay/razorpay-python",
      "category": "Payments & commerce",
      "summary": "Razorpay's Python SDK declares Requests as an installation dependency.",
      "evidenceType": "Direct dependency",
      "evidenceUrl": "https://github.com/razorpay/razorpay-python/blob/8960507a29854c8a484d130139179c2429c2f45c/setup.py#L15",
      "sourcePath": "setup.py",
      "commitSha": "8960507a29854c8a484d130139179c2429c2f45c",
      "evidenceSnippet": "    install_requires=[\"requests\"],",
      "lineStart": 15,
      "lineEnd": 15,
      "checkedAt": "2026-10-25T02:51:17Z",
      "archived": false,
      "sourceBlobSha": "bc4160859be1efec27a11eae981c4d8cca32be30",
      "sector": "technology",
      "useScope": "SDK",
      "avatarSource": "https://avatars.githubusercontent.com/u/7713209?v=4",
      "sourceSha256": "bcdc9e497e3041c4c494018ffe6b2fd0ec1c26936c47e1a57303e40539671bc1",
      "avatarPath": "/static/observatory/organizations/razorpay-python.png",
      "usageDetails": {
        "title": "Dispatching API operations with optional connection retries",
        "explanation": "Razorpay's client creates a Requests session unless the caller provides one. It builds the API URL, chooses the authentication details, and invokes the session method matching the operation. Successful responses are decoded, and API errors are translated. When retries are enabled, connection failures and timeouts can be retried with bounded exponential delays and jitter.",
        "flow": [
          "The SDK constructs the API URL, authentication, and request options.",
          "Its Requests session performs the HTTP method selected by the operation.",
          "The client decodes results or applies configured connection-failure retries."
        ],
        "scopeNote": "This describes Razorpay's public SDK request dispatcher and optional retry behavior. It does not establish current payment activity or merchant adoption.",
        "verification": "code",
        "sources": [
          {
            "label": "Requests session initialization",
            "repository": "razorpay/razorpay-python",
            "commitSha": "8960507a29854c8a484d130139179c2429c2f45c",
            "sourcePath": "razorpay/client.py",
            "lineStart": 44,
            "lineEnd": 53,
            "evidenceUrl": "https://github.com/razorpay/razorpay-python/blob/8960507a29854c8a484d130139179c2429c2f45c/razorpay/client.py#L44-L53",
            "checkedAt": "2026-10-25T03:10:24Z",
            "sourceSha256": "9637fac95707c562e5fd1072d3af72fcb3c450178dd84b0dc714497cd29ba9e9",
            "sourceBlobSha": "6d80e526564d623e378b82e7d3048de1174520d9"
          },
          {
            "label": "API dispatch and optional network retries",
            "repository": "razorpay/razorpay-python",
            "commitSha": "8960507a29854c8a484d130139179c2429c2f45c",
            "sourcePath": "razorpay/client.py",
            "lineStart": 151,
            "lineEnd": 239,
            "evidenceUrl": "https://github.com/razorpay/razorpay-python/blob/8960507a29854c8a484d130139179c2429c2f45c/razorpay/client.py#L151-L239",
            "checkedAt": "2026-10-25T03:10:24Z",
            "sourceSha256": "9637fac95707c562e5fd1072d3af72fcb3c450178dd84b0dc714497cd29ba9e9",
            "sourceBlobSha": "6d80e526564d623e378b82e7d3048de1174520d9"
          }
        ]
      }
    },
    {
      "id": "ansible-awx",
      "organization": "Red Hat",
      "project": "Ansible AWX",
      "repository": "ansible/awx",
      "category": "Infrastructure & operations",
      "sector": "technology",
      "summary": "AWX, an upstream project for Red Hat Ansible Automation Platform, lists Requests in its application requirements.",
      "useScope": "Application",
      "evidenceType": "Direct dependency",
      "evidenceUrl": "https://github.com/ansible/awx/blob/edabe5d6eb7d89c87a933dbd51fa28dcc7ca3a0e/requirements/requirements.in#L62-L62",
      "sourcePath": "requirements/requirements.in",
      "commitSha": "edabe5d6eb7d89c87a933dbd51fa28dcc7ca3a0e",
      "evidenceSnippet": "requests",
      "lineStart": 62,
      "lineEnd": 62,
      "checkedAt": "2026-10-25T02:52:29.154Z",
      "archived": false,
      "sourceSha256": "41182f180842e688ba075fc0d6e9af912c0b9ff38f3f8dc5c58d0bcada2e9fd2",
      "sourceBlobSha": "3cb7e3dc125c8dd79a4f76bb0e1e49a47c10d26d",
      "avatarSource": "https://avatars.githubusercontent.com/u/1507452?v=4",
      "repositoryOwner": "ansible",
      "defaultBranch": "devel",
      "avatarPath": "/static/observatory/organizations/ansible-awx.png",
      "usageDetails": {
        "title": "Sending automation job notifications to webhooks",
        "explanation": "AWX uses Requests in its webhook notification backend. It selects a configured POST or PUT operation, serializes the notification body, and combines the HTTP headers and optional authentication. After validating the destination, it sends the payload through Requests and inspects the response, including controlled redirect handling. This lets an automation workflow deliver job-related notifications to another service.",
        "flow": [
          "Prepare the job notification body, webhook headers, and optional authentication.",
          "Validate the destination and send the configured POST or PUT request.",
          "Inspect the response and handle redirects or delivery failures."
        ],
        "scopeNote": "This is the AWX webhook notifier, not proof that every automation job or every Red Hat product uses Requests.",
        "verification": "code",
        "sources": [
          {
            "label": "Selecting and preparing webhook delivery",
            "repository": "ansible/awx",
            "commitSha": "edabe5d6eb7d89c87a933dbd51fa28dcc7ca3a0e",
            "sourcePath": "awx/main/notifications/webhook_backend.py",
            "lineStart": 54,
            "lineEnd": 83,
            "evidenceUrl": "https://github.com/ansible/awx/blob/edabe5d6eb7d89c87a933dbd51fa28dcc7ca3a0e/awx/main/notifications/webhook_backend.py#L54-L83",
            "checkedAt": "2026-10-25T03:08:01.265Z",
            "sourceSha256": "7181a10e81bab3f35f9e95aa2ac09d9aa1a28475853756ca6f0d7a7aea4b2b1b",
            "sourceBlobSha": "eab740d3c922820e0f32f0b13cbc8935a8b8fe5c"
          },
          {
            "label": "Sending the Requests operation",
            "repository": "ansible/awx",
            "commitSha": "edabe5d6eb7d89c87a933dbd51fa28dcc7ca3a0e",
            "sourcePath": "awx/main/notifications/webhook_backend.py",
            "lineStart": 91,
            "lineEnd": 105,
            "evidenceUrl": "https://github.com/ansible/awx/blob/edabe5d6eb7d89c87a933dbd51fa28dcc7ca3a0e/awx/main/notifications/webhook_backend.py#L91-L105",
            "checkedAt": "2026-10-25T03:08:01.265Z",
            "sourceSha256": "7181a10e81bab3f35f9e95aa2ac09d9aa1a28475853756ca6f0d7a7aea4b2b1b",
            "sourceBlobSha": "eab740d3c922820e0f32f0b13cbc8935a8b8fe5c"
          }
        ]
      }
    },
    {
      "id": "rucio-data-management",
      "organization": "Rucio",
      "project": "Rucio client",
      "repository": "rucio/rucio",
      "category": "Science & research",
      "sector": "technology",
      "summary": "Rucio's distributed-data-management client declares Requests as a runtime dependency.",
      "useScope": "Data tooling",
      "evidenceType": "Direct dependency",
      "evidenceUrl": "https://github.com/rucio/rucio/blob/2ed3be858aacc56874c54cc45be4c4cd1cbdf04c/requirements/requirements.client.txt#L2-L2",
      "sourcePath": "requirements/requirements.client.txt",
      "commitSha": "2ed3be858aacc56874c54cc45be4c4cd1cbdf04c",
      "evidenceSnippet": "requests>=2.32.5                                            # Python HTTP for Humans.",
      "lineStart": 2,
      "lineEnd": 2,
      "checkedAt": "2026-10-25T02:52:41.108Z",
      "archived": false,
      "sourceSha256": "c3b69cc892123bd16533a1061ad389c1e6c951e9bf2fcedad828b23b4f88c98a",
      "sourceBlobSha": "576100bd4fc462fb56dbafb9ac4dfc721e51440e",
      "avatarSource": "https://avatars.githubusercontent.com/u/32394753?v=4",
      "repositoryOwner": "rucio",
      "defaultBranch": "master",
      "avatarPath": "/static/observatory/organizations/rucio-data-management.png",
      "usageDetails": {
        "title": "Sending authenticated Rucio data management commands",
        "explanation": "Rucio's client uses a Requests session to communicate with its server. The shared sender adds the Rucio authentication token, account context, and other headers, then dispatches GET, PUT, POST, or DELETE calls. It can stream responses and applies configured timeouts and certificate settings. The surrounding logic handles failures and retries so client operations can receive server responses.",
        "flow": [
          "Attach the Rucio token, account context, and request-specific headers.",
          "Send the selected HTTP operation through the client Requests session.",
          "Return the response or apply the client retry and error handling."
        ],
        "scopeNote": "This is the Rucio client transport; it does not establish use by every scientific institution or describe every data-transfer protocol.",
        "verification": "code",
        "sources": [
          {
            "label": "Authenticated client operation dispatch",
            "repository": "rucio/rucio",
            "commitSha": "2ed3be858aacc56874c54cc45be4c4cd1cbdf04c",
            "sourcePath": "lib/rucio/client/baseclient.py",
            "lineStart": 439,
            "lineEnd": 503,
            "evidenceUrl": "https://github.com/rucio/rucio/blob/2ed3be858aacc56874c54cc45be4c4cd1cbdf04c/lib/rucio/client/baseclient.py#L439-L503",
            "checkedAt": "2026-10-25T03:08:02.316Z",
            "sourceSha256": "bc2cd17dd33fd23f81726b5e8e41799aa76747728ea38afdbb79727b6f5931d7",
            "sourceBlobSha": "d7845152fe02ce9d258884cbbc3f10140b499981"
          }
        ]
      }
    },
    {
      "id": "safe-eth-py",
      "organization": "Safe",
      "project": "Safe-eth-py",
      "repository": "safe-global/safe-eth-py",
      "category": "Crypto & Web3",
      "summary": "Safe's Ethereum utility library creates Requests sessions with configured HTTP adapters.",
      "evidenceType": "Code usage",
      "evidenceUrl": "https://github.com/safe-global/safe-eth-py/blob/e9cc1e9578d3e187bdbb2eabb3522f488fb2ed8c/safe_eth/util/http.py#L48-L48",
      "sourcePath": "safe_eth/util/http.py",
      "commitSha": "e9cc1e9578d3e187bdbb2eabb3522f488fb2ed8c",
      "evidenceSnippet": "    session = requests.Session()",
      "lineStart": 48,
      "lineEnd": 48,
      "checkedAt": "2026-10-25T02:52:38Z",
      "archived": false,
      "sourceBlobSha": "79fc035a7bb132b9484fd615ddf6f34941e6f9ed",
      "sector": "crypto",
      "useScope": "Library",
      "avatarSource": "https://avatars.githubusercontent.com/u/102983781?v=4",
      "avatarPath": "/static/observatory/organizations/safe-eth-py.jpg",
      "ownershipJustification": "The safe-global-owned non-fork repository's README identifies Safe-eth-py and links the Safe smart-account repository.",
      "defaultBranch": "main",
      "sourceSha256": "5240bd0203150752f72380212c9cf1b9c4bd6cff81cf78dd45e690e0710f77b4",
      "usageDetails": {
        "title": "Preparing reusable HTTP sessions for Safe clients",
        "explanation": "Safe’s Python library includes a shared helper that constructs a Requests session for HTTP clients. It configures connection pool sizes, optional retry behavior, and whether callers wait when a pool is full, then mounts the adapter for HTTP and HTTPS. A related wrapper converts transport and decoding failures into library-level exceptions. The helper supplies networking infrastructure without choosing an application endpoint itself.",
        "flow": [
          "Create a Requests session with the requested connection pool settings.",
          "Configure optional retries and mount adapters for HTTP and HTTPS.",
          "Return the reusable session for other library components to call."
        ],
        "scopeNote": "The evidence establishes shared HTTP infrastructure in Safe’s Python library, not Requests executing Safe smart contracts or every wallet operation.",
        "verification": "code",
        "sources": [
          {
            "label": "Exception wrapper and session factory",
            "repository": "safe-global/safe-eth-py",
            "commitSha": "e9cc1e9578d3e187bdbb2eabb3522f488fb2ed8c",
            "sourcePath": "safe_eth/util/http.py",
            "lineStart": 21,
            "lineEnd": 65,
            "evidenceUrl": "https://github.com/safe-global/safe-eth-py/blob/e9cc1e9578d3e187bdbb2eabb3522f488fb2ed8c/safe_eth/util/http.py#L21-L65",
            "checkedAt": "2026-10-25T02:52:38Z",
            "sourceSha256": "5240bd0203150752f72380212c9cf1b9c4bd6cff81cf78dd45e690e0710f77b4",
            "sourceBlobSha": "79fc035a7bb132b9484fd615ddf6f34941e6f9ed"
          }
        ]
      }
    },
    {
      "id": "salt-project",
      "organization": "Salt Project",
      "project": "Salt",
      "repository": "saltstack/salt",
      "category": "Infrastructure & operations",
      "sector": "technology",
      "summary": "Salt declares Requests in its base dependencies, with Python-version-specific constraints.",
      "useScope": "Application",
      "evidenceType": "Direct dependency",
      "evidenceUrl": "https://github.com/saltstack/salt/blob/03d8a98168655ff32e20165624780344b0f31ce4/requirements/base.txt#L98-L100",
      "sourcePath": "requirements/base.txt",
      "commitSha": "03d8a98168655ff32e20165624780344b0f31ce4",
      "evidenceSnippet": "requests>=2.32.5; python_version < '3.10'\nrequests<2.32.0 ; python_version >= '3.10' and python_version < '3.11'\nrequests>=2.34.2 ; python_version >= '3.11'",
      "lineStart": 98,
      "lineEnd": 100,
      "checkedAt": "2026-10-25T02:52:30.202Z",
      "archived": false,
      "sourceSha256": "5e7a5b77154bd4d8f0278d819b3fce005f42f641f906f17cfbfe3179aceefdfe",
      "sourceBlobSha": "0b233ca1d644595760f524a3c0a4212cf81b878f",
      "avatarSource": "https://avatars.githubusercontent.com/u/1147473?v=4",
      "repositoryOwner": "saltstack",
      "defaultBranch": "master",
      "avatarPath": "/static/observatory/organizations/salt-project.png",
      "usageDetails": {
        "title": "Running HTTP queries through Salt automation",
        "explanation": "Salt offers a Requests backend in its HTTP utility. When that backend is selected, the utility creates a session, applies authentication, headers, cookies, proxies, and certificate verification, and sends the requested HTTP operation. It can submit ordinary data or multipart form content and check response errors. Salt also contains alternative backends, so Requests is one supported execution path.",
        "flow": [
          "Select the Requests backend and configure the HTTP session options.",
          "Send the requested method with parameters, ordinary data, or multipart content.",
          "Check response status and pass the result into Salt response handling."
        ],
        "scopeNote": "This is a selectable HTTP backend in Salt; other backends exist, and not every Salt operation needs an HTTP request.",
        "verification": "code",
        "sources": [
          {
            "label": "Requests backend session setup",
            "repository": "saltstack/salt",
            "commitSha": "03d8a98168655ff32e20165624780344b0f31ce4",
            "sourcePath": "salt/utils/http.py",
            "lineStart": 371,
            "lineEnd": 382,
            "evidenceUrl": "https://github.com/saltstack/salt/blob/03d8a98168655ff32e20165624780344b0f31ce4/salt/utils/http.py#L371-L382",
            "checkedAt": "2026-10-25T03:08:03.993Z",
            "sourceSha256": "c309711915c12263dbc122497f01813464345be1d267dca0108857c1d2aa49b2",
            "sourceBlobSha": "cef3d675ccab78ee73d91a2eb0c4397df40d8811"
          },
          {
            "label": "Sending HTTP queries",
            "repository": "saltstack/salt",
            "commitSha": "03d8a98168655ff32e20165624780344b0f31ce4",
            "sourcePath": "salt/utils/http.py",
            "lineStart": 405,
            "lineEnd": 442,
            "evidenceUrl": "https://github.com/saltstack/salt/blob/03d8a98168655ff32e20165624780344b0f31ce4/salt/utils/http.py#L405-L442",
            "checkedAt": "2026-10-25T03:08:03.993Z",
            "sourceSha256": "c309711915c12263dbc122497f01813464345be1d267dca0108857c1d2aa49b2",
            "sourceBlobSha": "cef3d675ccab78ee73d91a2eb0c4397df40d8811"
          }
        ]
      }
    },
    {
      "id": "sentry-server",
      "organization": "Sentry",
      "project": "Sentry Server",
      "repository": "getsentry/sentry",
      "category": "Developer tools",
      "summary": "Sentry's server application declares Requests as a runtime dependency.",
      "evidenceType": "Direct dependency",
      "evidenceUrl": "https://github.com/getsentry/sentry/blob/9f79f84e4787cb35c5c322be0f4dc0967e1c6463/pyproject.toml#L86",
      "sourcePath": "pyproject.toml",
      "commitSha": "9f79f84e4787cb35c5c322be0f4dc0967e1c6463",
      "evidenceSnippet": "  \"requests>=2.33.0\",",
      "lineStart": 86,
      "lineEnd": 86,
      "checkedAt": "2026-10-25T02:51:17Z",
      "archived": false,
      "sourceBlobSha": "3481d666bacb53489799c1d82e13fd03b4acb964",
      "sector": "technology",
      "useScope": "Application",
      "avatarSource": "https://avatars.githubusercontent.com/u/1396951?v=4",
      "sourceSha256": "56c1f6efff90d5ebfe11e94443bbed828911dadde0c2ae9e621205071eb98967",
      "avatarPath": "/static/observatory/organizations/sentry-server.png",
      "usageDetails": {
        "title": "Adding consistent behavior to outgoing HTTP sessions",
        "explanation": "Sentry's server defines a session class that extends Requests. Its request method applies a thirty-second default timeout, delegates the actual HTTP call to Requests, and assigns UTF-8 when the response has no encoding. A SafeSession variant adds Sentry's user-agent and specialized adapters for outbound connection handling. This provides reusable HTTP behavior for server components.",
        "flow": [
          "A server component makes a call through Sentry's session wrapper.",
          "Requests performs the HTTP call with the wrapper's default timeout.",
          "The wrapper supplies a fallback encoding before returning the response."
        ],
        "scopeNote": "This evidence covers Sentry's shared server HTTP utility. It does not identify a specific integration call or measure Sentry event-ingestion traffic.",
        "verification": "code",
        "sources": [
          {
            "label": "Requests Session import",
            "repository": "getsentry/sentry",
            "commitSha": "9f79f84e4787cb35c5c322be0f4dc0967e1c6463",
            "sourcePath": "src/sentry/net/http.py",
            "lineStart": 8,
            "lineEnd": 9,
            "evidenceUrl": "https://github.com/getsentry/sentry/blob/9f79f84e4787cb35c5c322be0f4dc0967e1c6463/src/sentry/net/http.py#L8-L9",
            "checkedAt": "2026-10-25T03:10:24Z",
            "sourceSha256": "b05a91b821223d1b98377e3f9569b0ee06b39595dc8ac69d1d25bfe7bf7889d2",
            "sourceBlobSha": "074c12cd2cb00992c364bcb6e7cc1cde967b8904"
          },
          {
            "label": "Server HTTP session wrappers",
            "repository": "getsentry/sentry",
            "commitSha": "9f79f84e4787cb35c5c322be0f4dc0967e1c6463",
            "sourcePath": "src/sentry/net/http.py",
            "lineStart": 204,
            "lineEnd": 227,
            "evidenceUrl": "https://github.com/getsentry/sentry/blob/9f79f84e4787cb35c5c322be0f4dc0967e1c6463/src/sentry/net/http.py#L204-L227",
            "checkedAt": "2026-10-25T03:10:24Z",
            "sourceSha256": "b05a91b821223d1b98377e3f9569b0ee06b39595dc8ac69d1d25bfe7bf7889d2",
            "sourceBlobSha": "074c12cd2cb00992c364bcb6e7cc1cde967b8904"
          }
        ]
      }
    },
    {
      "id": "spotify-luigi",
      "organization": "Spotify",
      "project": "Luigi",
      "repository": "spotify/luigi",
      "category": "AI & data",
      "summary": "Luigi includes a Requests-backed HTTP client for scheduler communication when that transport is available.",
      "evidenceType": "Code usage",
      "evidenceUrl": "https://github.com/spotify/luigi/blob/f5feb7a4655ad73ef56f0ab04d7903ab43b63e12/luigi/rpc.py#L115-L118",
      "sourcePath": "luigi/rpc.py",
      "commitSha": "f5feb7a4655ad73ef56f0ab04d7903ab43b63e12",
      "evidenceSnippet": "        from requests import exceptions as requests_exceptions\n\n        self.raises = requests_exceptions.RequestException\n        self.session = requests.Session()",
      "lineStart": 115,
      "lineEnd": 118,
      "checkedAt": "2026-10-25T01:27:26Z",
      "archived": false,
      "sourceSha256": "fb34252e8f00b6bfd39d6db7cc84e4c428bbc900377aecb9de4eef0f0f8b8e25",
      "sourceBlobSha": "6b10c6b90d4adb60161f9951429b511c3b3855b4",
      "sector": "technology",
      "useScope": "Optional transport",
      "avatarSource": "https://avatars.githubusercontent.com/u/251374?v=4",
      "avatarPath": "/static/observatory/organizations/spotify-luigi.png",
      "usageDetails": {
        "title": "Communicating with Luigi's remote workflow scheduler",
        "explanation": "Luigi selects its Requests-backed fetcher when that transport is available. The fetcher maintains a session and posts encoded scheduler requests to the configured remote scheduler. It raises HTTP errors and returns response text, which the scheduler proxy parses as JSON. The proxy adds retry behavior, and the fetcher recreates its session after a process identifier changes.",
        "flow": [
          "Encode the scheduler operation and build its remote endpoint URL.",
          "Post the body using the available Requests-backed fetcher and timeout.",
          "Check HTTP errors, parse the response and apply scheduler retry handling."
        ],
        "scopeNote": "Requests is an available scheduler transport rather than a universal requirement here; Luigi falls back to a urllib-based fetcher when needed.",
        "verification": "code",
        "sources": [
          {
            "label": "Optional Requests transport and scheduler RPC handling",
            "repository": "spotify/luigi",
            "commitSha": "f5feb7a4655ad73ef56f0ab04d7903ab43b63e12",
            "sourcePath": "luigi/rpc.py",
            "lineStart": 113,
            "lineEnd": 192,
            "evidenceUrl": "https://github.com/spotify/luigi/blob/f5feb7a4655ad73ef56f0ab04d7903ab43b63e12/luigi/rpc.py#L113-L192",
            "checkedAt": "2026-10-25T03:10:40.622918Z",
            "sourceSha256": "fb34252e8f00b6bfd39d6db7cc84e4c428bbc900377aecb9de4eef0f0f8b8e25",
            "sourceBlobSha": "6b10c6b90d4adb60161f9951429b511c3b3855b4"
          }
        ]
      }
    },
    {
      "id": "stability-generative-models",
      "organization": "Stability AI",
      "project": "Generative Models checkpoint helper",
      "repository": "Stability-AI/generative-models",
      "category": "AI & data",
      "sector": "technology",
      "summary": "Stability AI's generative-models package downloads LPIPS checkpoints using Requests.",
      "useScope": "Model download utility",
      "evidenceType": "Code usage",
      "sourcePath": "sgm/modules/autoencoding/lpips/util.py",
      "commitSha": "e8cd657656fa5d61688191730d0e03242bf4ed44",
      "lineStart": 18,
      "lineEnd": 19,
      "checkedAt": "2026-10-25T02:51:47.374Z",
      "archived": false,
      "sourceBlobSha": "49c76e370bf16888ab61f42844b3c9f14ad9014c",
      "avatarSource": "https://avatars.githubusercontent.com/u/100950301?v=4",
      "sourceSha256": "5a6eaa7cf02ff58f3a7ac5373de5c8fe0c1437e050a19767272de5e253b98e47",
      "evidenceSnippet": "    with requests.get(url, stream=True) as r:\n        total_size = int(r.headers.get(\"content-length\", 0))",
      "evidenceUrl": "https://github.com/Stability-AI/generative-models/blob/e8cd657656fa5d61688191730d0e03242bf4ed44/sgm/modules/autoencoding/lpips/util.py#L18-L19",
      "repositoryOwner": "Stability-AI",
      "defaultBranch": "main",
      "avatarPath": "/static/observatory/organizations/stability-generative-models.png",
      "usageDetails": {
        "title": "Downloading and checking perceptual-loss model weights",
        "explanation": "Stability AI's generative-models code contains a helper for obtaining the VGG LPIPS checkpoint. If the checkpoint is missing, or an optional existing-file check fails, Requests streams it to a local file while progress is displayed. The helper then computes the downloaded file's MD5 digest and compares it with the expected value before returning the checkpoint path.",
        "flow": [
          "Check whether the required LPIPS checkpoint exists and needs replacement.",
          "Stream the checkpoint through Requests into the chosen local file.",
          "Verify its expected digest before returning the checkpoint path."
        ],
        "scopeNote": "This is the LPIPS checkpoint-preparation utility, not proof that image generation or every Stability AI service runs through Requests.",
        "verification": "code",
        "sources": [
          {
            "label": "LPIPS checkpoint download and digest validation",
            "repository": "Stability-AI/generative-models",
            "commitSha": "e8cd657656fa5d61688191730d0e03242bf4ed44",
            "sourcePath": "sgm/modules/autoencoding/lpips/util.py",
            "lineStart": 9,
            "lineEnd": 42,
            "evidenceUrl": "https://github.com/Stability-AI/generative-models/blob/e8cd657656fa5d61688191730d0e03242bf4ed44/sgm/modules/autoencoding/lpips/util.py#L9-L42",
            "checkedAt": "2026-10-25T03:10:40.622918Z",
            "sourceSha256": "5a6eaa7cf02ff58f3a7ac5373de5c8fe0c1437e050a19767272de5e253b98e47",
            "sourceBlobSha": "49c76e370bf16888ab61f42844b3c9f14ad9014c"
          }
        ]
      }
    },
    {
      "id": "stellar",
      "organization": "Stellar",
      "project": "Stellar Core overlay survey tooling",
      "repository": "stellar/stellar-core",
      "category": "Crypto & Web3",
      "summary": "Stellar Core's overlay survey script uses Requests to query node HTTP endpoints.",
      "useScope": "Network tooling",
      "evidenceType": "Code usage",
      "evidenceUrl": "https://github.com/stellar/stellar-core/blob/05c6328c13b595c52b6ad1ecd1e69cd9b2a582d4/scripts/OverlaySurvey.py#L108-L112",
      "sourcePath": "scripts/OverlaySurvey.py",
      "commitSha": "05c6328c13b595c52b6ad1ecd1e69cd9b2a582d4",
      "evidenceSnippet": "    else:\n        res = requests.get(url=url, params=params)\n    logger.debug(\"Received response: %s\", res.text)\n    return res\n",
      "lineStart": 108,
      "lineEnd": 112,
      "checkedAt": "2026-10-25T01:26:47Z",
      "archived": false,
      "repositoryOwner": "stellar",
      "defaultBranch": "master",
      "sourceBlobSha": "2cb86cdef5e0a2b68a03dc010c17506477a207d0",
      "sourceSha256": "29a7059085c144530139e716e10b4fe25d82fc59512c3a99b5aba0ba14e4c0dc",
      "sector": "crypto",
      "avatarSource": "https://avatars.githubusercontent.com/u/7386716?v=4",
      "avatarPath": "/static/observatory/organizations/stellar.png",
      "usageDetails": {
        "title": "Surveying Stellar node peers over HTTP",
        "explanation": "Stellar Core’s overlay survey script uses Requests to call a chosen node’s HTTP endpoints when it is not running in simulation mode. It reads peer information and node metadata, then repeatedly retrieves survey results containing network topology data. The script uses those responses to track surveyed peers and build its view of the overlay network. Requests is the survey tool’s HTTP client.",
        "flow": [
          "Use the selected node’s HTTP interface outside the script’s simulation mode.",
          "Read authenticated peer information and metadata about the surveying node.",
          "Poll survey results and incorporate returned peer topology into the graph."
        ],
        "scopeNote": "This is an administrative network survey script in the repository, not Requests implementing Stellar Core’s consensus or peer protocol.",
        "verification": "code",
        "sources": [
          {
            "label": "HTTP request helper and simulation branch",
            "repository": "stellar/stellar-core",
            "commitSha": "05c6328c13b595c52b6ad1ecd1e69cd9b2a582d4",
            "sourcePath": "scripts/OverlaySurvey.py",
            "lineStart": 103,
            "lineEnd": 111,
            "evidenceUrl": "https://github.com/stellar/stellar-core/blob/05c6328c13b595c52b6ad1ecd1e69cd9b2a582d4/scripts/OverlaySurvey.py#L103-L111",
            "checkedAt": "2026-10-25T01:26:47Z",
            "sourceSha256": "29a7059085c144530139e716e10b4fe25d82fc59512c3a99b5aba0ba14e4c0dc",
            "sourceBlobSha": "2cb86cdef5e0a2b68a03dc010c17506477a207d0"
          },
          {
            "label": "Peer discovery and survey result polling",
            "repository": "stellar/stellar-core",
            "commitSha": "05c6328c13b595c52b6ad1ecd1e69cd9b2a582d4",
            "sourcePath": "scripts/OverlaySurvey.py",
            "lineStart": 413,
            "lineEnd": 498,
            "evidenceUrl": "https://github.com/stellar/stellar-core/blob/05c6328c13b595c52b6ad1ecd1e69cd9b2a582d4/scripts/OverlaySurvey.py#L413-L498",
            "checkedAt": "2026-10-25T01:26:47Z",
            "sourceSha256": "29a7059085c144530139e716e10b4fe25d82fc59512c3a99b5aba0ba14e4c0dc",
            "sourceBlobSha": "2cb86cdef5e0a2b68a03dc010c17506477a207d0"
          }
        ]
      }
    },
    {
      "id": "streamlit-framework",
      "organization": "Streamlit",
      "project": "Streamlit",
      "repository": "streamlit/streamlit",
      "category": "AI & data",
      "sector": "technology",
      "summary": "Streamlit declares Requests as a runtime dependency of its Python framework.",
      "useScope": "Application framework",
      "evidenceType": "Direct dependency",
      "sourcePath": "lib/pyproject.toml",
      "commitSha": "76ac4836ecd332cbedb8f9df5ecc1dbfc568870a",
      "lineStart": 88,
      "lineEnd": 88,
      "checkedAt": "2026-10-25T02:51:47.373Z",
      "archived": false,
      "sourceBlobSha": "1379111976a52f22260b8af95f3fc188cf950269",
      "avatarSource": "https://avatars.githubusercontent.com/u/45109972?v=4",
      "sourceSha256": "c4330ef08b2f7bc35f905cf2b361f83388177a3beebc3b0ab1b785be2ab762c8",
      "evidenceSnippet": "  \"requests>=2.27,<3\",",
      "evidenceUrl": "https://github.com/streamlit/streamlit/blob/76ac4836ecd332cbedb8f9df5ecc1dbfc568870a/lib/pyproject.toml#L88-L88",
      "repositoryOwner": "streamlit",
      "defaultBranch": "develop",
      "avatarPath": "/static/observatory/organizations/streamlit-framework.png",
      "usageDetails": {
        "title": "Discovering the server's external network address",
        "explanation": "Streamlit's network utility uses Requests to contact an external IP-check service when it needs the current machine's public address. It tries the configured HTTP endpoint and then HTTPS as a fallback, validates the returned text and caches a valid address. The code identifies this as best-effort information for the external URL banner and an origin-allowlist fallback.",
        "flow": [
          "Request the machine's external address from the configured IP-check endpoint.",
          "Try the HTTPS fallback if the first request returns no result.",
          "Validate and cache the address for Streamlit's network-address reporting."
        ],
        "scopeNote": "This is Streamlit's external-address discovery helper, not a claim that Requests transports every browser interaction or application data operation.",
        "verification": "code",
        "sources": [
          {
            "label": "External-IP lookup and fallback",
            "repository": "streamlit/streamlit",
            "commitSha": "76ac4836ecd332cbedb8f9df5ecc1dbfc568870a",
            "sourcePath": "lib/streamlit/net_util.py",
            "lineStart": 34,
            "lineEnd": 66,
            "evidenceUrl": "https://github.com/streamlit/streamlit/blob/76ac4836ecd332cbedb8f9df5ecc1dbfc568870a/lib/streamlit/net_util.py#L34-L66",
            "checkedAt": "2026-10-25T03:10:40.622918Z",
            "sourceSha256": "778691b578aadb8a6e585d28f74819c5690821ca44a2e7b86da8b549a7c93f1f",
            "sourceBlobSha": "df14119f38c19331fa10cad01e5cdc39fda03820"
          },
          {
            "label": "Requests helper and IP-address validation",
            "repository": "streamlit/streamlit",
            "commitSha": "76ac4836ecd332cbedb8f9df5ecc1dbfc568870a",
            "sourcePath": "lib/streamlit/net_util.py",
            "lineStart": 98,
            "lineEnd": 119,
            "evidenceUrl": "https://github.com/streamlit/streamlit/blob/76ac4836ecd332cbedb8f9df5ecc1dbfc568870a/lib/streamlit/net_util.py#L98-L119",
            "checkedAt": "2026-10-25T03:10:40.622918Z",
            "sourceSha256": "778691b578aadb8a6e585d28f74819c5690821ca44a2e7b86da8b549a7c93f1f",
            "sourceBlobSha": "df14119f38c19331fa10cad01e5cdc39fda03820"
          }
        ]
      }
    },
    {
      "id": "tensorflow-tpu-worker",
      "organization": "TensorFlow",
      "project": "TPU worker helper",
      "repository": "tensorflow/tensorflow",
      "category": "AI & data",
      "sector": "technology",
      "summary": "TensorFlow's TPU worker helper uses Requests to retrieve instance metadata.",
      "useScope": "Developer tooling",
      "evidenceType": "Code usage",
      "sourcePath": "tensorflow/python/tools/grpc_tpu_worker.py",
      "commitSha": "4f8e6d470a7f2864a7b2af990d3ffcfc47f05c99",
      "lineStart": 40,
      "lineEnd": 44,
      "checkedAt": "2026-10-25T02:51:47.373Z",
      "archived": false,
      "sourceBlobSha": "e8cf2a59c5ba797227b74b06953cba63272a974c",
      "avatarSource": "https://avatars.githubusercontent.com/u/15658638?v=4",
      "sourceSha256": "870ab3c05bf560263bc8b71c174d3e5f3f7c2c0132df829f2a9cabe7aa72b488",
      "evidenceSnippet": "  return requests.get(\n      'http://metadata.google.internal/computeMetadata'\n      '/v1/instance/attributes/{}'.format(key),\n      headers={\n          'Metadata-Flavor': 'Google'",
      "evidenceUrl": "https://github.com/tensorflow/tensorflow/blob/4f8e6d470a7f2864a7b2af990d3ffcfc47f05c99/tensorflow/python/tools/grpc_tpu_worker.py#L40-L44",
      "repositoryOwner": "tensorflow",
      "defaultBranch": "master",
      "avatarPath": "/static/observatory/organizations/tensorflow-tpu-worker.png",
      "usageDetails": {
        "title": "Reading cloud metadata before configuring TPU workers",
        "explanation": "TensorFlow's TPU worker helper uses Requests to query Google Cloud's instance metadata service. It reads values such as the worker number, accelerator type, network endpoints and host IP address. Those responses are used to set environment variables for the TPU worker's identity, controller address and relevant topology before the helper starts the worker service.",
        "flow": [
          "Read worker identity, accelerator and network metadata through Requests GET calls.",
          "Use the returned values to configure TPU worker environment variables.",
          "Set the host override before continuing the worker startup process."
        ],
        "scopeNote": "This is a Cloud TPU startup helper; it does not show Requests performing TensorFlow's numerical computation or general training communications.",
        "verification": "code",
        "sources": [
          {
            "label": "Metadata requests and TPU environment setup",
            "repository": "tensorflow/tensorflow",
            "commitSha": "4f8e6d470a7f2864a7b2af990d3ffcfc47f05c99",
            "sourcePath": "tensorflow/python/tools/grpc_tpu_worker.py",
            "lineStart": 39,
            "lineEnd": 132,
            "evidenceUrl": "https://github.com/tensorflow/tensorflow/blob/4f8e6d470a7f2864a7b2af990d3ffcfc47f05c99/tensorflow/python/tools/grpc_tpu_worker.py#L39-L132",
            "checkedAt": "2026-10-25T03:10:40.622918Z",
            "sourceSha256": "870ab3c05bf560263bc8b71c174d3e5f3f7c2c0132df829f2a9cabe7aa72b488",
            "sourceBlobSha": "e8cf2a59c5ba797227b74b06953cba63272a974c"
          }
        ]
      }
    },
    {
      "id": "trezor",
      "organization": "Trezor",
      "project": "Firmware repository tooling",
      "repository": "trezor/trezor-firmware",
      "category": "Crypto & Web3",
      "summary": "A tool in the firmware repository uses Requests to retrieve cryptocurrency market data.",
      "useScope": "Development tooling",
      "evidenceType": "Code usage",
      "evidenceUrl": "https://github.com/trezor/trezor-firmware/blob/6f320a465953ec506eb9b38de00d48f0eaf9fdb6/common/tools/marketcap.py#L17-L21",
      "sourcePath": "common/tools/marketcap.py",
      "commitSha": "6f320a465953ec506eb9b38de00d48f0eaf9fdb6",
      "evidenceSnippet": "    url = COINMARKETCAP_API_BASE + endpoint\n    r = requests.get(url, params=params, headers={\"X-CMC_PRO_API_KEY\": api_key})\n    r.raise_for_status()\n    return r.json()\n",
      "lineStart": 17,
      "lineEnd": 21,
      "checkedAt": "2026-10-25T01:26:47Z",
      "archived": false,
      "repositoryOwner": "trezor",
      "defaultBranch": "main",
      "sourceBlobSha": "d2e98df69409a0a13d2ac4a7e85ad910c679658b",
      "sourceSha256": "3c2a024ff337f36ba716bac7a3118ee1d5930dae71ee7488da402aae72eba8b5",
      "sector": "crypto",
      "avatarSource": "https://avatars.githubusercontent.com/u/4146447?v=4",
      "avatarPath": "/static/observatory/organizations/trezor.png",
      "usageDetails": {
        "title": "Caching market data for repository tooling",
        "explanation": "A market data utility in the Trezor firmware repository uses Requests to query CoinMarketCap’s API with an API key header. It retrieves cryptocurrency listings in USD and additional metadata, then saves the results in a local JSON cache. Later lookups use that data to identify coins or obtain a price. The cache limits repeated API calls during the tool’s use.",
        "flow": [
          "Check the local cache before requesting updated cryptocurrency market data.",
          "Fetch listings and metadata with the configured CoinMarketCap API key.",
          "Store the combined data for later coin identification and price lookups."
        ],
        "scopeNote": "This is a Python data utility under common tools, not evidence of Requests running inside Trezor hardware wallet firmware.",
        "verification": "code",
        "sources": [
          {
            "label": "Market API calls and local cache",
            "repository": "trezor/trezor-firmware",
            "commitSha": "6f320a465953ec506eb9b38de00d48f0eaf9fdb6",
            "sourcePath": "common/tools/marketcap.py",
            "lineStart": 11,
            "lineEnd": 59,
            "evidenceUrl": "https://github.com/trezor/trezor-firmware/blob/6f320a465953ec506eb9b38de00d48f0eaf9fdb6/common/tools/marketcap.py#L11-L59",
            "checkedAt": "2026-10-25T01:26:47Z",
            "sourceSha256": "3c2a024ff337f36ba716bac7a3118ee1d5930dae71ee7488da402aae72eba8b5",
            "sourceBlobSha": "d2e98df69409a0a13d2ac4a7e85ad910c679658b"
          },
          {
            "label": "Coin and price lookup helpers",
            "repository": "trezor/trezor-firmware",
            "commitSha": "6f320a465953ec506eb9b38de00d48f0eaf9fdb6",
            "sourcePath": "common/tools/marketcap.py",
            "lineStart": 63,
            "lineEnd": 88,
            "evidenceUrl": "https://github.com/trezor/trezor-firmware/blob/6f320a465953ec506eb9b38de00d48f0eaf9fdb6/common/tools/marketcap.py#L63-L88",
            "checkedAt": "2026-10-25T01:26:47Z",
            "sourceSha256": "3c2a024ff337f36ba716bac7a3118ee1d5930dae71ee7488da402aae72eba8b5",
            "sourceBlobSha": "d2e98df69409a0a13d2ac4a7e85ad910c679658b"
          }
        ]
      }
    },
    {
      "id": "twilio-python",
      "organization": "Twilio",
      "project": "Twilio Python Helper Library",
      "repository": "twilio/twilio-python",
      "category": "Cloud & platforms",
      "summary": "Twilio's Python helper library declares Requests as an installation dependency.",
      "evidenceType": "Direct dependency",
      "evidenceUrl": "https://github.com/twilio/twilio-python/blob/74b96296b0805986252b798bda4bca90341487ee/setup.py#L24-L24",
      "sourcePath": "setup.py",
      "commitSha": "74b96296b0805986252b798bda4bca90341487ee",
      "evidenceSnippet": "        \"requests >= 2.0.0\",",
      "lineStart": 24,
      "lineEnd": 24,
      "checkedAt": "2026-10-25T01:27:26Z",
      "archived": false,
      "sourceSha256": "180b6a9f3166b285c1e0d5f54a0d8b5d26127f29517b92f7e126272aa8453fcc",
      "sourceBlobSha": "1c9c72eec16b94bcb20c0bc230a4d0c322884fc0",
      "sector": "technology",
      "useScope": "SDK",
      "avatarSource": "https://avatars.githubusercontent.com/u/109142?v=4",
      "avatarPath": "/static/observatory/organizations/twilio-python.png",
      "usageDetails": {
        "title": "Preparing and sending Twilio SDK HTTP requests",
        "explanation": "Twilio's synchronous HTTP client builds a Requests request from the method, endpoint, parameters, headers, and authentication supplied by the SDK. It selects JSON or form data according to content type, prepares the request in a session, merges proxy and environment settings, and sends with timeout and redirect options. The resulting status, text, and headers become a Twilio response object.",
        "flow": [
          "The HTTP client builds a Requests request from SDK operation details.",
          "A session prepares and sends it with proxy and timeout settings.",
          "The client converts status, body, and headers into its response object."
        ],
        "scopeNote": "The evidence concerns Twilio's public synchronous SDK HTTP client. It does not prove that a message or call is being delivered now.",
        "verification": "code",
        "sources": [
          {
            "label": "Prepared HTTP calls and Twilio responses",
            "repository": "twilio/twilio-python",
            "commitSha": "74b96296b0805986252b798bda4bca90341487ee",
            "sourcePath": "twilio/http/http_client.py",
            "lineStart": 76,
            "lineEnd": 119,
            "evidenceUrl": "https://github.com/twilio/twilio-python/blob/74b96296b0805986252b798bda4bca90341487ee/twilio/http/http_client.py#L76-L119",
            "checkedAt": "2026-10-25T03:10:24Z",
            "sourceSha256": "171bed4dbf846ee58c70fb6da43ccb7b5041659bb53f62968db59a357f88e81a",
            "sourceBlobSha": "2f2d3635351bae68b152277b2f71c9da95c0b4b5"
          }
        ]
      }
    },
    {
      "id": "ultralytics-yolo",
      "organization": "Ultralytics",
      "project": "Ultralytics YOLO",
      "repository": "ultralytics/ultralytics",
      "category": "AI & data",
      "sector": "technology",
      "summary": "The Ultralytics package declares Requests among its runtime dependencies.",
      "useScope": "Library",
      "evidenceType": "Direct dependency",
      "sourcePath": "pyproject.toml",
      "commitSha": "fdddc0c91de84f41af65d1c9a3bd94053a6b3b36",
      "lineStart": 72,
      "lineEnd": 72,
      "checkedAt": "2026-10-25T02:51:47.373Z",
      "archived": false,
      "sourceBlobSha": "f959e8efae3287a7c7fd5db4ecdc6fc1d9992915",
      "avatarSource": "https://avatars.githubusercontent.com/u/26833451?v=4",
      "sourceSha256": "93ddc8b7dd14943e521dd3db8d0ef80b8bb9a168db8d202bdb5e848ce53f3bd7",
      "evidenceSnippet": "    \"requests>=2.23.0\",",
      "evidenceUrl": "https://github.com/ultralytics/ultralytics/blob/fdddc0c91de84f41af65d1c9a3bd94053a6b3b36/pyproject.toml#L72-L72",
      "repositoryOwner": "ultralytics",
      "defaultBranch": "main",
      "avatarPath": "/static/observatory/organizations/ultralytics-yolo.png",
      "usageDetails": {
        "title": "Downloading and resuming remote project assets",
        "explanation": "Ultralytics' download utility uses Requests to transfer a remote file into a temporary partial file. When retrying an interrupted download, it can send a byte-range header and continue from previously written bytes. The code checks HTTP responses and expected sizes before publishing the completed file, while optional progress reporting tracks the transfer.",
        "flow": [
          "Prepare the asset destination and inspect any partially downloaded bytes.",
          "Stream the file with Requests, using a range header when resuming.",
          "Validate the completed transfer before publishing the downloaded asset file."
        ],
        "scopeNote": "This is Ultralytics' asset-download utility; an explicit curl path also exists, and the evidence does not describe model inference.",
        "verification": "code",
        "sources": [
          {
            "label": "Requests asset transfer, resume and size checks",
            "repository": "ultralytics/ultralytics",
            "commitSha": "fdddc0c91de84f41af65d1c9a3bd94053a6b3b36",
            "sourcePath": "ultralytics/utils/downloads.py",
            "lineStart": 313,
            "lineEnd": 472,
            "evidenceUrl": "https://github.com/ultralytics/ultralytics/blob/fdddc0c91de84f41af65d1c9a3bd94053a6b3b36/ultralytics/utils/downloads.py#L313-L472",
            "checkedAt": "2026-10-25T03:10:40.622918Z",
            "sourceSha256": "9e7274b7020b245d82a1524fde01fb241b05a4c804c574106a373f19f91752df",
            "sourceBlobSha": "d740677c07e714ea3a2c878526355e39e59cd589"
          }
        ]
      }
    },
    {
      "id": "vllm-runtime",
      "organization": "vLLM",
      "project": "vLLM inference engine",
      "repository": "vllm-project/vllm",
      "category": "AI & data",
      "sector": "technology",
      "summary": "vLLM includes Requests in the common requirements used to build its installation dependencies.",
      "useScope": "Library",
      "evidenceType": "Direct dependency",
      "sourcePath": "requirements/common.txt",
      "commitSha": "71a82756040a31849623e720e039a83857b4b562",
      "lineStart": 6,
      "lineEnd": 6,
      "checkedAt": "2026-10-25T02:51:47.373Z",
      "archived": false,
      "sourceBlobSha": "d235d9e8bd818f5851eceb1a586911d8053cc90e",
      "avatarSource": "https://avatars.githubusercontent.com/u/136984999?v=4",
      "sourceSha256": "0e7e3a4ca04f0eff75cb65123ae66223e4374aaaa6da0d42ca1a5c9ea0f2b0c8",
      "evidenceSnippet": "requests >= 2.33.0",
      "evidenceUrl": "https://github.com/vllm-project/vllm/blob/71a82756040a31849623e720e039a83857b4b562/requirements/common.txt#L6-L6",
      "repositoryOwner": "vllm-project",
      "defaultBranch": "main",
      "avatarPath": "/static/observatory/organizations/vllm-runtime.png",
      "usageDetails": {
        "title": "Fetching remote media for synchronous model inputs",
        "explanation": "vLLM's media connector can load an HTTP media URL through its shared connection helper. On the synchronous path, that helper creates or reuses a Requests session and retrieves the content as bytes with timeouts and download-size controls. The connector then passes those bytes to the selected media decoder so the calling code can consume the media.",
        "flow": [
          "Validate the media URL and select the synchronous HTTP loading path.",
          "Fetch the content through the shared Requests session with configured limits.",
          "Decode the downloaded bytes using the selected media reader."
        ],
        "scopeNote": "This covers synchronous remote-media loading; the inspected helper uses aiohttp for its asynchronous path, and Requests does not perform model inference.",
        "verification": "code",
        "sources": [
          {
            "label": "Synchronous Requests session and byte retrieval",
            "repository": "vllm-project/vllm",
            "commitSha": "71a82756040a31849623e720e039a83857b4b562",
            "sourcePath": "vllm/connections.py",
            "lineStart": 371,
            "lineEnd": 467,
            "evidenceUrl": "https://github.com/vllm-project/vllm/blob/71a82756040a31849623e720e039a83857b4b562/vllm/connections.py#L371-L467",
            "checkedAt": "2026-10-25T03:10:40.622918Z",
            "sourceSha256": "cc99b716d0dfdebd5e63dd561a7f8fd041288f1182159865ed2715b2d166971a",
            "sourceBlobSha": "2913a640e0cbff44cf38e12ab0e9497ac91cb8f2"
          },
          {
            "label": "Media URL loading and decode handoff",
            "repository": "vllm-project/vllm",
            "commitSha": "71a82756040a31849623e720e039a83857b4b562",
            "sourcePath": "vllm/multimodal/media/connector.py",
            "lineStart": 381,
            "lineEnd": 425,
            "evidenceUrl": "https://github.com/vllm-project/vllm/blob/71a82756040a31849623e720e039a83857b4b562/vllm/multimodal/media/connector.py#L381-L425",
            "checkedAt": "2026-10-25T03:10:40.622918Z",
            "sourceSha256": "e1215dc29e9c3f5409e832707dc3f76c696280872865f82a6eed0714f172046b",
            "sourceBlobSha": "e5a52417fee3a2ac7d8c1957a7ea66faa9f8a9b6"
          }
        ]
      }
    },
    {
      "id": "wandb-sdk",
      "organization": "Weights & Biases",
      "project": "W&B Python SDK",
      "repository": "wandb/wandb",
      "category": "AI & data",
      "sector": "technology",
      "summary": "The W&B Python SDK declares Requests as a runtime dependency.",
      "useScope": "SDK",
      "evidenceType": "Direct dependency",
      "sourcePath": "pyproject.toml",
      "commitSha": "ed4ada1ea50241ce2b91b92aa11251b8e5d1b86d",
      "lineStart": 15,
      "lineEnd": 15,
      "checkedAt": "2026-10-25T02:51:47.373Z",
      "archived": false,
      "sourceBlobSha": "2d07b48b3612305789f0a386b1b6a9374ed5de52",
      "avatarSource": "https://avatars.githubusercontent.com/u/26401354?v=4",
      "sourceSha256": "1356c7dfc109eece0ebfc8744e3822787632d4e667cbc46b9d448ec59a05791e",
      "evidenceSnippet": "    \"requests>=2.0.0,<3\",",
      "evidenceUrl": "https://github.com/wandb/wandb/blob/ed4ada1ea50241ce2b91b92aa11251b8e5d1b86d/pyproject.toml#L15-L15",
      "repositoryOwner": "wandb",
      "defaultBranch": "main",
      "avatarPath": "/static/observatory/organizations/wandb-sdk.png",
      "usageDetails": {
        "title": "Loading artifact manifests from remote object storage",
        "explanation": "The W&B Python SDK first queries its service for a direct URL to an artifact's manifest. It then uses a configured Requests session to download the manifest JSON from that URL and converts the content into its artifact-manifest representation. The session factory applies extra HTTP headers, connection pooling, retries and response-status checking for artifact-storage access.",
        "flow": [
          "Ask the service for the artifact manifest's current direct download URL.",
          "Download the manifest JSON through the configured Requests storage session.",
          "Parse the downloaded contents into the SDK's artifact-manifest representation."
        ],
        "scopeNote": "This describes Python-side artifact-manifest retrieval, not a claim that all W&B experiment logging or backend services use Requests.",
        "verification": "code",
        "sources": [
          {
            "label": "Obtaining and downloading the artifact manifest",
            "repository": "wandb/wandb",
            "commitSha": "ed4ada1ea50241ce2b91b92aa11251b8e5d1b86d",
            "sourcePath": "wandb/sdk/artifacts/artifact.py",
            "lineStart": 1064,
            "lineEnd": 1099,
            "evidenceUrl": "https://github.com/wandb/wandb/blob/ed4ada1ea50241ce2b91b92aa11251b8e5d1b86d/wandb/sdk/artifacts/artifact.py#L1064-L1099",
            "checkedAt": "2026-10-25T03:10:40.622918Z",
            "sourceSha256": "c2893621c092e7b3b4aa145cfbcec5e537f939efcc6041a381883aa92bc12015",
            "sourceBlobSha": "17cd747e3bd06ca507af8cdc91d834c9e8b009f6"
          },
          {
            "label": "Configured Requests session for artifact storage",
            "repository": "wandb/wandb",
            "commitSha": "ed4ada1ea50241ce2b91b92aa11251b8e5d1b86d",
            "sourcePath": "wandb/sdk/artifacts/storage_policies/_factories.py",
            "lineStart": 22,
            "lineEnd": 62,
            "evidenceUrl": "https://github.com/wandb/wandb/blob/ed4ada1ea50241ce2b91b92aa11251b8e5d1b86d/wandb/sdk/artifacts/storage_policies/_factories.py#L22-L62",
            "checkedAt": "2026-10-25T03:10:40.622918Z",
            "sourceSha256": "a810654ff11d6130f450687500acfeb984aa33412c9630d266ce54df1219800d",
            "sourceBlobSha": "8c7718a6b3d43dfa57accb3a540e747e33ec6581"
          }
        ]
      }
    },
    {
      "id": "wikimedia-pywikibot",
      "organization": "Wikimedia",
      "project": "Pywikibot",
      "repository": "wikimedia/pywikibot",
      "category": "Knowledge & publishing",
      "sector": "technology",
      "summary": "Pywikibot lists Requests among the mandatory dependencies for its wiki automation framework.",
      "useScope": "Application",
      "evidenceType": "Direct dependency",
      "evidenceUrl": "https://github.com/wikimedia/pywikibot/blob/61b1996b5cc3fe5789b1afb7577adc5c2d515fea/setup.py#L87-L87",
      "sourcePath": "setup.py",
      "commitSha": "61b1996b5cc3fe5789b1afb7577adc5c2d515fea",
      "evidenceSnippet": "    'requests>=2.32.3',",
      "lineStart": 87,
      "lineEnd": 87,
      "checkedAt": "2026-10-25T02:52:33.720Z",
      "archived": false,
      "sourceSha256": "f47eabbc61518c133763fa93640bed0f81cc8c17db20c004956aca7318ab36f6",
      "sourceBlobSha": "aa2f694bee54c2caa8af974c7257eae32efa1249",
      "avatarSource": "https://avatars.githubusercontent.com/u/56668?v=4",
      "repositoryOwner": "wikimedia",
      "defaultBranch": "master",
      "avatarPath": "/static/observatory/organizations/wikimedia-pywikibot.png",
      "usageDetails": {
        "title": "Connecting wiki automation to website endpoints",
        "explanation": "Pywikibot uses a shared Requests session in its HTTP communication layer. A site-aware helper prepares the wiki URL, user-agent header, and certificate settings, then delegates the network call to that session. The response passes through error handling and text-encoding selection before reaching the caller. The helper also reads retry timing so the bot can respect the site's response.",
        "flow": [
          "Build the wiki endpoint URL and site-specific request headers.",
          "Send the HTTP operation through the shared Requests session.",
          "Handle errors and response encoding, then update retry timing for callers."
        ],
        "scopeNote": "This proves the Pywikibot client communication layer, not that Wikimedia servers or every edit on a wiki run through Requests.",
        "verification": "code",
        "sources": [
          {
            "label": "Site-aware request preparation",
            "repository": "wikimedia/pywikibot",
            "commitSha": "61b1996b5cc3fe5789b1afb7577adc5c2d515fea",
            "sourcePath": "pywikibot/comms/http.py",
            "lineStart": 296,
            "lineEnd": 336,
            "evidenceUrl": "https://github.com/wikimedia/pywikibot/blob/61b1996b5cc3fe5789b1afb7577adc5c2d515fea/pywikibot/comms/http.py#L296-L336",
            "checkedAt": "2026-10-25T03:08:05.084Z",
            "sourceSha256": "a90e4ca18f4e1f4e452095fcb8914f1247a8ca906d1504b5d7de89ca0ea45d73",
            "sourceBlobSha": "d6ef262ce6b22ab1eb142b19ee64d68ed1eec28f"
          },
          {
            "label": "Session exchange and response handling",
            "repository": "wikimedia/pywikibot",
            "commitSha": "61b1996b5cc3fe5789b1afb7577adc5c2d515fea",
            "sourcePath": "pywikibot/comms/http.py",
            "lineStart": 505,
            "lineEnd": 544,
            "evidenceUrl": "https://github.com/wikimedia/pywikibot/blob/61b1996b5cc3fe5789b1afb7577adc5c2d515fea/pywikibot/comms/http.py#L505-L544",
            "checkedAt": "2026-10-25T03:08:05.084Z",
            "sourceSha256": "a90e4ca18f4e1f4e452095fcb8914f1247a8ca906d1504b5d7de89ca0ea45d73",
            "sourceBlobSha": "d6ef262ce6b22ab1eb142b19ee64d68ed1eec28f"
          }
        ]
      }
    },
    {
      "id": "xrpl",
      "organization": "XRP Ledger",
      "project": "Developer portal wallet example",
      "repository": "XRPLF/xrpl-dev-portal",
      "category": "Crypto & Web3",
      "summary": "The developer portal's wallet example uses Requests to retrieve an xrp-ledger.toml file.",
      "useScope": "Official code example",
      "evidenceType": "Code usage",
      "evidenceUrl": "https://github.com/XRPLF/xrpl-dev-portal/blob/94abc7765e4691f3167c3672a7d9726afccb36bd/_code-samples/build-a-desktop-wallet/py/verify_domain.py#L23-L27",
      "sourcePath": "_code-samples/build-a-desktop-wallet/py/verify_domain.py",
      "commitSha": "94abc7765e4691f3167c3672a7d9726afccb36bd",
      "evidenceSnippet": "    toml_url = f\"https://{domain}/.well-known/xrp-ledger.toml\"\n    toml_response = requests.get(toml_url)\n    if toml_response.ok:\n        parsed_toml = toml.loads(toml_response.text)\n        toml_accounts = parsed_toml.get(\"ACCOUNTS\", [])",
      "lineStart": 23,
      "lineEnd": 27,
      "checkedAt": "2026-10-25T01:26:47Z",
      "archived": false,
      "repositoryOwner": "XRPLF",
      "defaultBranch": "master",
      "sourceBlobSha": "76c56f3b8483bf796af0d6c13f39829f662d448e",
      "sourceSha256": "cae6e0cb785ba14414d393bfbd1ef50d8e68db59abf23477ba7251e740e430b5",
      "sector": "crypto",
      "avatarSource": "https://avatars.githubusercontent.com/u/67929741?v=4",
      "avatarPath": "/static/observatory/organizations/xrpl.png",
      "usageDetails": {
        "title": "Checking a wallet account’s advertised domain",
        "explanation": "An XRP Ledger desktop wallet example uses Requests to retrieve the xrp-ledger.toml file from a domain advertised by an account. It decodes the account’s Domain field, builds the standard HTTPS well-known URL, and parses the downloaded TOML. The function checks whether that file lists the same account address. This demonstrates a domain association check within the sample wallet workflow.",
        "flow": [
          "Decode the domain advertised in the ledger account’s Domain field.",
          "Download the domain’s well-known xrp-ledger.toml file over HTTPS using Requests.",
          "Parse the file and check whether its accounts include the address."
        ],
        "scopeNote": "This is a documentation example for checking domain association, not proof of a person’s identity or XRP Ledger node implementation.",
        "verification": "code",
        "sources": [
          {
            "label": "Domain file retrieval and account comparison",
            "repository": "XRPLF/xrpl-dev-portal",
            "commitSha": "94abc7765e4691f3167c3672a7d9726afccb36bd",
            "sourcePath": "_code-samples/build-a-desktop-wallet/py/verify_domain.py",
            "lineStart": 10,
            "lineEnd": 32,
            "evidenceUrl": "https://github.com/XRPLF/xrpl-dev-portal/blob/94abc7765e4691f3167c3672a7d9726afccb36bd/_code-samples/build-a-desktop-wallet/py/verify_domain.py#L10-L32",
            "checkedAt": "2026-10-25T01:26:47Z",
            "sourceSha256": "cae6e0cb785ba14414d393bfbd1ef50d8e68db59abf23477ba7251e740e430b5",
            "sourceBlobSha": "76c56f3b8483bf796af0d6c13f39829f662d448e"
          }
        ]
      }
    },
    {
      "id": "yearn-monitoring",
      "organization": "Yearn",
      "project": "DeFi monitoring HTTP helper",
      "repository": "yearn/monitoring",
      "category": "Crypto & Web3",
      "summary": "Yearn's monitoring helper sends HTTP calls through Requests with retry handling.",
      "evidenceType": "Code usage",
      "evidenceUrl": "https://github.com/yearn/monitoring/blob/8cb745ff9ff35970ea21ad9a8b861c869916b22b/utils/http_client.py#L53-L53",
      "sourcePath": "utils/http_client.py",
      "commitSha": "8cb745ff9ff35970ea21ad9a8b861c869916b22b",
      "evidenceSnippet": "            response = requests.request(method, url, timeout=timeout, **kwargs)",
      "lineStart": 53,
      "lineEnd": 53,
      "checkedAt": "2026-10-25T02:52:38Z",
      "archived": false,
      "sourceBlobSha": "6e4854fbd7c86e274055937d0a4f4ea6ab45b5fb",
      "sector": "crypto",
      "useScope": "Monitoring tooling",
      "avatarSource": "https://avatars.githubusercontent.com/u/60162948?v=4",
      "avatarPath": "/static/observatory/organizations/yearn-monitoring.png",
      "ownershipJustification": "The non-fork yearn-owned repository links curation.yearn.fi/monitoring and describes monitoring and alerting scripts.",
      "defaultBranch": "main",
      "sourceSha256": "b652da665e351f0fae6bbfad1aeb0c9f5fd0a9f3341834e8201bf6d65a734ca1",
      "usageDetails": {
        "title": "Retrying external HTTP calls for monitoring",
        "explanation": "Yearn’s monitoring repository includes an HTTP helper that uses Requests to call a URL selected by its caller. It applies a timeout, checks the status, and retries rate limiting, server failures, and connection problems with increasing delays. Other client errors are raised immediately. A companion function decodes successful JSON responses, giving monitoring code a common way to read external services.",
        "flow": [
          "Read the target URL, method, timeout, and configured retry limits.",
          "Send the request and retry eligible failures with increasing delays.",
          "Return a successful response or decode its JSON for the caller."
        ],
        "scopeNote": "The verified component is shared monitoring HTTP code, not Requests executing Yearn vault smart contracts or establishing live production activity.",
        "verification": "code",
        "sources": [
          {
            "label": "HTTP retry loop and JSON wrapper",
            "repository": "yearn/monitoring",
            "commitSha": "8cb745ff9ff35970ea21ad9a8b861c869916b22b",
            "sourcePath": "utils/http_client.py",
            "lineStart": 43,
            "lineEnd": 99,
            "evidenceUrl": "https://github.com/yearn/monitoring/blob/8cb745ff9ff35970ea21ad9a8b861c869916b22b/utils/http_client.py#L43-L99",
            "checkedAt": "2026-10-25T02:52:38Z",
            "sourceSha256": "b652da665e351f0fae6bbfad1aeb0c9f5fd0a9f3341834e8201bf6d65a734ca1",
            "sourceBlobSha": "6e4854fbd7c86e274055937d0a4f4ea6ab45b5fb"
          }
        ]
      }
    },
    {
      "id": "yelp-bravado",
      "organization": "Yelp",
      "project": "Bravado",
      "repository": "Yelp/bravado",
      "category": "Developer tools",
      "summary": "Yelp's Bravado Swagger client declares Requests as an installation dependency.",
      "evidenceType": "Direct dependency",
      "evidenceUrl": "https://github.com/Yelp/bravado/blob/f6a6515b608200acb0414596810849f72cea8844/setup.py#L41-L41",
      "sourcePath": "setup.py",
      "commitSha": "f6a6515b608200acb0414596810849f72cea8844",
      "evidenceSnippet": "        'requests >= 2.17',",
      "lineStart": 41,
      "lineEnd": 41,
      "checkedAt": "2026-10-25T01:27:26Z",
      "archived": false,
      "sourceSha256": "6e49ecc5834e5b18a35275cedd74b0351cc0f31619d00043919080eac1f2862e",
      "sourceBlobSha": "d1e2e9eae66882400169968ee8d39f40d76a520a",
      "sector": "technology",
      "useScope": "API client",
      "avatarSource": "https://avatars.githubusercontent.com/u/49071?v=4",
      "avatarPath": "/static/observatory/organizations/yelp-bravado.png",
      "usageDetails": {
        "title": "Executing Swagger client operations through Requests adapters",
        "explanation": "Bravado's Requests client turns an API operation's parameters into an authenticated Requests request and wraps it in a future-style result. Its adapter prepares the request in a reusable session, merges certificate and proxy settings, and sends with timeout and redirect options. The returned response is adapted so Bravado's generated API interface can process it consistently.",
        "flow": [
          "The client converts operation parameters into an authenticated Requests request.",
          "Its adapter prepares and sends the request through a reusable session.",
          "Bravado adapts the response into its future-style API result."
        ],
        "scopeNote": "This describes Yelp's public Bravado library and its Requests backend. It does not demonstrate use by every Yelp service or observe live traffic.",
        "verification": "code",
        "sources": [
          {
            "label": "Requests response adapter and session",
            "repository": "Yelp/bravado",
            "commitSha": "f6a6515b608200acb0414596810849f72cea8844",
            "sourcePath": "bravado/requests_client.py",
            "lineStart": 249,
            "lineEnd": 307,
            "evidenceUrl": "https://github.com/Yelp/bravado/blob/f6a6515b608200acb0414596810849f72cea8844/bravado/requests_client.py#L249-L307",
            "checkedAt": "2026-10-25T03:10:24Z",
            "sourceSha256": "f1142fc328316bb446d6e1fe43d5064b6f20ef8085c2d298b4795317e6ddba7b",
            "sourceBlobSha": "11bf0f89f26b0df290ed7803dc1f40c7c32fcee3"
          },
          {
            "label": "Authenticated operation and future result",
            "repository": "Yelp/bravado",
            "commitSha": "f6a6515b608200acb0414596810849f72cea8844",
            "sourcePath": "bravado/requests_client.py",
            "lineStart": 376,
            "lineEnd": 445,
            "evidenceUrl": "https://github.com/Yelp/bravado/blob/f6a6515b608200acb0414596810849f72cea8844/bravado/requests_client.py#L376-L445",
            "checkedAt": "2026-10-25T03:10:24Z",
            "sourceSha256": "f1142fc328316bb446d6e1fe43d5064b6f20ef8085c2d298b4795317e6ddba7b",
            "sourceBlobSha": "11bf0f89f26b0df290ed7803dc1f40c7c32fcee3"
          }
        ]
      }
    },
    {
      "id": "zcash-integration",
      "organization": "Zcash",
      "project": "Integration smoke tests",
      "repository": "zcash/integration-tests",
      "category": "Crypto & Web3",
      "summary": "Zcash's smoke tests create Requests sessions for HTTP checks.",
      "evidenceType": "Code usage",
      "evidenceUrl": "https://github.com/zcash/integration-tests/blob/f93ee4a5faeab99677eee17a1baca1e25c95864f/qa/zcash/smoke_tests.py#L266-L266",
      "sourcePath": "qa/zcash/smoke_tests.py",
      "commitSha": "f93ee4a5faeab99677eee17a1baca1e25c95864f",
      "evidenceSnippet": "    with requests.Session() as session:",
      "lineStart": 266,
      "lineEnd": 266,
      "checkedAt": "2026-10-25T02:52:38Z",
      "archived": false,
      "sourceBlobSha": "cb421bd0a22a0c6c3509c998efa9754b0b7f004f",
      "sector": "crypto",
      "useScope": "Tests",
      "avatarSource": "https://avatars.githubusercontent.com/u/16122764?v=4",
      "avatarPath": "/static/observatory/organizations/zcash-integration.png",
      "ownershipJustification": "The non-fork zcash/integration-tests repository identifies itself as integration testing for the Zcash ecosystem.",
      "defaultBranch": "main",
      "sourceSha256": "4eba2dcc22f7cf5006e0aa898c56c17a9f5c94f420e29f737b4e6b7b05152dec",
      "usageDetails": {
        "title": "Obtaining faucet funds for Zcash smoke tests",
        "explanation": "Zcash’s integration smoke tests use a Requests session to interact with a testnet faucet. The helper first visits the faucet to obtain a CSRF cookie, then submits a destination address and token with the required Referer header. Another helper retrieves donation address data as JSON. These HTTP calls provide supporting faucet interactions for tests that need testnet funds and address information.",
        "flow": [
          "Visit the testnet faucet with a session to receive its cookie.",
          "Submit the test address and CSRF token with the required header.",
          "Read faucet responses and retrieve address metadata for integration tests."
        ],
        "scopeNote": "This evidence covers testnet faucet helpers in integration tests, not mainnet coin creation or the Zcash node’s consensus implementation.",
        "verification": "code",
        "sources": [
          {
            "label": "Faucet session, CSRF submission, and address retrieval",
            "repository": "zcash/integration-tests",
            "commitSha": "f93ee4a5faeab99677eee17a1baca1e25c95864f",
            "sourcePath": "qa/zcash/smoke_tests.py",
            "lineStart": 265,
            "lineEnd": 288,
            "evidenceUrl": "https://github.com/zcash/integration-tests/blob/f93ee4a5faeab99677eee17a1baca1e25c95864f/qa/zcash/smoke_tests.py#L265-L288",
            "checkedAt": "2026-10-25T02:52:38Z",
            "sourceSha256": "4eba2dcc22f7cf5006e0aa898c56c17a9f5c94f420e29f737b4e6b7b05152dec",
            "sourceBlobSha": "cb421bd0a22a0c6c3509c998efa9754b0b7f004f"
          }
        ]
      }
    }
  ],
  "usageDetailsPolicy": "Each project includes a plain-language explanation, a three-step flow, an explicit scope note and immutable source links. These describe the reviewed code paths, not live runtime activity.",
  "historicalSdkUsage": [
    {
      "id": "openai-python-historical",
      "organization": "OpenAI",
      "project": "Official Python SDK",
      "version": "0.28.1",
      "title": "Historically used in the official Python SDK",
      "summary": "OpenAI's official Python SDK v0.28.1 used Requests to send synchronous API calls.",
      "details": "The client created a Requests session, configured its connection adapter, and sent API calls through that session. Its separate asynchronous path used aiohttp. OpenAI's v1 migration guide documents the later move to HTTPX.",
      "scopeNote": "Historical evidence for SDK v0.28.1. This entry does not establish present-day SDK dependencies or live OpenAI activity.",
      "repository": "openai/openai-python",
      "commitSha": "f7ccce126325ea35b6e5224ab954652c97a74896",
      "sourcePath": "openai/api_requestor.py",
      "lineStart": 88,
      "lineEnd": 96,
      "requestLineStart": 606,
      "requestLineEnd": 614,
      "migrationUrl": "https://github.com/openai/openai-python/discussions/742",
      "migrationLabel": "OpenAI v1 migration guide",
      "sourceBlobSha": "c051bc64f28eb878d1a3a812228d3eebe48a8c63",
      "checkedAt": "2026-10-26",
      "evidenceSnippet": "s = requests.Session()",
      "evidenceUrl": "https://github.com/openai/openai-python/blob/f7ccce126325ea35b6e5224ab954652c97a74896/openai/api_requestor.py#L88-L96",
      "requestEvidenceUrl": "https://github.com/openai/openai-python/blob/f7ccce126325ea35b6e5224ab954652c97a74896/openai/api_requestor.py#L606-L614"
    },
    {
      "id": "anthropic-python-historical",
      "organization": "Anthropic",
      "project": "Official Python SDK",
      "version": "0.2.9",
      "title": "Historically used in the official Python SDK",
      "summary": "Anthropic's official Python SDK v0.2.9 used Requests to send synchronous API calls.",
      "details": "The client created a Requests session with a retry adapter, then used that session for HTTP calls to the Anthropic API. Its separate asynchronous path used aiohttp. Later SDK versions moved away from Requests; the migration documentation describes the subsequent HTTPX-to-HTTPX2 transition.",
      "scopeNote": "Historical evidence for SDK v0.2.9. This entry does not establish present-day SDK dependencies or live Anthropic activity.",
      "repository": "anthropics/anthropic-sdk-python",
      "commitSha": "d6e51aeb20144652dd9c76a5f596a9e6d3b0a8dc",
      "sourcePath": "anthropic/api.py",
      "lineStart": 51,
      "lineEnd": 59,
      "requestLineStart": 117,
      "requestLineEnd": 124,
      "migrationUrl": "https://github.com/anthropics/anthropic-sdk-python/blob/main/MIGRATION.md",
      "migrationLabel": "Anthropic migration documentation",
      "sourceBlobSha": "741b57c595960ad47a68e2f3e2336cf2e720e8a2",
      "checkedAt": "2026-10-26",
      "evidenceSnippet": "self._session = requests.Session()",
      "evidenceUrl": "https://github.com/anthropics/anthropic-sdk-python/blob/d6e51aeb20144652dd9c76a5f596a9e6d3b0a8dc/anthropic/api.py#L51-L59",
      "requestEvidenceUrl": "https://github.com/anthropics/anthropic-sdk-python/blob/d6e51aeb20144652dd9c76a5f596a9e6d3b0a8dc/anthropic/api.py#L117-L124"
    }
  ],
  "historicalSdkUsagePolicy": "Historical SDK examples are shown separately and are not included in the project or organization counts for the reviewed directory. Each example identifies the SDK version and immutable source revision; it is not a claim of current runtime activity."
}
