{"openapi":"3.1.0","info":{"title":"CertScore API v2 draft","version":"0.1.0","description":"Draft resource-oriented CertScore public API contract for scans, jobs, findings, domain latest scans, and Pulse projections. CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."},"servers":[{"url":"https://certscore.ai"}],"security":[{"bearerAuth":[]}],"paths":{"/api/v2/scans":{"post":{"operationId":"createScan","tags":["Scans"],"summary":"Create or reuse a CertScore public-web scan.","description":"Submit a public URL for CertScore automated public-web observations. The response may be a queued job or an already completed scan reference. This v2 route reuses the existing Pulse scan creation, reuse, validation, and throttling path, then returns v2 Scan or ScanJob resources.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateScanRequest"},"examples":{"create":{"summary":"Create or reuse a public-web scan","value":{"url":"https://example.com","freshness":"latest","scanFrom":"eu_ie"}}}}}},"responses":{"200":{"description":"A completed or reusable scan resource is available.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Scan"},"examples":{"completed":{"value":{"type":"certscore_scan","scanId":"00000000-0000-4000-8000-000000000123","domain":"example.com","url":"https://example.com","status":"completed","score":82,"riskLevel":"review_recommended","links":{"self":"https://certscore.ai/api/v2/scans/00000000-0000-4000-8000-000000000123","status":"https://certscore.ai/api/v2/scans/00000000-0000-4000-8000-000000000123/status","findings":"https://certscore.ai/api/v2/scans/00000000-0000-4000-8000-000000000123/findings","pulse":"https://certscore.ai/api/v2/scans/00000000-0000-4000-8000-000000000123/pulse","report":"https://certscore.ai/scan/00000000-0000-4000-8000-000000000123"},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}}}}}},"202":{"description":"Scan job queued or running.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."},"Retry-After":{"schema":{"type":"integer"},"description":"Recommended retry or polling delay in seconds."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScanJob"},"examples":{"pending":{"value":{"type":"certscore_scan_job","jobId":"pulse_job_123","scanId":"00000000-0000-4000-8000-000000000123","domain":"example.com","status":"running","phase":"scan_running","retryAfterSeconds":10,"links":{"self":"https://certscore.ai/api/v2/scans/00000000-0000-4000-8000-000000000123/status","status":"https://certscore.ai/api/v2/scans/00000000-0000-4000-8000-000000000123/status"},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}}}}}},"400":{"description":"Invalid request.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"examples":{"invalidRequest":{"summary":"Invalid request","value":{"type":"certscore_api_error","error":{"code":"invalid_request","message":"Invalid request."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"unauthorized":{"summary":"Missing or invalid API key","value":{"type":"certscore_api_error","error":{"code":"unauthorized","message":"Missing or invalid API key."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"forbidden":{"summary":"Missing required scope","value":{"type":"certscore_api_error","error":{"code":"forbidden","message":"API key is missing the required scope."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"notFound":{"summary":"Resource not found","value":{"type":"certscore_api_error","error":{"code":"not_found","message":"Scan not found."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"rateLimited":{"summary":"Rate limited","value":{"type":"certscore_api_error","error":{"code":"rate_limited","message":"Rate limit reached. Retry after the recommended delay.","retryAfterSeconds":60},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"internalError":{"summary":"Temporary service error","value":{"type":"certscore_api_error","error":{"code":"internal_error","message":"CertScore API v2 is temporarily unavailable. Try again later."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}}}}}},"401":{"description":"Missing or invalid API key.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"examples":{"invalidRequest":{"summary":"Invalid request","value":{"type":"certscore_api_error","error":{"code":"invalid_request","message":"Invalid request."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"unauthorized":{"summary":"Missing or invalid API key","value":{"type":"certscore_api_error","error":{"code":"unauthorized","message":"Missing or invalid API key."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"forbidden":{"summary":"Missing required scope","value":{"type":"certscore_api_error","error":{"code":"forbidden","message":"API key is missing the required scope."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"notFound":{"summary":"Resource not found","value":{"type":"certscore_api_error","error":{"code":"not_found","message":"Scan not found."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"rateLimited":{"summary":"Rate limited","value":{"type":"certscore_api_error","error":{"code":"rate_limited","message":"Rate limit reached. Retry after the recommended delay.","retryAfterSeconds":60},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"internalError":{"summary":"Temporary service error","value":{"type":"certscore_api_error","error":{"code":"internal_error","message":"CertScore API v2 is temporarily unavailable. Try again later."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}}}}}},"403":{"description":"API key is missing the required scope.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"examples":{"invalidRequest":{"summary":"Invalid request","value":{"type":"certscore_api_error","error":{"code":"invalid_request","message":"Invalid request."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"unauthorized":{"summary":"Missing or invalid API key","value":{"type":"certscore_api_error","error":{"code":"unauthorized","message":"Missing or invalid API key."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"forbidden":{"summary":"Missing required scope","value":{"type":"certscore_api_error","error":{"code":"forbidden","message":"API key is missing the required scope."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"notFound":{"summary":"Resource not found","value":{"type":"certscore_api_error","error":{"code":"not_found","message":"Scan not found."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"rateLimited":{"summary":"Rate limited","value":{"type":"certscore_api_error","error":{"code":"rate_limited","message":"Rate limit reached. Retry after the recommended delay.","retryAfterSeconds":60},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"internalError":{"summary":"Temporary service error","value":{"type":"certscore_api_error","error":{"code":"internal_error","message":"CertScore API v2 is temporarily unavailable. Try again later."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}}}}}},"429":{"description":"Rate limited.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."},"Retry-After":{"schema":{"type":"integer"},"description":"Recommended retry or polling delay in seconds."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"examples":{"invalidRequest":{"summary":"Invalid request","value":{"type":"certscore_api_error","error":{"code":"invalid_request","message":"Invalid request."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"unauthorized":{"summary":"Missing or invalid API key","value":{"type":"certscore_api_error","error":{"code":"unauthorized","message":"Missing or invalid API key."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"forbidden":{"summary":"Missing required scope","value":{"type":"certscore_api_error","error":{"code":"forbidden","message":"API key is missing the required scope."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"notFound":{"summary":"Resource not found","value":{"type":"certscore_api_error","error":{"code":"not_found","message":"Scan not found."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"rateLimited":{"summary":"Rate limited","value":{"type":"certscore_api_error","error":{"code":"rate_limited","message":"Rate limit reached. Retry after the recommended delay.","retryAfterSeconds":60},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"internalError":{"summary":"Temporary service error","value":{"type":"certscore_api_error","error":{"code":"internal_error","message":"CertScore API v2 is temporarily unavailable. Try again later."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}}}}}},"500":{"description":"Temporary service error.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"examples":{"invalidRequest":{"summary":"Invalid request","value":{"type":"certscore_api_error","error":{"code":"invalid_request","message":"Invalid request."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"unauthorized":{"summary":"Missing or invalid API key","value":{"type":"certscore_api_error","error":{"code":"unauthorized","message":"Missing or invalid API key."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"forbidden":{"summary":"Missing required scope","value":{"type":"certscore_api_error","error":{"code":"forbidden","message":"API key is missing the required scope."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"notFound":{"summary":"Resource not found","value":{"type":"certscore_api_error","error":{"code":"not_found","message":"Scan not found."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"rateLimited":{"summary":"Rate limited","value":{"type":"certscore_api_error","error":{"code":"rate_limited","message":"Rate limit reached. Retry after the recommended delay.","retryAfterSeconds":60},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"internalError":{"summary":"Temporary service error","value":{"type":"certscore_api_error","error":{"code":"internal_error","message":"CertScore API v2 is temporarily unavailable. Try again later."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}}}}}}}}},"/api/v2/scans/{scanId}":{"get":{"operationId":"getScan","tags":["Scans"],"summary":"Retrieve a CertScore scan resource.","parameters":[{"name":"scanId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Scan resource.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Scan"},"examples":{"completed":{"value":{"type":"certscore_scan","scanId":"00000000-0000-4000-8000-000000000123","domain":"example.com","url":"https://example.com","status":"completed","score":82,"riskLevel":"review_recommended","links":{"self":"https://certscore.ai/api/v2/scans/00000000-0000-4000-8000-000000000123","status":"https://certscore.ai/api/v2/scans/00000000-0000-4000-8000-000000000123/status","findings":"https://certscore.ai/api/v2/scans/00000000-0000-4000-8000-000000000123/findings","pulse":"https://certscore.ai/api/v2/scans/00000000-0000-4000-8000-000000000123/pulse","report":"https://certscore.ai/scan/00000000-0000-4000-8000-000000000123"},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}}}}}},"400":{"description":"Invalid scan ID.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"examples":{"invalidRequest":{"summary":"Invalid request","value":{"type":"certscore_api_error","error":{"code":"invalid_request","message":"Invalid request."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"unauthorized":{"summary":"Missing or invalid API key","value":{"type":"certscore_api_error","error":{"code":"unauthorized","message":"Missing or invalid API key."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"forbidden":{"summary":"Missing required scope","value":{"type":"certscore_api_error","error":{"code":"forbidden","message":"API key is missing the required scope."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"notFound":{"summary":"Resource not found","value":{"type":"certscore_api_error","error":{"code":"not_found","message":"Scan not found."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"rateLimited":{"summary":"Rate limited","value":{"type":"certscore_api_error","error":{"code":"rate_limited","message":"Rate limit reached. Retry after the recommended delay.","retryAfterSeconds":60},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"internalError":{"summary":"Temporary service error","value":{"type":"certscore_api_error","error":{"code":"internal_error","message":"CertScore API v2 is temporarily unavailable. Try again later."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}}}}}},"404":{"description":"Scan not found.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"examples":{"invalidRequest":{"summary":"Invalid request","value":{"type":"certscore_api_error","error":{"code":"invalid_request","message":"Invalid request."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"unauthorized":{"summary":"Missing or invalid API key","value":{"type":"certscore_api_error","error":{"code":"unauthorized","message":"Missing or invalid API key."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"forbidden":{"summary":"Missing required scope","value":{"type":"certscore_api_error","error":{"code":"forbidden","message":"API key is missing the required scope."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"notFound":{"summary":"Resource not found","value":{"type":"certscore_api_error","error":{"code":"not_found","message":"Scan not found."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"rateLimited":{"summary":"Rate limited","value":{"type":"certscore_api_error","error":{"code":"rate_limited","message":"Rate limit reached. Retry after the recommended delay.","retryAfterSeconds":60},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"internalError":{"summary":"Temporary service error","value":{"type":"certscore_api_error","error":{"code":"internal_error","message":"CertScore API v2 is temporarily unavailable. Try again later."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}}}}}},"500":{"description":"Temporary service error.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"examples":{"invalidRequest":{"summary":"Invalid request","value":{"type":"certscore_api_error","error":{"code":"invalid_request","message":"Invalid request."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"unauthorized":{"summary":"Missing or invalid API key","value":{"type":"certscore_api_error","error":{"code":"unauthorized","message":"Missing or invalid API key."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"forbidden":{"summary":"Missing required scope","value":{"type":"certscore_api_error","error":{"code":"forbidden","message":"API key is missing the required scope."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"notFound":{"summary":"Resource not found","value":{"type":"certscore_api_error","error":{"code":"not_found","message":"Scan not found."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"rateLimited":{"summary":"Rate limited","value":{"type":"certscore_api_error","error":{"code":"rate_limited","message":"Rate limit reached. Retry after the recommended delay.","retryAfterSeconds":60},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"internalError":{"summary":"Temporary service error","value":{"type":"certscore_api_error","error":{"code":"internal_error","message":"CertScore API v2 is temporarily unavailable. Try again later."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}}}}}}}}},"/api/v2/scans/{scanId}/status":{"get":{"operationId":"getScanStatus","tags":["Scans"],"summary":"Retrieve scan job/status information.","parameters":[{"name":"scanId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Scan status.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScanJob"},"examples":{"running":{"value":{"type":"certscore_scan_job","jobId":"pulse_job_123","scanId":"00000000-0000-4000-8000-000000000123","domain":"example.com","status":"running","phase":"scan_running","retryAfterSeconds":10,"links":{"self":"https://certscore.ai/api/v2/scans/00000000-0000-4000-8000-000000000123/status","status":"https://certscore.ai/api/v2/scans/00000000-0000-4000-8000-000000000123/status"},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}}}}}},"400":{"description":"Invalid scan ID.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"examples":{"invalidRequest":{"summary":"Invalid request","value":{"type":"certscore_api_error","error":{"code":"invalid_request","message":"Invalid request."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"unauthorized":{"summary":"Missing or invalid API key","value":{"type":"certscore_api_error","error":{"code":"unauthorized","message":"Missing or invalid API key."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"forbidden":{"summary":"Missing required scope","value":{"type":"certscore_api_error","error":{"code":"forbidden","message":"API key is missing the required scope."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"notFound":{"summary":"Resource not found","value":{"type":"certscore_api_error","error":{"code":"not_found","message":"Scan not found."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"rateLimited":{"summary":"Rate limited","value":{"type":"certscore_api_error","error":{"code":"rate_limited","message":"Rate limit reached. Retry after the recommended delay.","retryAfterSeconds":60},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"internalError":{"summary":"Temporary service error","value":{"type":"certscore_api_error","error":{"code":"internal_error","message":"CertScore API v2 is temporarily unavailable. Try again later."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}}}}}},"404":{"description":"Scan or job not found.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"examples":{"invalidRequest":{"summary":"Invalid request","value":{"type":"certscore_api_error","error":{"code":"invalid_request","message":"Invalid request."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"unauthorized":{"summary":"Missing or invalid API key","value":{"type":"certscore_api_error","error":{"code":"unauthorized","message":"Missing or invalid API key."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"forbidden":{"summary":"Missing required scope","value":{"type":"certscore_api_error","error":{"code":"forbidden","message":"API key is missing the required scope."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"notFound":{"summary":"Resource not found","value":{"type":"certscore_api_error","error":{"code":"not_found","message":"Scan not found."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"rateLimited":{"summary":"Rate limited","value":{"type":"certscore_api_error","error":{"code":"rate_limited","message":"Rate limit reached. Retry after the recommended delay.","retryAfterSeconds":60},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"internalError":{"summary":"Temporary service error","value":{"type":"certscore_api_error","error":{"code":"internal_error","message":"CertScore API v2 is temporarily unavailable. Try again later."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}}}}}},"500":{"description":"Temporary service error.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"examples":{"invalidRequest":{"summary":"Invalid request","value":{"type":"certscore_api_error","error":{"code":"invalid_request","message":"Invalid request."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"unauthorized":{"summary":"Missing or invalid API key","value":{"type":"certscore_api_error","error":{"code":"unauthorized","message":"Missing or invalid API key."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"forbidden":{"summary":"Missing required scope","value":{"type":"certscore_api_error","error":{"code":"forbidden","message":"API key is missing the required scope."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"notFound":{"summary":"Resource not found","value":{"type":"certscore_api_error","error":{"code":"not_found","message":"Scan not found."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"rateLimited":{"summary":"Rate limited","value":{"type":"certscore_api_error","error":{"code":"rate_limited","message":"Rate limit reached. Retry after the recommended delay.","retryAfterSeconds":60},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"internalError":{"summary":"Temporary service error","value":{"type":"certscore_api_error","error":{"code":"internal_error","message":"CertScore API v2 is temporarily unavailable. Try again later."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}}}}}}}}},"/api/v2/scans/{scanId}/findings":{"get":{"operationId":"listScanFindings","tags":["Findings"],"summary":"List already-projected public-safe findings for a scan.","parameters":[{"name":"scanId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Finding list.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FindingList"},"examples":{"findings":{"value":{"type":"certscore_finding_list","scanId":"00000000-0000-4000-8000-000000000123","findings":[{"type":"certscore_finding","id":"pre_consent_tracking_detected","scanId":"00000000-0000-4000-8000-000000000123","label":"Tracking started before consent","criticality":"high","confidence":"strong","plainEnglish":"A third-party tracking request was observed before a recorded consent choice.","reviewLenses":["Privacy and consent"],"evidence":{"basis":"runtime_observation","summary":"Public-safe projected evidence summary from the completed report.","phase":"before_consent","exampleCount":2,"examplesShown":1,"examples":[{"type":"request","vendor":"Example Analytics","urlHost":"analytics.example.test","phase":"before_consent"}],"hasTimingAnchor":true,"hasVendorAnchor":true,"hasConsentContext":true},"nextStep":"Review whether this vendor should be consent-gated.","disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}],"links":{"self":"https://certscore.ai/api/v2/scans/00000000-0000-4000-8000-000000000123/findings"},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}}}}}},"400":{"description":"Invalid scan ID.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"examples":{"invalidRequest":{"summary":"Invalid request","value":{"type":"certscore_api_error","error":{"code":"invalid_request","message":"Invalid request."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"unauthorized":{"summary":"Missing or invalid API key","value":{"type":"certscore_api_error","error":{"code":"unauthorized","message":"Missing or invalid API key."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"forbidden":{"summary":"Missing required scope","value":{"type":"certscore_api_error","error":{"code":"forbidden","message":"API key is missing the required scope."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"notFound":{"summary":"Resource not found","value":{"type":"certscore_api_error","error":{"code":"not_found","message":"Scan not found."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"rateLimited":{"summary":"Rate limited","value":{"type":"certscore_api_error","error":{"code":"rate_limited","message":"Rate limit reached. Retry after the recommended delay.","retryAfterSeconds":60},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"internalError":{"summary":"Temporary service error","value":{"type":"certscore_api_error","error":{"code":"internal_error","message":"CertScore API v2 is temporarily unavailable. Try again later."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}}}}}},"404":{"description":"Scan not found.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"examples":{"invalidRequest":{"summary":"Invalid request","value":{"type":"certscore_api_error","error":{"code":"invalid_request","message":"Invalid request."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"unauthorized":{"summary":"Missing or invalid API key","value":{"type":"certscore_api_error","error":{"code":"unauthorized","message":"Missing or invalid API key."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"forbidden":{"summary":"Missing required scope","value":{"type":"certscore_api_error","error":{"code":"forbidden","message":"API key is missing the required scope."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"notFound":{"summary":"Resource not found","value":{"type":"certscore_api_error","error":{"code":"not_found","message":"Scan not found."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"rateLimited":{"summary":"Rate limited","value":{"type":"certscore_api_error","error":{"code":"rate_limited","message":"Rate limit reached. Retry after the recommended delay.","retryAfterSeconds":60},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"internalError":{"summary":"Temporary service error","value":{"type":"certscore_api_error","error":{"code":"internal_error","message":"CertScore API v2 is temporarily unavailable. Try again later."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}}}}}},"500":{"description":"Temporary service error.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"examples":{"invalidRequest":{"summary":"Invalid request","value":{"type":"certscore_api_error","error":{"code":"invalid_request","message":"Invalid request."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"unauthorized":{"summary":"Missing or invalid API key","value":{"type":"certscore_api_error","error":{"code":"unauthorized","message":"Missing or invalid API key."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"forbidden":{"summary":"Missing required scope","value":{"type":"certscore_api_error","error":{"code":"forbidden","message":"API key is missing the required scope."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"notFound":{"summary":"Resource not found","value":{"type":"certscore_api_error","error":{"code":"not_found","message":"Scan not found."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"rateLimited":{"summary":"Rate limited","value":{"type":"certscore_api_error","error":{"code":"rate_limited","message":"Rate limit reached. Retry after the recommended delay.","retryAfterSeconds":60},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"internalError":{"summary":"Temporary service error","value":{"type":"certscore_api_error","error":{"code":"internal_error","message":"CertScore API v2 is temporarily unavailable. Try again later."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}}}}}}}}},"/api/v2/scans/{scanId}/findings/{findingId}":{"get":{"operationId":"getScanFinding","tags":["Findings"],"summary":"Retrieve one already-projected public-safe finding.","parameters":[{"name":"scanId","in":"path","required":true,"schema":{"type":"string"}},{"name":"findingId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Finding detail.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Finding"},"examples":{"finding":{"value":{"type":"certscore_finding","id":"pre_consent_tracking_detected","scanId":"00000000-0000-4000-8000-000000000123","label":"Tracking started before consent","criticality":"high","confidence":"strong","plainEnglish":"A third-party tracking request was observed before a recorded consent choice.","reviewLenses":["Privacy and consent"],"evidence":{"basis":"runtime_observation","summary":"Public-safe projected evidence summary from the completed report.","phase":"before_consent","exampleCount":2,"examplesShown":1,"examples":[{"type":"request","vendor":"Example Analytics","urlHost":"analytics.example.test","phase":"before_consent"}],"hasTimingAnchor":true,"hasVendorAnchor":true,"hasConsentContext":true},"nextStep":"Review whether this vendor should be consent-gated.","disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}}}}}},"400":{"description":"Invalid scan or finding ID.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"examples":{"invalidRequest":{"summary":"Invalid request","value":{"type":"certscore_api_error","error":{"code":"invalid_request","message":"Invalid request."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"unauthorized":{"summary":"Missing or invalid API key","value":{"type":"certscore_api_error","error":{"code":"unauthorized","message":"Missing or invalid API key."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"forbidden":{"summary":"Missing required scope","value":{"type":"certscore_api_error","error":{"code":"forbidden","message":"API key is missing the required scope."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"notFound":{"summary":"Resource not found","value":{"type":"certscore_api_error","error":{"code":"not_found","message":"Scan not found."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"rateLimited":{"summary":"Rate limited","value":{"type":"certscore_api_error","error":{"code":"rate_limited","message":"Rate limit reached. Retry after the recommended delay.","retryAfterSeconds":60},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"internalError":{"summary":"Temporary service error","value":{"type":"certscore_api_error","error":{"code":"internal_error","message":"CertScore API v2 is temporarily unavailable. Try again later."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}}}}}},"404":{"description":"Finding not found.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"examples":{"invalidRequest":{"summary":"Invalid request","value":{"type":"certscore_api_error","error":{"code":"invalid_request","message":"Invalid request."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"unauthorized":{"summary":"Missing or invalid API key","value":{"type":"certscore_api_error","error":{"code":"unauthorized","message":"Missing or invalid API key."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"forbidden":{"summary":"Missing required scope","value":{"type":"certscore_api_error","error":{"code":"forbidden","message":"API key is missing the required scope."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"notFound":{"summary":"Resource not found","value":{"type":"certscore_api_error","error":{"code":"not_found","message":"Scan not found."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"rateLimited":{"summary":"Rate limited","value":{"type":"certscore_api_error","error":{"code":"rate_limited","message":"Rate limit reached. Retry after the recommended delay.","retryAfterSeconds":60},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"internalError":{"summary":"Temporary service error","value":{"type":"certscore_api_error","error":{"code":"internal_error","message":"CertScore API v2 is temporarily unavailable. Try again later."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}}}}}},"500":{"description":"Temporary service error.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"examples":{"invalidRequest":{"summary":"Invalid request","value":{"type":"certscore_api_error","error":{"code":"invalid_request","message":"Invalid request."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"unauthorized":{"summary":"Missing or invalid API key","value":{"type":"certscore_api_error","error":{"code":"unauthorized","message":"Missing or invalid API key."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"forbidden":{"summary":"Missing required scope","value":{"type":"certscore_api_error","error":{"code":"forbidden","message":"API key is missing the required scope."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"notFound":{"summary":"Resource not found","value":{"type":"certscore_api_error","error":{"code":"not_found","message":"Scan not found."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"rateLimited":{"summary":"Rate limited","value":{"type":"certscore_api_error","error":{"code":"rate_limited","message":"Rate limit reached. Retry after the recommended delay.","retryAfterSeconds":60},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"internalError":{"summary":"Temporary service error","value":{"type":"certscore_api_error","error":{"code":"internal_error","message":"CertScore API v2 is temporarily unavailable. Try again later."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}}}}}}}}},"/api/v2/domains/{domain}/latest":{"get":{"operationId":"getLatestDomainScan","tags":["Domains"],"summary":"Retrieve the latest public-safe scan for a domain.","parameters":[{"name":"domain","in":"path","required":true,"schema":{"type":"string"}},{"name":"scanFrom","in":"query","required":false,"schema":{"type":"string","enum":["eu_ie","california"],"default":"eu_ie"},"description":"Execution context for selecting matching eligible scans. Invalid values default to eu_ie."}],"responses":{"200":{"description":"Latest domain scan. The scan field is null when no eligible public scan exists.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainLatestScan"},"examples":{"latest":{"value":{"type":"certscore_domain_latest_scan","domain":"example.com","scan":{"type":"certscore_scan","scanId":"00000000-0000-4000-8000-000000000123","domain":"example.com","url":"https://example.com","status":"completed","score":82,"riskLevel":"review_recommended","links":{"self":"https://certscore.ai/api/v2/scans/00000000-0000-4000-8000-000000000123","status":"https://certscore.ai/api/v2/scans/00000000-0000-4000-8000-000000000123/status","findings":"https://certscore.ai/api/v2/scans/00000000-0000-4000-8000-000000000123/findings","pulse":"https://certscore.ai/api/v2/scans/00000000-0000-4000-8000-000000000123/pulse","report":"https://certscore.ai/scan/00000000-0000-4000-8000-000000000123"},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."},"links":{"self":"https://certscore.ai/api/v2/domains/example.com/latest","docs":"https://certscore.ai/developers/reference"},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}}}}}},"400":{"description":"Invalid domain.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"examples":{"invalidRequest":{"summary":"Invalid request","value":{"type":"certscore_api_error","error":{"code":"invalid_request","message":"Invalid request."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"unauthorized":{"summary":"Missing or invalid API key","value":{"type":"certscore_api_error","error":{"code":"unauthorized","message":"Missing or invalid API key."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"forbidden":{"summary":"Missing required scope","value":{"type":"certscore_api_error","error":{"code":"forbidden","message":"API key is missing the required scope."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"notFound":{"summary":"Resource not found","value":{"type":"certscore_api_error","error":{"code":"not_found","message":"Scan not found."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"rateLimited":{"summary":"Rate limited","value":{"type":"certscore_api_error","error":{"code":"rate_limited","message":"Rate limit reached. Retry after the recommended delay.","retryAfterSeconds":60},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"internalError":{"summary":"Temporary service error","value":{"type":"certscore_api_error","error":{"code":"internal_error","message":"CertScore API v2 is temporarily unavailable. Try again later."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}}}}}},"500":{"description":"Temporary service error.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"examples":{"invalidRequest":{"summary":"Invalid request","value":{"type":"certscore_api_error","error":{"code":"invalid_request","message":"Invalid request."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"unauthorized":{"summary":"Missing or invalid API key","value":{"type":"certscore_api_error","error":{"code":"unauthorized","message":"Missing or invalid API key."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"forbidden":{"summary":"Missing required scope","value":{"type":"certscore_api_error","error":{"code":"forbidden","message":"API key is missing the required scope."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"notFound":{"summary":"Resource not found","value":{"type":"certscore_api_error","error":{"code":"not_found","message":"Scan not found."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"rateLimited":{"summary":"Rate limited","value":{"type":"certscore_api_error","error":{"code":"rate_limited","message":"Rate limit reached. Retry after the recommended delay.","retryAfterSeconds":60},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"internalError":{"summary":"Temporary service error","value":{"type":"certscore_api_error","error":{"code":"internal_error","message":"CertScore API v2 is temporarily unavailable. Try again later."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}}}}}}}}},"/api/v2/scans/{scanId}/pulse":{"get":{"operationId":"getScanPulse","tags":["Pulse"],"summary":"Retrieve the Pulse projection for a scan.","parameters":[{"name":"scanId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Pulse projection.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScanPulse"},"examples":{"pulse":{"value":{"type":"certscore_scan_pulse","scanId":"00000000-0000-4000-8000-000000000123","pulse":{"type":"certscore_pulse","scanId":"00000000-0000-4000-8000-000000000123","summary":{"headline":"Automated scan surfaced public-web review signals.","score":82},"links":{"fullReportUrl":"https://certscore.ai/scan/00000000-0000-4000-8000-000000000123"},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}}}}}},"400":{"description":"Invalid scan ID.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"examples":{"invalidRequest":{"summary":"Invalid request","value":{"type":"certscore_api_error","error":{"code":"invalid_request","message":"Invalid request."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"unauthorized":{"summary":"Missing or invalid API key","value":{"type":"certscore_api_error","error":{"code":"unauthorized","message":"Missing or invalid API key."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"forbidden":{"summary":"Missing required scope","value":{"type":"certscore_api_error","error":{"code":"forbidden","message":"API key is missing the required scope."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"notFound":{"summary":"Resource not found","value":{"type":"certscore_api_error","error":{"code":"not_found","message":"Scan not found."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"rateLimited":{"summary":"Rate limited","value":{"type":"certscore_api_error","error":{"code":"rate_limited","message":"Rate limit reached. Retry after the recommended delay.","retryAfterSeconds":60},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"internalError":{"summary":"Temporary service error","value":{"type":"certscore_api_error","error":{"code":"internal_error","message":"CertScore API v2 is temporarily unavailable. Try again later."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}}}}}},"404":{"description":"Scan not found.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"examples":{"invalidRequest":{"summary":"Invalid request","value":{"type":"certscore_api_error","error":{"code":"invalid_request","message":"Invalid request."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"unauthorized":{"summary":"Missing or invalid API key","value":{"type":"certscore_api_error","error":{"code":"unauthorized","message":"Missing or invalid API key."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"forbidden":{"summary":"Missing required scope","value":{"type":"certscore_api_error","error":{"code":"forbidden","message":"API key is missing the required scope."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"notFound":{"summary":"Resource not found","value":{"type":"certscore_api_error","error":{"code":"not_found","message":"Scan not found."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"rateLimited":{"summary":"Rate limited","value":{"type":"certscore_api_error","error":{"code":"rate_limited","message":"Rate limit reached. Retry after the recommended delay.","retryAfterSeconds":60},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"internalError":{"summary":"Temporary service error","value":{"type":"certscore_api_error","error":{"code":"internal_error","message":"CertScore API v2 is temporarily unavailable. Try again later."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}}}}}},"500":{"description":"Temporary service error.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"examples":{"invalidRequest":{"summary":"Invalid request","value":{"type":"certscore_api_error","error":{"code":"invalid_request","message":"Invalid request."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"unauthorized":{"summary":"Missing or invalid API key","value":{"type":"certscore_api_error","error":{"code":"unauthorized","message":"Missing or invalid API key."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"forbidden":{"summary":"Missing required scope","value":{"type":"certscore_api_error","error":{"code":"forbidden","message":"API key is missing the required scope."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"notFound":{"summary":"Resource not found","value":{"type":"certscore_api_error","error":{"code":"not_found","message":"Scan not found."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"rateLimited":{"summary":"Rate limited","value":{"type":"certscore_api_error","error":{"code":"rate_limited","message":"Rate limit reached. Retry after the recommended delay.","retryAfterSeconds":60},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"internalError":{"summary":"Temporary service error","value":{"type":"certscore_api_error","error":{"code":"internal_error","message":"CertScore API v2 is temporarily unavailable. Try again later."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}}}}}}}}},"/api/v2/health":{"get":{"operationId":"getApiV2Health","tags":["Diagnostics"],"summary":"Check API v2 connectivity.","responses":{"200":{"description":"API v2 health response.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Health"},"examples":{"ok":{"value":{"ok":true,"service":"certscore-api","version":"v2","generatedAt":"2026-06-30T00:00:00.000Z"}}}}}},"500":{"description":"Temporary service error.","headers":{"x-certscore-api-version":{"schema":{"type":"string","const":"v2"},"description":"CertScore API version marker."},"x-certscore-request-id":{"schema":{"type":"string"},"description":"Request identifier for support and diagnostics."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"},"examples":{"invalidRequest":{"summary":"Invalid request","value":{"type":"certscore_api_error","error":{"code":"invalid_request","message":"Invalid request."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"unauthorized":{"summary":"Missing or invalid API key","value":{"type":"certscore_api_error","error":{"code":"unauthorized","message":"Missing or invalid API key."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"forbidden":{"summary":"Missing required scope","value":{"type":"certscore_api_error","error":{"code":"forbidden","message":"API key is missing the required scope."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"notFound":{"summary":"Resource not found","value":{"type":"certscore_api_error","error":{"code":"not_found","message":"Scan not found."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"rateLimited":{"summary":"Rate limited","value":{"type":"certscore_api_error","error":{"code":"rate_limited","message":"Rate limit reached. Retry after the recommended delay.","retryAfterSeconds":60},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}},"internalError":{"summary":"Temporary service error","value":{"type":"certscore_api_error","error":{"code":"internal_error","message":"CertScore API v2 is temporarily unavailable. Try again later."},"disclaimer":"CertScore provides automated public-web observations for review. Results may be incomplete or contain errors. CertScore does not provide legal advice, certification, or compliance determinations."}}}}}}}}}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Scoped CertScore integration API key."}},"schemas":{"CreateScanRequest":{"type":"object","additionalProperties":false,"required":["url"],"properties":{"url":{"type":"string"},"freshness":{"type":"string","enum":["latest","refresh"],"default":"latest"},"scanFrom":{"type":"string","enum":["eu_ie","california"],"default":"eu_ie"},"callbackUrl":{"type":"string","format":"uri"},"metadata":{"type":"object","additionalProperties":{"type":"string"}}}},"ScanJob":{"type":"object","additionalProperties":true,"required":["type","jobId","status"],"properties":{"type":{"type":"string","const":"certscore_scan_job"},"jobId":{"type":"string"},"scanId":{"type":["string","null"]},"domain":{"type":["string","null"]},"status":{"type":"string","enum":["queued","running","finalizing","completed","completed_limited","failed","expired","rate_limited"]},"phase":{"type":"string"},"createdAt":{"type":"string"},"lastUpdatedAt":{"type":"string"},"retryAfterSeconds":{"type":["integer","null"]},"links":{"$ref":"#/components/schemas/Links"},"disclaimer":{"type":"string"}}},"Scan":{"type":"object","additionalProperties":true,"required":["type","scanId","domain","status"],"properties":{"type":{"type":"string","const":"certscore_scan"},"scanId":{"type":"string"},"domain":{"type":"string"},"url":{"type":["string","null"]},"status":{"type":"string"},"score":{"type":["integer","null"],"minimum":0,"maximum":100},"riskLevel":{"type":["string","null"]},"coverage":{"type":"object","additionalProperties":true},"links":{"$ref":"#/components/schemas/Links"},"disclaimer":{"type":"string"}}},"FindingList":{"type":"object","additionalProperties":true,"required":["type","scanId","findings"],"properties":{"type":{"type":"string","const":"certscore_finding_list"},"scanId":{"type":"string"},"findings":{"type":"array","items":{"$ref":"#/components/schemas/Finding"}},"links":{"$ref":"#/components/schemas/Links"},"disclaimer":{"type":"string"}}},"Finding":{"type":"object","additionalProperties":true,"required":["type","id","scanId","label","criticality","confidence","plainEnglish","evidence"],"properties":{"type":{"type":"string","const":"certscore_finding"},"id":{"type":"string"},"scanId":{"type":"string"},"label":{"type":"string"},"criticality":{"type":"string"},"confidence":{"type":"string"},"plainEnglish":{"type":"string"},"reviewLenses":{"type":"array","items":{"type":"string"}},"evidence":{"$ref":"#/components/schemas/EvidenceSummary"},"nextStep":{"type":["string","null"]},"links":{"$ref":"#/components/schemas/Links"},"disclaimer":{"type":"string"}}},"EvidenceSummary":{"type":"object","additionalProperties":false,"required":["basis","summary","exampleCount","examplesShown"],"properties":{"basis":{"type":"string","enum":["runtime_observation","policy_surface_detection","accessibility_check","public_report_projection"]},"summary":{"type":"string"},"phase":{"type":["string","null"]},"exampleCount":{"type":"integer","minimum":0},"examplesShown":{"type":"integer","minimum":0},"examples":{"type":"array","maxItems":5,"items":{"type":"object","additionalProperties":false,"properties":{"type":{"type":"string","enum":["request","page","accessibility_check","policy_surface"]},"vendor":{"type":["string","null"]},"urlHost":{"type":["string","null"]},"registrableDomain":{"type":["string","null"]},"observedAtMs":{"type":["integer","null"]},"phase":{"type":["string","null"]}}}},"hasTimingAnchor":{"type":"boolean"},"hasVendorAnchor":{"type":"boolean"},"hasConsentContext":{"type":"boolean"},"hasPolicyAnchor":{"type":"boolean"}}},"DomainLatestScan":{"type":"object","additionalProperties":true,"required":["type","domain","scan"],"properties":{"type":{"type":"string","const":"certscore_domain_latest_scan"},"domain":{"type":"string"},"scan":{"oneOf":[{"$ref":"#/components/schemas/Scan"},{"type":"null"}]},"links":{"$ref":"#/components/schemas/Links"},"disclaimer":{"type":"string"}}},"ScanPulse":{"type":"object","additionalProperties":true,"required":["type","scanId","pulse"],"properties":{"type":{"type":"string","const":"certscore_scan_pulse"},"scanId":{"type":"string"},"pulse":{"type":"object","additionalProperties":true},"links":{"$ref":"#/components/schemas/Links"},"disclaimer":{"type":"string"}}},"Links":{"type":"object","additionalProperties":true,"properties":{"self":{"type":"string"},"status":{"type":"string"},"findings":{"type":"string"},"pulse":{"type":"string"},"report":{"type":"string"},"latestDomainScan":{"type":"string"},"docs":{"type":"string"}}},"ApiError":{"type":"object","additionalProperties":true,"required":["type","error"],"properties":{"type":{"type":"string","const":"certscore_api_error"},"error":{"type":"object","required":["code","message"],"additionalProperties":true,"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryAfterSeconds":{"type":["integer","null"]}}},"links":{"$ref":"#/components/schemas/Links"},"disclaimer":{"type":"string"}}},"Health":{"type":"object","required":["ok","service","version"],"properties":{"ok":{"type":"boolean","const":true},"service":{"type":"string","const":"certscore-api"},"version":{"type":"string","const":"v2"},"generatedAt":{"type":"string","format":"date-time"}}}}}}