icon picker
B. Inbound (Apex REST Webservice)

by
@Mochamad Arief Satriajaya

C.1 Create Standard Salesforce API with Connected Apps


1. Buat Connected Apps di Setup Salesforce

Buka Salesforce Org dan buka Setup di Salesforce org.
Buka Manage Apps dan buat Connected Apps baru.
image.png
Isi dengan Callback URL login Salesforce dan OAuth Scopes sesuai dengan contoh
image.png
Save Connected Apps


2. Authentikasi melalui Postman

Menggunakan Connected Apps yang sudah dibuat, buka Managed Customer Data untuk menemukan Consumer Key (Client Id) dan Consumer Secret (Client Secret)
image.png
Pada Postman buat request baru untuk dengan header seperti di gambar
image.png
Pastikan Setting Allow OAuth Username-Password Flows sudah dicentang untuk memberikan Access Grant terhadap API Token
image.png
Untuk Body dari Request, gunakan client Id, client secret, username developer org, dan password ditambahkan dengan
image.png
User Token pada password didapatkan dengan klik setting pada profile, pilih R_eset My Security Token untuk mendapatkan User Token di Email
image.png
Jika sukses, Selamat! anda telah membuat Access Token yang siap digunakan untuk API yang akan digunakan.
image.png

C.2 Create Apex Class for Custom Rest API


1. Buat Class Apex untuk Mendapatkan Access Token

Buka Visual Studio Code Atau Developer Console di Salesforce org
Buat Apex Class baru yang untuk insert Account ke dalam Salesforce
Publish Apex Class yang terlah dibuat REST_Callin_ Account

@RestResource(urlMapping='/Account/*') //@RestResource digunakan untuk URL Mapping yang menjadi Query URL yang digunakan dalam menembak API
global class REST_Insert_Account {
global class RESTResult {
String Status;
String Message;
String AccountId;
List<String> Errors;

RESTResult(String Status, String Message, String AccountId) {
this.Status = Status;
this.Message = Message;
this.AccountId = AccountId;
this.Errors = new List<String>();
}
}

@HttpPost
global static RESTResult doPost() {
RESTResult restResult = new RESTResult('', '','');
RestResponse res = RestContext.response;

String param = RestContext.request.requestBody.toString().trim();
Map<String, Object> paramMap = (Map<String, Object>) JSON.deserializeUntyped(param);

try {
Account newAccount = new Account();
newAccount.Name = (String) paramMap.get('Name');
insert newAccount;
restResult.Status = '0';
restResult.Message = 'Success Create Data';
restResult.AccountId = newAccount.Id;
return restResult;
} catch (Exception e) {
restResult.Status = '1';
restResult.Message = e.getMessage();
return restResult;
}
}
}

2. Test API yang sudah dibuat menggunakan Postman

Buka Postman dan masukkan URL, Body, dan Header yang sesuai
Gunakan Metode Get Token pada Postman seperti pada poin Pertama
image.png
Test API yang sudah dibuat menggunakan Postman dengan menggunakan URL yang didapatkan dari WorkBench (Login workbench, masuk pada tab Info, Session Information. Informasi URL ada di dalam folder Connection). Url dimulai dari https hingga services
image.png
Jika test sukses, Selamat! anda telah berhasil membuat akses REST API yang sudah bisa ditembak dari Luar Salesforce menuju Salesforce
image.png


curl --location 'https://login.salesforce.com/services/oauth2/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--header 'Cookie: BrowserId=Fi0mfUsnEe-6J8VpM0PmYA; CookieConsentPolicy=0:0; LSKey-c$CookieConsentPolicy=0:0; BrowserId=Fi0mfUsnEe-6J8VpM0PmYA; CookieConsentPolicy=0:0; LSKey-c$CookieConsentPolicy=0:0' \
--data-urlencode 'grant_type=password' \
--data-urlencode 'client_id=3MVG9VMBZCsTL9hna9QaiPuFBAOVAQANqRLNXng0UO4zpJ3Jb.6yw5A_H6GuRRTSfG77bvMKmkEh7_CFmesmS' \
--data-urlencode 'client_secret=A13874C550875265365B9B6060BD809E20EE88EE07514CEBE606BA55DDD294E2' \
--data-urlencode 'username=integration1@saasten.com' \
--data-urlencode 'password=demo1234'
curl --location 'https://saastentechnologies65-dev-ed.develop.my.salesforce.com/services/apexrest/InsertAccount' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer 00DNS000003e2RB!AQEAQGcrSiwJDvg49Ks6PvqlUYxbcKxGvqp1ZMCuRHG2G3DtUW6OaAnbSzsaiGKUfPa6Ei4NJne9pm1EJYL3a3QBcVQPdDK_' \
--header 'Cookie: BrowserId=4FfU1ngaEe-v0Z38KUzwKA; CookieConsentPolicy=0:1; LSKey-c$CookieConsentPolicy=0:1' \
--data '{
"Name":"Test122"
}'
Want to print your doc?
This is not the way.
Try clicking the ⋯ next to your doc name or using a keyboard shortcut (
CtrlP
) instead.