Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 29 additions & 0 deletions rules/S8130/apex/metadata.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
{
"title": "Retired Salesforce API versions should not be used",
"type": "CODE_SMELL",
"status": "ready",
"remediation": {
"func": "Constant/Issue",
"constantCost": "5 min"
},
"tags": [
"salesforce",
"api",
"deprecated"
],
"defaultSeverity": "Blocker",
"ruleSpecification": "RSPEC-8130",
"sqKey": "S8130",
"scope": "Main",
"defaultQualityProfiles": [
"Sonar way"
],
"quickfix": "unknown",
"code": {
"impacts": {
"RELIABILITY": "BLOCKER",
"MAINTAINABILITY": "BLOCKER"
},
"attribute": "CONVENTIONAL"
}
}
88 changes: 88 additions & 0 deletions rules/S8130/apex/rule.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
This rule raises an issue when Apex code references Salesforce API versions 7.0 through 30.0, which were retired after the Summer '22 release, or 21.0 through 30.0, which were retired after the Summer '25 release.


== Why is this an issue?

Salesforce retired API versions 7.0 through 20.0 after the Summer '22 release, and API version 21.0 through 30.0 after the Summer '25 release, to improve platform security, performance, and maintainability.

Using retired API versions creates several critical problems:

**Functionality Loss**: Retired API versions no longer receive updates or bug fixes. Applications relying on these versions may experience unexpected behavior or complete failure.

**Security Vulnerabilities**: Older API versions lack modern security enhancements and patches. This exposes applications to potential security risks that have been addressed in newer versions.

**Integration Failures**: External systems and third-party integrations may stop working when they attempt to connect using retired API versions. This can break critical business processes.

**Compliance Issues**: Organizations with strict compliance requirements may face audit failures when using unsupported software versions.

Salesforce provides extensive backward compatibility, but retired versions are completely removed from the platform. This means any code or configuration referencing these versions will fail at runtime.

=== What is the potential impact?

Applications using retired API versions will experience service disruptions, integration failures, and potential security vulnerabilities. Critical business processes may stop functioning, leading to operational downtime and potential data access issues.

== How to fix it in Salesforce

Update API version references to use a supported version (21.0 or higher). Review Salesforce release notes to choose an appropriate current version that supports your required functionality.

=== Code examples

==== Noncompliant code example

[source,apex,diff-id=1,diff-type=noncompliant]
----
// Making a web service callout with retired API version
HttpRequest req = new HttpRequest();
req.setEndpoint('https://myinstance.salesforce.com/services/data/v20.0/sobjects/Account'); // Noncompliant
req.setMethod('GET');
----

==== Compliant solution

[source,apex,diff-id=1,diff-type=compliant]
----
// Making a web service callout with supported API version
HttpRequest req = new HttpRequest();
req.setEndpoint('https://myinstance.salesforce.com/services/data/v58.0/sobjects/Account');
req.setMethod('GET');
----

Update WSDL imports and web service references to use supported API versions. Regenerate any auto-generated classes from updated WSDL files.

==== Noncompliant code example

[source,apex,diff-id=2,diff-type=noncompliant]
----
// Web service reference with retired API version
public class MyWebService {
private static final String API_VERSION = '15.0'; // Noncompliant
private static final String ENDPOINT = 'https://login.salesforce.com/services/Soap/u/' + API_VERSION;
}
----

==== Compliant solution

[source,apex,diff-id=2,diff-type=compliant]
----
// Web service reference with supported API version
public class MyWebService {
private static final String API_VERSION = '58.0';
private static final String ENDPOINT = 'https://login.salesforce.com/services/Soap/u/' + API_VERSION;
}
----

== Resources

=== Documentation

* Salesforce API Version 7.0-20.0 Retirement - https://help.salesforce.com/s/articleView?id=000380623&type=1[Official Salesforce documentation on API version retirement timeline and migration guidance]

* Salesforce API Version 21.0-30.0 Retirement - https://help.salesforce.com/s/articleView?id=000389618&type=1[Official Salesforce documentation on API version retirement timeline and migration guidance]

* REST API Developer Guide - https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/[Complete guide to using current Salesforce REST API versions]

* API Version Selection Guide - https://developer.salesforce.com/docs/atlas.en-us.api.meta/api/sforce_api_concepts_version_notes.htm[Guidelines for choosing appropriate API versions for your applications]

=== Standards

* Salesforce Platform Best Practices - https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_best_practices.htm[Official Salesforce development best practices including API version management]
2 changes: 2 additions & 0 deletions rules/S8130/metadata.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
{
}