Skip to main content
Solved

REST API - "The given key was not present in the dictionary."


Good day.

I am trying to create new leads via an API call.

I have the following settings configured inside postman:

URL: https://localhost/MyStoreInstance/entity/Default/20.200.001/Lead
HTTP method: PUT

Parameters:
$expand: Contact,Address
$select: Contact/FirstName,Contact/LastName,Address/Country

Headers:
Accept: application/json
Content-Type: application/json

Body:
{

"Contact":[{

"FirstName":{"value":"NewTest"},

"LastName":{"value":"NewTest"}

}],

"Address":{

"CountryID":{"value":"ZA"}

}

}



This is just a basic PUT method to make sure that it is working. I will later add it with correct and more values.

Any help would be greatly appreciated

I am receiving the following internal server error:
{
"message": "An error has occurred.",
"exceptionMessage": "The given key was not present in the dictionary.",
"exceptionType": "System.Collections.Generic.KeyNotFoundException",
"stackTrace": " at System.ThrowHelper.ThrowKeyNotFoundException()\r\n at System.Collections.Generic.Dictionary`2.get_Item(TKey key)\r\n at Microsoft.Data.OData.Query.SyntacticAst.ExpandBinder.GenerateExpandItem(ExpandTermToken tokenIn)\r\n at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()\r\n at System.Linq.Enumerable.WhereEnumerableIterator`1.MoveNext()\r\n at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)\r\n at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)\r\n at Microsoft.Data.OData.Query.SyntacticAst.ExpandBinder.Bind(ExpandToken tokenIn)\r\n at Microsoft.Data.OData.Query.SelectExpandSemanticBinder.Parse(IEdmEntityType elementType, IEdmEntitySet entitySet, ExpandToken expandToken, SelectToken selectToken, ODataUriParserConfiguration configuration)\r\n at PX.Api.ContractBased.OData.Helpers.ParseSelectCustomAndExpand(ODataUriParser uriParser, String select, String expand, String custom, IEdmEntityType elementType, EntityImpl entity, Nullable`1 returnBehaviorToSet, Boolean mapFilesByDefault)\r\n at PX.Api.ContractBased.OData.Helpers.FillRestQueryOptions(IEdmModel edmModel, EntityImpl entity, String filter, String select, String expand, String custom)\r\n at PX.Api.ContractBased.SystemContracts.V2.RestController.PutEntity(EntityImpl entity, String select, String filter, String expand, String custom)\r\n at lambda_method(Closure , Object , Object[] )\r\n at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.<>c__DisplayClass6_2.<GetExecutor>b__2(Object instance, Object[] methodParameters)\r\n at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(HttpControllerContext controllerContext, IDictionary`2 arguments, CancellationToken cancellationToken)\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Controllers.ApiControllerActionInvoker.<InvokeActionAsyncCore>d__1.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__6.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__6.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Filters.ActionFilterAttribute.<ExecuteActionFilterAsyncCore>d__5.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__6.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__6.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Filters.ActionFilterAttribute.<ExecuteActionFilterAsyncCore>d__5.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Controllers.ActionFilterResult.<ExecuteAsync>d__5.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Filters.AuthorizationFilterAttribute.<ExecuteAuthorizationFilterAsyncCore>d__3.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Controllers.ExceptionFilterResult.<ExecuteAsync>d__6.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n at System.Web.Http.Controllers.ExceptionFilterResult.<ExecuteAsync>d__6.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Dispatcher.HttpControllerDispatcher.<SendAsync>d__15.MoveNext()"
}

Best answer by Naveen Boga

Hi @charlbester34 Can you please try with the below Rest API code..

{

    "LeadID": {

        "value": "<NEW>"

    },

    "Status": {

        "value": "New"

    },

    "Reason": {

        "value": "Created"

    },

    "FirstName": {

        "value": "Naveen"

    },

    "LastName": {

        "value": "B"

    },

    "CompanyName": {

        "value": "Digicel Group"

    },

    "DoNotCall": {

        "value": false

    },

    "DoNotEmail": {

        "value": false

    },

    "DoNotFax": {

        "value": false

    },

    "DoNotMail": {

        "value": false

    },

    "DuplicateFound": {

        "value": false

    },

    "Email": {

        "value": "naveenb@test.com"

    },

    "JobTitle": {

        "value": "Head of Investor Relations"

    },

    "LeadClass": {

        "value": "LEADBUS"

    },

    "NoMarketing": {

        "value": false

    },

    "NoMassMail": {

        "value": false

    },

    "Owner": {

        "value": "EP00000002"

    },

    "OwnerEmployeeName": {

        "value": "Kachine Williams"

    },

    "ParentAccount": {},

    "Phone1": {

        "value": "1234567890"

    },

    "Phone1Type": {

        "value": "Business 1"

    },

    "Phone2": {},

    "Phone2Type": {

        "value": "Business 2"

    },

    "Phone3": {},

    "Phone3Type": {

        "value": "Home"

    },

    "Source": {

        "value": "Referral"

    }

}

View original
Did this topic help you find an answer to your question?

3 replies

Naveen Boga
Captain II
Forum|alt.badge.img+19
  • Captain II
  • 3381 replies
  • Answer
  • July 26, 2021

Hi @charlbester34 Can you please try with the below Rest API code..

{

    "LeadID": {

        "value": "<NEW>"

    },

    "Status": {

        "value": "New"

    },

    "Reason": {

        "value": "Created"

    },

    "FirstName": {

        "value": "Naveen"

    },

    "LastName": {

        "value": "B"

    },

    "CompanyName": {

        "value": "Digicel Group"

    },

    "DoNotCall": {

        "value": false

    },

    "DoNotEmail": {

        "value": false

    },

    "DoNotFax": {

        "value": false

    },

    "DoNotMail": {

        "value": false

    },

    "DuplicateFound": {

        "value": false

    },

    "Email": {

        "value": "naveenb@test.com"

    },

    "JobTitle": {

        "value": "Head of Investor Relations"

    },

    "LeadClass": {

        "value": "LEADBUS"

    },

    "NoMarketing": {

        "value": false

    },

    "NoMassMail": {

        "value": false

    },

    "Owner": {

        "value": "EP00000002"

    },

    "OwnerEmployeeName": {

        "value": "Kachine Williams"

    },

    "ParentAccount": {},

    "Phone1": {

        "value": "1234567890"

    },

    "Phone1Type": {

        "value": "Business 1"

    },

    "Phone2": {},

    "Phone2Type": {

        "value": "Business 2"

    },

    "Phone3": {},

    "Phone3Type": {

        "value": "Home"

    },

    "Source": {

        "value": "Referral"

    }

}


Hi @Naveen B 

Thank you for your response, I am able now to create a new record.

Thank you for your assistance


Naveen Boga
Captain II
Forum|alt.badge.img+19
  • Captain II
  • 3381 replies
  • July 26, 2021

Awesome :) Thanks for sharing an update.


Reply


Cookie policy

We use cookies to enhance and personalize your experience. If you accept you agree to our full cookie policy. Learn more about our cookies.

 
Cookie settings