CRM
Salesforce
A test-only Salesforce REST subset for accounts, contacts and opportunities. Create Salesforce under Systems → CRM. No Salesforce organization, customer record, automation or notification is contacted or changed.
Testlie is independent of Salesforce. The name identifies API compatibility, not endorsement or Salesforce certification.
Connect and authenticate
Replace your My Domain host with the system's base URL. Send Authorization: Bearer <accessToken> using the test token shown in the system, or POST to <base>/services/oauth2/token:
grant_type=client_credentials&client_id=<clientId>&client_secret=<clientSecret>Use URL-encoded form data. The response contains a local instance_url, bearer token, issued timestamp and api scope. Issued tokens expire after one hour and are bound to current credentials; rotating the client secret or test access token invalidates them. Client-credentials does not issue refresh tokens. Other OAuth grants, consent, user/session policies and role/field security are outside this simulation; workspace access and mock credentials are enforced.
GET /services/data advertises the subset at v65.0. Paths /services/data/vXX.0/... use the same bounded field/resource contract; they do not simulate release-specific schema differences. Use v65.0 in new tests.
sObjects
| Object | Required fields | Additional supported fields |
|---|---|---|
Account |
Name |
Description, phone, website, industry, type, billing city/country, annual revenue, employee count |
Contact |
LastName |
First name, email, phone, existing AccountId, title, description |
Opportunity |
Name, StageName, valid CloseDate |
Existing AccountId, amount, probability, type, description |
POST /services/data/v65.0/sobjects/{Object} creates one record and returns { "id": "...", "success": true, "errors": [] } with status 201. GET/PATCH/DELETE /sobjects/{Object}/{id} read/update/delete it; successful PATCH/DELETE return 204. References stay within one test system. IDs have the standard object prefix and an 18-character case checksum; use IDs exactly as returned.
GET /sobjects, /sobjects/{Object} and /sobjects/{Object}/describe provide bounded discovery/recent-record/field metadata. These are not complete Salesforce schemas. Unsupported fields, custom objects and elevated fields such as OwnerId are rejected.
Supported opportunity stages: Prospecting, Qualification, Needs Analysis, Value Proposition, Id. Decision Makers, Perception Analysis, Proposal/Price Quote, Negotiation/Review, Closed Won and Closed Lost. Closing updates computed IsClosed/IsWon; it triggers no real sales automation. Delete dependent contacts/opportunities before deleting their test account.
SOQL and pagination
GET /services/data/v65.0/query?q=<URL-encoded SOQL>:
SELECT Id, Name FROM Account WHERE Name = 'Sample Company' ORDER BY Name LIMIT 100Supported: selected scalar fields, Account/Contact/Opportunity, literal =, !=, >, >=, <, <= comparisons joined by AND, one ORDER BY field, LIMIT (0–500), OFFSET (0–1000) and SELECT COUNT(). Object and field names in SOQL are case-insensitive. Parent/child relationships, LIKE, OR, subqueries, GROUP BY and other aggregates are rejected.
Query responses contain totalSize, done, records and, when needed, nextRecordsUrl. Default batches contain 200 records; Sforce-Query-Options: batchSize=200..500 changes that limit. Follow new URL(nextRecordsUrl, instance_url); mock-relative URLs include the system path. Cursors expire after ten minutes and are bound to the system and credentials. Repeating a page URL gives the same ID page, but values are read from current records rather than a transaction snapshot; keep queried records intact until paging finishes.
Scenarios and limits
Shared server-error, request-limit and delay scenarios apply. Decline rejects creates/updates with a Salesforce-style validation error. Error responses are arrays with message, errorCode and optional fields. This subset has no native outbound messages, webhooks, change-data-capture, Platform Events, Bulk/Composite APIs, Apex, custom schemas or interactive Require action. Do not configure a webhook URL for this provider.
At most 500 records per object and 128 KB per record request. Shared storage scans the newest 1,000 records across object types; keep fixtures small. Plan retention and object limits apply. Use test customer/contact data only.
References: Salesforce's REST API guide, sObject Rows, Query and client-credentials OAuth.