{"openapi":"3.1.0","info":{"title":"CertifyForce Public API","version":"1.0.0","summary":"Read-only Salesforce certification catalog, official exam facts and outlines, and free sample practice questions.","description":"No authentication is required. Responses are JSON, cached for up to an hour, and CORS-enabled. Errors return a JSON body with a machine-readable `code`, a `message` and a `hint`. Rate limit: 60 requests per minute per IP, advertised on every response with the IETF `RateLimit` and `RateLimit-Policy` headers; over the limit you get 429 with `Retry-After`. Versioning: the version is in the path; v1 only changes additively, a breaking change ships as /api/v2 and v1 then keeps working for at least 6 months with `Deprecation` and `Sunset` headers (policy: https://www.certifyforce.com/docs/deprecation-policy). Exam facts are verified against the official Salesforce exam guides. The full question banks are not available through the API.","contact":{"name":"CertifyForce","email":"warren@walters954.com","url":"https://www.certifyforce.com/contact"}},"externalDocs":{"description":"API documentation","url":"https://www.certifyforce.com/docs"},"x-deprecation-policy":{"url":"https://www.certifyforce.com/docs/deprecation-policy","summary":"Additive changes only within a version; breaking changes ship as a new path version, and the old version keeps working for at least 6 months with Deprecation (RFC 9745) and Sunset (RFC 8594) headers."},"servers":[{"url":"https://www.certifyforce.com/api/v1"}],"paths":{"/certifications":{"get":{"operationId":"listCertifications","summary":"List Salesforce certifications","description":"Every Salesforce certification CertifyForce covers, with level, job roles, prerequisite, official exam facts (question count, time limit, passing score, cost) and the number of verified practice questions.","tags":["Certifications"],"responses":{"200":{"headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Link":{"$ref":"#/components/headers/Link"},"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Sunset":{"$ref":"#/components/headers/Sunset"}},"description":"The certification catalog.","content":{"application/json":{"schema":{"type":"object","required":["certifications"],"properties":{"certifications":{"type":"array","items":{"$ref":"#/components/schemas/CertificationSummary"}}}}}}},"429":{"description":"Rate limit exceeded; wait for Retry-After seconds.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/certifications/{slug}":{"get":{"operationId":"getCertification","summary":"Get one certification with its exam outline","description":"Exam facts plus the complete official exam outline: every section with its weight and the topics it covers.","tags":["Certifications"],"parameters":[{"name":"slug","in":"path","required":true,"description":"Certification slug, as returned by listCertifications (for example `platform-administrator`).","schema":{"type":"string","enum":["platform-administrator","agentforce-specialist","platform-developer-1","platform-developer-2","sales-cloud-consultant","service-cloud-consultant","business-analyst","data-cloud-consultant","integration-architect","ux-designer","identity-access-management-architect","marketing-cloud-engagement-administrator","javascript-developer-1"]}}],"responses":{"200":{"headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Link":{"$ref":"#/components/headers/Link"},"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Sunset":{"$ref":"#/components/headers/Sunset"}},"description":"The certification.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CertificationDetail"}}}},"404":{"description":"Unknown certification slug.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded; wait for Retry-After seconds.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/certifications/{slug}/free-questions":{"get":{"operationId":"listFreeQuestions","summary":"Get free sample practice questions for a certification","description":"A public sample of reviewed practice questions drawn from every exam section, with the correct answers, an explanation and the Salesforce documentation sources for each.","tags":["Questions"],"parameters":[{"name":"slug","in":"path","required":true,"description":"Certification slug, as returned by listCertifications (for example `platform-administrator`).","schema":{"type":"string","enum":["platform-administrator","agentforce-specialist","platform-developer-1","platform-developer-2","sales-cloud-consultant","service-cloud-consultant","business-analyst","data-cloud-consultant","integration-architect","ux-designer","identity-access-management-architect","marketing-cloud-engagement-administrator","javascript-developer-1"]}}],"responses":{"200":{"headers":{"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimit-Policy"},"Link":{"$ref":"#/components/headers/Link"},"Deprecation":{"$ref":"#/components/headers/Deprecation"},"Sunset":{"$ref":"#/components/headers/Sunset"}},"description":"The free sample.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FreeQuestionSet"}}}},"404":{"description":"Unknown certification slug, or no free questions for it yet.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded; wait for Retry-After seconds.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"headers":{"RateLimit":{"description":"IETF RateLimit field: requests left in the window (r) and seconds until it resets (t), e.g. `\"default\";r=57;t=42`.","schema":{"type":"string"}},"RateLimit-Policy":{"description":"IETF RateLimit-Policy field: quota (q) per window in seconds (w), e.g. `\"default\";q=60;w=60`.","schema":{"type":"string"}},"Link":{"description":"Always includes rel=\"deprecation\" pointing at the versioning and deprecation policy (https://www.certifyforce.com/docs/deprecation-policy). On a deprecated path it also includes rel=\"successor-version\".","schema":{"type":"string"}},"Deprecation":{"description":"RFC 9745. Present only on deprecated paths, with the date they were deprecated (e.g. `@1792022400`). No v1 path is deprecated.","schema":{"type":"string"}},"Sunset":{"description":"RFC 8594. Present only once a shutdown date is scheduled for a deprecated path, at least 6 months ahead. None is scheduled.","schema":{"type":"string"}}},"schemas":{"ExamFacts":{"type":"object","description":"Facts from the official Salesforce exam guide.","required":["scoredQuestions","timeLimitMinutes","passingScorePercent","registrationCostUsd","retakeCostUsd"],"properties":{"scoredQuestions":{"type":"integer"},"unscoredQuestions":{"oneOf":[{"type":"integer"},{"type":"null"}]},"timeLimitMinutes":{"type":"integer"},"passingScorePercent":{"type":"integer"},"registrationCostUsd":{"type":"integer"},"retakeCostUsd":{"type":"integer"}}},"CertificationLinks":{"type":"object","properties":{"self":{"type":"string","format":"uri"},"page":{"type":"string","format":"uri","description":"Human landing page."},"markdown":{"type":"string","format":"uri","description":"Markdown mirror of the landing page."},"officialExamGuide":{"type":"string","format":"uri"},"freeQuestions":{"oneOf":[{"type":"string","format":"uri"},{"type":"null"}]}}},"CertificationSummary":{"type":"object","required":["slug","name","displayName","level","roles","links"],"properties":{"slug":{"type":"string","example":"platform-administrator"},"name":{"type":"string","example":"Platform Administrator"},"displayName":{"type":"string","example":"Platform Administrator"},"formerName":{"oneOf":[{"type":"string"},{"type":"null"}]},"level":{"type":"string","enum":["Foundational","Intermediate","Advanced"]},"roles":{"type":"array","items":{"type":"string"}},"prerequisite":{"oneOf":[{"type":"string"},{"type":"null"}]},"positioning":{"type":"string","description":"Who the credential is for."},"examFacts":{"oneOf":[{"$ref":"#/components/schemas/ExamFacts"},{"type":"null"}]},"reviewedQuestionCount":{"oneOf":[{"type":"integer","description":"Verified questions in the paid bank; null when unavailable."},{"type":"null"}]},"hasFreeQuestions":{"type":"boolean"},"links":{"$ref":"#/components/schemas/CertificationLinks"}}},"CertificationDetail":{"allOf":[{"$ref":"#/components/schemas/CertificationSummary"},{"type":"object","required":["description","outline","mockExam"],"properties":{"description":{"type":"string"},"outline":{"type":"array","items":{"type":"object","required":["name","weightPercentage","topics"],"properties":{"name":{"type":"string"},"weightPercentage":{"type":"number"},"topics":{"type":"array","items":{"type":"string"}}}}},"mockExam":{"type":"object","description":"Shape of a CertifyForce full mock exam.","properties":{"questions":{"type":"integer"},"timeLimitMinutes":{"type":"integer"}}}}}]},"Question":{"type":"object","required":["id","section","type","question","options","correctAnswers","explanation","sources"],"properties":{"id":{"type":"string","example":"pa-cs-001"},"section":{"type":"string"},"topic":{"type":"string"},"type":{"type":"string","enum":["single","multi"]},"difficulty":{"type":"string"},"question":{"type":"string"},"options":{"type":"array","items":{"type":"object","required":["id","text"],"properties":{"id":{"type":"string","example":"a"},"text":{"type":"string"}}}},"correctAnswers":{"type":"array","items":{"type":"string"}},"explanation":{"type":"string"},"sources":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string"},"url":{"type":"string","format":"uri"}}}}}},"FreeQuestionSet":{"type":"object","required":["slug","questions"],"properties":{"slug":{"type":"string"},"displayName":{"type":"string"},"approvedInBank":{"type":"integer"},"sections":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"weightPercentage":{"type":"number"}}}},"questions":{"type":"array","items":{"$ref":"#/components/schemas/Question"}},"links":{"type":"object","properties":{"page":{"type":"string","format":"uri"},"fullBank":{"type":"string","format":"uri"}}}}},"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["status","code","message","hint"],"properties":{"status":{"type":"integer","example":404},"code":{"type":"string","enum":["not_found","no_free_questions","rate_limited"]},"message":{"type":"string"},"hint":{"type":"string","description":"What to try next."},"docs":{"type":"string","format":"uri"},"openapi":{"type":"string","format":"uri"}}}}}}}}