{
  "openapi": "3.1.0",
  "info": {
    "title": "SandboxAPIs — Salesforce (paths only)",
    "version": "coverage-manifest-rev-5",
    "summary": "The 22 read paths SandboxAPIs serves on Salesforce.",
    "description": "Every read SandboxAPIs serves on Salesforce, pointed at https://sf.sandboxapis.dev.\n\n22 requests, one per served row of our coverage manifest. PATHS ONLY: this file carries no request or\nresponse schema, because a schema is the part of an API description we do not own. It is generated from\ncoverage/COVERAGE_MANIFEST.yaml — our own record of what THIS host answers — and never from a vendor's\npublished specification, several of which may not be redistributed.\n\nThe host is read-only. Every write verb answers the provider's own error shape with a message naming what was\nattempted; the \"Read-only refusal, on purpose\" folder holds one so the shape is discoverable.\n\nNo credentials are needed — any value in `apiKey` is accepted, and a real SandboxAPIs key only raises the rate\nlimit. Path variables left blank are identifiers that move when the live host re-rolls; fill them from a list\nresponse."
  },
  "servers": [
    {
      "url": "https://sf.sandboxapis.dev",
      "description": "The live Salesforce host"
    }
  ],
  "security": [
    {
      "sandboxapisKey": []
    }
  ],
  "components": {
    "securitySchemes": {
      "sandboxapisKey": {
        "type": "http",
        "scheme": "bearer",
        "description": "Authorization: Bearer <key> (where the OAuth access token rides)"
      }
    }
  },
  "paths": {
    "/services/data": {
      "get": {
        "summary": "GET /services/data",
        "operationId": "get_services_data",
        "tags": [
          "versions"
        ],
        "description": "Served by SandboxAPIs. Answer mode: derive.",
        "x-sandboxapis-mode": "derive",
        "responses": {
          "200": {
            "description": "The provider's own response shape. This document describes paths only and carries no schema."
          }
        }
      }
    },
    "/services/data/{version}": {
      "get": {
        "summary": "GET /services/data/{version}",
        "operationId": "get_services_data_version",
        "tags": [
          "resources"
        ],
        "description": "Served by SandboxAPIs. Answer mode: derive.",
        "x-sandboxapis-mode": "derive",
        "parameters": [
          {
            "name": "version",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The provider's own response shape. This document describes paths only and carries no schema."
          }
        }
      }
    },
    "/services/data/{version}/actions/custom": {
      "get": {
        "summary": "GET /services/data/{version}/actions/custom",
        "operationId": "get_services_data_version_actions_custom",
        "tags": [
          "actions"
        ],
        "description": "Served by SandboxAPIs. Answer mode: empty. Answers an EMPTY collection, and that is the true answer for this universe — not a gap. Olympus-labs' Salesforce org defines no custom invocable action - canon models no Flow, no Apex class and no automation on the CRM side, and this replica accepts no writes; Salesforce's own answer for an org with none is an empty actions collection at 200. RULED by the founder 2026-09-12 (round 19), coverage wave W5",
        "x-sandboxapis-mode": "empty",
        "parameters": [
          {
            "name": "version",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The provider's own response shape. This document describes paths only and carries no schema."
          }
        }
      }
    },
    "/services/data/{version}/composite/sobjects/{sObject}": {
      "get": {
        "summary": "GET /services/data/{version}/composite/sobjects/{sObject}",
        "operationId": "get_services_data_version_composite_sobjects_sObject",
        "tags": [
          "composite"
        ],
        "description": "Served by SandboxAPIs. Answer mode: derive.",
        "x-sandboxapis-mode": "derive",
        "parameters": [
          {
            "name": "version",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sObject",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The provider's own response shape. This document describes paths only and carries no schema."
          }
        }
      }
    },
    "/services/data/{version}/limits/recordCount": {
      "get": {
        "summary": "GET /services/data/{version}/limits/recordCount",
        "operationId": "get_services_data_version_limits_recordCount",
        "tags": [
          "limits"
        ],
        "description": "Served by SandboxAPIs. Answer mode: derive.",
        "x-sandboxapis-mode": "derive",
        "parameters": [
          {
            "name": "version",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The provider's own response shape. This document describes paths only and carries no schema."
          }
        }
      }
    },
    "/services/data/{version}/parameterizedSearch": {
      "get": {
        "summary": "GET /services/data/{version}/parameterizedSearch",
        "operationId": "get_services_data_version_parameterizedSearch",
        "tags": [
          "sosl-search"
        ],
        "description": "Served by SandboxAPIs. Answer mode: derive.",
        "x-sandboxapis-mode": "derive",
        "parameters": [
          {
            "name": "version",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The provider's own response shape. This document describes paths only and carries no schema."
          }
        }
      }
    },
    "/services/data/{version}/process/approvals": {
      "get": {
        "summary": "GET /services/data/{version}/process/approvals",
        "operationId": "get_services_data_version_process_approvals",
        "tags": [
          "process"
        ],
        "description": "Served by SandboxAPIs. Answer mode: empty. Answers an EMPTY collection, and that is the true answer for this universe — not a gap. Olympus-labs' Salesforce org defines no approval process - canon models no approval automation on the CRM side (the one approval_rule row is a code-review rule over repo-01) and this replica accepts no writes; Salesforce's own answer for an org with none is an empty approvals collection at 200. RULED by the founder 2026-09-12 (round 19), coverage wave W5. The collection is a MAP keyed by sObject name rather than an array, which is Salesforce's own shape, so the empty one is {}",
        "x-sandboxapis-mode": "empty",
        "parameters": [
          {
            "name": "version",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The provider's own response shape. This document describes paths only and carries no schema."
          }
        }
      }
    },
    "/services/data/{version}/process/rules": {
      "get": {
        "summary": "GET /services/data/{version}/process/rules",
        "operationId": "get_services_data_version_process_rules",
        "tags": [
          "process"
        ],
        "description": "Served by SandboxAPIs. Answer mode: empty. Answers an EMPTY collection, and that is the true answer for this universe — not a gap. Olympus-labs' Salesforce org defines no workflow rule - canon models no CRM automation and this replica accepts no writes; Salesforce's own answer for an org with none is {\"rules\": []} at 200. RULED by the founder 2026-09-12 (round 19), coverage wave W5",
        "x-sandboxapis-mode": "empty",
        "parameters": [
          {
            "name": "version",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The provider's own response shape. This document describes paths only and carries no schema."
          }
        }
      }
    },
    "/services/data/{version}/process/rules/{sObject}": {
      "get": {
        "summary": "GET /services/data/{version}/process/rules/{sObject}",
        "operationId": "get_services_data_version_process_rules_sObject",
        "tags": [
          "process"
        ],
        "description": "Served by SandboxAPIs. Answer mode: empty. Answers an EMPTY collection, and that is the true answer for this universe — not a gap. Olympus-labs' Salesforce org defines no workflow rule - canon models no CRM automation and this replica accepts no writes; Salesforce's own answer for an org with none is {\"rules\": []} at 200. RULED by the founder 2026-09-12 (round 19), coverage wave W5. Asserted on all four served objects, because `no workflow rule anywhere` is a claim about every one of them; an object this replica does not serve still earns the coverage 404, so the ruling never answers a typo confidently",
        "x-sandboxapis-mode": "empty",
        "parameters": [
          {
            "name": "version",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sObject",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The provider's own response shape. This document describes paths only and carries no schema."
          }
        }
      }
    },
    "/services/data/{version}/query": {
      "get": {
        "summary": "GET /services/data/{version}/query",
        "operationId": "get_services_data_version_query",
        "tags": [
          "soql-query"
        ],
        "description": "Served by SandboxAPIs. Answer mode: derive.",
        "x-sandboxapis-mode": "derive",
        "parameters": [
          {
            "name": "version",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The provider's own response shape. This document describes paths only and carries no schema."
          }
        }
      }
    },
    "/services/data/{version}/queryAll": {
      "get": {
        "summary": "GET /services/data/{version}/queryAll",
        "operationId": "get_services_data_version_queryAll",
        "tags": [
          "soql-query"
        ],
        "description": "Served by SandboxAPIs. Answer mode: derive.",
        "x-sandboxapis-mode": "derive",
        "parameters": [
          {
            "name": "version",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The provider's own response shape. This document describes paths only and carries no schema."
          }
        }
      }
    },
    "/services/data/{version}/recent": {
      "get": {
        "summary": "GET /services/data/{version}/recent",
        "operationId": "get_services_data_version_recent",
        "tags": [
          "ui-metadata"
        ],
        "description": "Served by SandboxAPIs. Answer mode: empty. Answers an EMPTY collection, and that is the true answer for this universe — not a gap. No user has viewed a record in this replica - the recently-viewed list is per-user UI state written by the Salesforce web app, this universe carries no Salesforce session, and the served describe reports mruEnabled false for exactly that reason; Salesforce's own answer for a user who has viewed nothing is [] at 200. RULED by the founder 2026-09-12 (round 19), coverage wave W5. This is the row that gives `mruEnabled: false` a resource behind it: the conformance entry asserts both halves, so the flag and the list cannot come to say different things",
        "x-sandboxapis-mode": "empty",
        "parameters": [
          {
            "name": "version",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The provider's own response shape. This document describes paths only and carries no schema."
          }
        }
      }
    },
    "/services/data/{version}/search": {
      "get": {
        "summary": "GET /services/data/{version}/search",
        "operationId": "get_services_data_version_search",
        "tags": [
          "sosl-search"
        ],
        "description": "Served by SandboxAPIs. Answer mode: derive.",
        "x-sandboxapis-mode": "derive",
        "parameters": [
          {
            "name": "version",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The provider's own response shape. This document describes paths only and carries no schema."
          }
        }
      }
    },
    "/services/data/{version}/sobjects": {
      "get": {
        "summary": "GET /services/data/{version}/sobjects",
        "operationId": "get_services_data_version_sobjects",
        "tags": [
          "sobject-describe"
        ],
        "description": "Served by SandboxAPIs. Answer mode: derive.",
        "x-sandboxapis-mode": "derive",
        "parameters": [
          {
            "name": "version",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The provider's own response shape. This document describes paths only and carries no schema."
          }
        }
      }
    },
    "/services/data/{version}/sobjects/{sObject}": {
      "get": {
        "summary": "GET /services/data/{version}/sobjects/{sObject}",
        "operationId": "get_services_data_version_sobjects_sObject",
        "tags": [
          "sobject-describe"
        ],
        "description": "Served by SandboxAPIs. Answer mode: derive.",
        "x-sandboxapis-mode": "derive",
        "parameters": [
          {
            "name": "version",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sObject",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The provider's own response shape. This document describes paths only and carries no schema."
          }
        }
      }
    },
    "/services/data/{version}/sobjects/{sObject}/{fieldName}/{fieldValue}": {
      "get": {
        "summary": "GET /services/data/{version}/sobjects/{sObject}/{fieldName}/{fieldValue}",
        "operationId": "get_services_data_version_sobjects_sObject_fieldName_fieldValue",
        "tags": [
          "sobject-rows"
        ],
        "description": "Served by SandboxAPIs. Answer mode: derive.",
        "x-sandboxapis-mode": "derive",
        "parameters": [
          {
            "name": "version",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sObject",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "fieldName",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "fieldValue",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The provider's own response shape. This document describes paths only and carries no schema."
          }
        }
      }
    },
    "/services/data/{version}/sobjects/{sObject}/{id}": {
      "get": {
        "summary": "GET /services/data/{version}/sobjects/{sObject}/{id}",
        "operationId": "get_services_data_version_sobjects_sObject_id",
        "tags": [
          "sobject-rows"
        ],
        "description": "Served by SandboxAPIs. Answer mode: derive.",
        "x-sandboxapis-mode": "derive",
        "parameters": [
          {
            "name": "version",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sObject",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The provider's own response shape. This document describes paths only and carries no schema."
          }
        }
      }
    },
    "/services/data/{version}/sobjects/{sObject}/{id}/{relationshipFieldName}": {
      "get": {
        "summary": "GET /services/data/{version}/sobjects/{sObject}/{id}/{relationshipFieldName}",
        "operationId": "get_services_data_version_sobjects_sObject_id_relationshipFieldName",
        "tags": [
          "sobject-rows"
        ],
        "description": "Served by SandboxAPIs. Answer mode: derive.",
        "x-sandboxapis-mode": "derive",
        "parameters": [
          {
            "name": "version",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sObject",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "relationshipFieldName",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The provider's own response shape. This document describes paths only and carries no schema."
          }
        }
      }
    },
    "/services/data/{version}/sobjects/{sObject}/deleted": {
      "get": {
        "summary": "GET /services/data/{version}/sobjects/{sObject}/deleted",
        "operationId": "get_services_data_version_sobjects_sObject_deleted",
        "tags": [
          "change-tracking"
        ],
        "description": "Served by SandboxAPIs. Answer mode: empty. Answers an EMPTY collection, and that is the true answer for this universe — not a gap. Nothing in this universe is ever deleted - the generator writes an append-only event log, this replica accepts no writes, and IsDeleted is false on every record the describe publishes (renderer-salesforce/src/sobjects.ts:472); Salesforce's own answer for a window with no deletions is {\"deletedRecords\": [], \"earliestDateAvailable\": ..., \"latestDateCovered\": ...} at 200. RULED by the founder 2026-09-12 (round 19), coverage wave W5. `earliestDateAvailable` is the instant this snapshot's history of the object begins - the earliest CreatedDate among its records - because this replica's horizon is the artifact's own history rather than the rolling 30-day retention real Salesforce reports there; reporting a retention window this host does not implement would be the invention",
        "x-sandboxapis-mode": "empty",
        "parameters": [
          {
            "name": "version",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sObject",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The provider's own response shape. This document describes paths only and carries no schema."
          }
        }
      }
    },
    "/services/data/{version}/sobjects/{sObject}/describe": {
      "get": {
        "summary": "GET /services/data/{version}/sobjects/{sObject}/describe",
        "operationId": "get_services_data_version_sobjects_sObject_describe",
        "tags": [
          "sobject-describe"
        ],
        "description": "Served by SandboxAPIs. Answer mode: derive.",
        "x-sandboxapis-mode": "derive",
        "parameters": [
          {
            "name": "version",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sObject",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The provider's own response shape. This document describes paths only and carries no schema."
          }
        }
      }
    },
    "/services/data/{version}/sobjects/{sObject}/describe/approvalLayouts": {
      "get": {
        "summary": "GET /services/data/{version}/sobjects/{sObject}/describe/approvalLayouts",
        "operationId": "get_services_data_version_sobjects_sObject_describe_approvalLayouts",
        "tags": [
          "sobject-describe"
        ],
        "description": "Served by SandboxAPIs. Answer mode: empty. Answers an EMPTY collection, and that is the true answer for this universe — not a gap. No approval process is defined on any served object, so no object has an approval layout - the same fact /process/approvals states; Salesforce's own answer for an object with none is {\"approvalLayouts\": []} at 200. RULED by the founder 2026-09-12 (round 19), coverage wave W5. This row is different IN KIND from its two siblings, which is why it could be ruled while they stay `generate`: `compactLayouts` and `layouts` need a CompactLayout and a PageLayout entity nobody has built, so their emptiness would be a claim about what this replica has not modelled, whereas an approval layout exists PER APPROVAL PROCESS and there is no approval process for one to belong to",
        "x-sandboxapis-mode": "empty",
        "parameters": [
          {
            "name": "version",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sObject",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The provider's own response shape. This document describes paths only and carries no schema."
          }
        }
      }
    },
    "/services/data/{version}/sobjects/{sObject}/updated": {
      "get": {
        "summary": "GET /services/data/{version}/sobjects/{sObject}/updated",
        "operationId": "get_services_data_version_sobjects_sObject_updated",
        "tags": [
          "change-tracking"
        ],
        "description": "Served by SandboxAPIs. Answer mode: derive.",
        "x-sandboxapis-mode": "derive",
        "parameters": [
          {
            "name": "version",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sObject",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The provider's own response shape. This document describes paths only and carries no schema."
          }
        }
      }
    }
  }
}
