This is a library that enables handling and manipulation of Salesforce Identifiers. Specifically it enables converting identifiers between 15 character (case-sensitive) and 18 character (case-insensitive) versions.
This library parses a Salesforce identifier for the user and provides some convenience methods for handling interactions with the identifier.
For explanations of how the identifier works see:
- "Obscure Salesforce Object Key Prefixes" Archive.org
- "Salesforce IDs Explained" Archive.org
- "Salesforce Object ID Is Refined to Use Three Characters for Server IDs (Release Update)"
-
Fix parsing for
SalesforceIDinNewto correct number of bytesReservedand number of bytes used in theNumericIdentifierfields.Previously, we allocated one of the reserved bytes to the numeric identifier incorrectly.
-
Add
SalesfoceIDV2andNewV2for Salesforce Object Identifiers. These reflect the changes to Salesforce Object IDs to use 3 bytes (using the 6th byte that was previously reserved) to represent Instances (Servers).This also renames
PodIdentifierfromSalesforceIDtoInstanceIdentifieronSalesforceIDV2reflect the new language used.
It's possible to have different versions of a Salesforce identifier. 15 character identifiers are case-sensitive while 18 character identifiers are not. As a result, this library always checks and adjusts the casing of identifiers and always produces 18 character identifiers. This allows users to confidently use which ever form they prefer.
package main
import (
"fmt"
"os"
"github.com/sigmavirus24/salesforceid"
)
func main() {
// Note that we're using an 18-character, entirely lower-cased Salesforce identifier here
sfid, err := salesforceid.New("00d000000000062eaa")
if err != nil {
fmt.Printf("encountered unexpected error: %q", err)
os.Exit(1)
}
fmt.Println(sfid)
}Furthermore, one can use this library to perform arithmetic on the identifiers. For an example of where this might be useful see the example in this project.