function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
Pradeep Satpute 8Pradeep Satpute 8 

I am Not able to pass JSON Data

public class TransactionJournalAPI {
  
    @InvocableMethod(label='CreateTransactionJournal'category='TransactionJournal')
    
    public static void createJournal(List<String> jsonStrings) {
        try{
        for(String jsonString : jsonStrings) {
            List<TransactionJournalRequest> requests = (List<TransactionJournalRequest>) JSON.deserialize(jsonString, List<TransactionJournalRequest>.class);
            for(TransactionJournalRequest request : requests) {
                TransactionJournal journal = new TransactionJournal();
                journal.ActivityDate = request.activityDate;
                journal.BookingDate = request.bookingDate;
                journal.ExternalTransactionNumber = request.externalTransactionNumber;
                journal.InvoiceDate = request.invoiceDate;
                journal.JournalDate = request.journalDate;
                journal.JournalTypeId = request.journalTypeId;
                journal.JournalSubTypeId = request.journalSubTypeId;
                journal.LoyaltyProgramId = request.loyaltyProgramId;
                journal.MemberId = request.memberId;
                journal.TransactionAmount = request.transactionAmount;
                journal.Status = request.status;
                insert journal;
                system.debug('Journal'+Journal.Id);
            }
       } 
        }
            catch (Exception e) {
           System.debug('Error: ' + e.getMessage());
            }
    }

    public class TransactionJournalRequest {
        public Date ActivityDate;
        public Date BookingDate;
        public String ExternalTransactionNumber;
        public Date InvoiceDate;
        public Date JournalDate;
        public Id JournalTypeId;
        public Id JournalSubTypeId;
        public Id LoyaltyProgramId;
        public Id MemberId;
        public Decimal TransactionAmount;
        public String Status;
    }
}

This is my apex class which i am using custom action but when i am passing data through postman its giving me an error please help me in json

{
  "inputs": [
    {"ActivityDate":"2022-01-01",
    "BookingDate":"2022-01-01",
    "ExternalTransactionNumber":"12345",
    "InvoiceDate":"2022-01-01",
    "JournalDate":"2022-01-01",
    "JournalTypeId":"01234567890abcdef",
    "JournalSubTypeId":"01234567890abcdef",
    "LoyaltyProgramId":"01234567890abcdef",
    "MemberId":"01234567890abcdef",
    "TransactionAmount":100.0,
    "Status":"Completed"
    }
  ]
}
I am getting following error in postman
[
    {
        "actionName": "TransactionJournalAPI",
        "errors": [
            {
                "statusCode": "INVALID_INPUT",
                "message": "An invalid input parameter was specified for Apex action TransactionJournalAPI: ActivityDate",
                "fields": []
            }
        ],
        "isSuccess": false,
        "outputValues": null
    }
]
Shri RajShri Raj

From your Apex class, it seems that you are trying to deserialize the JSON string into a list of TransactionJournalRequest objects, however, the format of the JSON data you are passing in the postman does not match the format of the class TransactionJournalRequest.
Here are a few things you can try to fix the code:
Verify that the JSON data you are passing in the postman matches the format of the TransactionJournalRequest class. Each property in the JSON data should match the name and type of the corresponding property in the class.
Instead of passing a single JSON string as an input, you can pass an array of JSON objects.

{
  "inputs": [
    {
    "ActivityDate":"2022-01-01",
    "BookingDate":"2022-01-01",
    "ExternalTransactionNumber":"12345",
    "InvoiceDate":"2022-01-01",
    "JournalDate":"2022-01-01",
    "JournalTypeId":"01234567890abcdef",
    "JournalSubTypeId":"01234567890abcdef",
    "LoyaltyProgramId":"01234567890abcdef",
    "MemberId":"01234567890abcdef",
    "TransactionAmount":100.0,
    "Status":"Completed"
    }
  ]
}

In Apex class, you need to change the code to handle the array of JSON objects instead of string.
public class TransactionJournalAPI {
  
    @InvocableMethod(label='CreateTransactionJournal'category='TransactionJournal')
    public static void createJournal(List<TransactionJournalRequest> requests) {
        try{
            for(TransactionJournalRequest request : requests) {
                TransactionJournal journal = new TransactionJournal();
                journal.ActivityDate = request.activityDate;
                journal.BookingDate = request.bookingDate;
                journal.ExternalTransactionNumber = request.externalTransactionNumber;
                journal.InvoiceDate = request.invoiceDate;
                journal.JournalDate = request.journalDate;
                journal.JournalTypeId = request.journalTypeId;
                journal.JournalSubTypeId = request.journalSubTypeId;
                journal.LoyaltyProgramId = request.loyaltyProgramId;
                journal.MemberId = request.memberId;
                journal.TransactionAmount = request.transactionAmount;
                journal.Status = request.status;
                insert journal;
                system.debug('Journal'+Journal.Id);
            }
        }
        catch (Exception e) {
            System.debug('Error: ' + e.getMessage());
        }
    }

    public class TransactionJournalRequest {
        public Date ActivityDate;
        public Date BookingDate;
        public String ExternalTransactionNumber;
        public Date InvoiceDate;
        public Date JournalDate;
        public Id JournalTypeId;
        public Id JournalSubTypeId;
        public Id LoyaltyProgramId;
        public Id MemberId;
        public Decimal TransactionAmount;
        public String Status;
    }
}