web
You’re offline. This is a read only version of the page.
close
Skip to main content

Notifications

Announcements

Community site session details

Community site session details

Session Id :
Power Platform Community / Forums / Power Pages / webapi - create/associ...
Power Pages
Unanswered

webapi - create/associate - returning 400 bad request

(0) ShareShare
ReportReport
Posted on by 482

Hi all,

 

I'm trying to create and associate a contact with the portal webapi as per this page - https://learn.microsoft.com/en-us/power-pages/configure/write-update-delete-operations#basic-create

 

However it keeps returning a 400 bad request error. If I remove the association it works. I've triple checked my permissions. Are we not able to associate a contact to a custom table? Do I need to use a special relationship or not binding? I feel like I've tried every premutation, but nothing works.

 

 

 

function setValue(userId){

 var record = {};
 record["a1a_contact@odata.bind"] = "/contacts("+userId+")"; // Lookup
 record["a1a_name"] = userId; // Lookup

 webapi.safeAjax({
 type: "POST",
 contentType: "application/json",
 url: "/_api/a1a_login",
 data: JSON.stringify(record),
 success: function (data, textStatus, xhr) {
 var recordId = xhr.getResponseHeader("entityid");
 console.log(recordId);
 },
 error: function (xhr, textStatus, errorThrown) {
 console.log(xhr);
 }
 });
 
}

 

 

 

Categories:
I have the same question (0)
  • Fubar Profile Picture
    8,338 Super User 2025 Season 2 on at

    First, I suspect the value in the url is incorrect, confirm the value is the dataset name 

    url: "/_api/a1a_login",

     e.g. if it were for creating a Contact the value used would be /_api/contacts

    You can copy the Dataset name when in the make.powerapps interface on the Table  

    Fubar_0-1710385612048.png

     If the url is correct then confirm what the "record" looks like after you JSON.stringify it and compare its structure to the sample JSON in the link in your post. (e.g. debug it in the browser before the safe ajax call)

  • skoofy5 Profile Picture
    482 on at

    The table name must be correct as the record is created when I pass only the name, so it really must be the contact association that's the issue.

     record["a1a_contact@odata.bind"] = "/contacts("+userId+")";

     

    I'm not creating a contact - I'm creating a record and attempting to associate the contact of the logged in user.

  • Fubar Profile Picture
    8,338 Super User 2025 Season 2 on at

    I understand you are not creating a contact, that was just provided as an example.

    Use XrmToolBox's Dataverse REST Builder

    • File ->New Collection
    • Request Type: Create
    • Select your Table
    • Add Column - select your name field and populate a value)
    • Add Column - select your Contact Lookup field
    • Then for the lookup use the magnifying glass and select a value (this is only so when it generates it populates something and doesn't leave blank)
    • Click the Portals Tab - will generate the code for you
    • Copy the output and substitute in your GUID

    An example using Account with populating Primary Contact lookup

    Fubar_0-1710391824944.pngFubar_1-1710391847998.png

     

  • skoofy5 Profile Picture
    482 on at

    Yes - this is where I generated the code above.

  • Fubar Profile Picture
    8,338 Super User 2025 Season 2 on at
    • Double check the Set Name, as it should be plural and the code you provided it is not,
    • Make sure that your guid doesn't have braces {...}
    • Make sure that you have your table permissions setup and assigned to your portal user, and they include Append/Append To.
  • GWham1 Profile Picture
    on at

    Hi, you could try the following. Couple things to check afterwards...

     

     

    function setValue(userId){
     var dataObject={
     "a1a_contact@odata.bind": "/contacts("+userId+")",
     "a1a_name": userId
     };
     webapi.safeAjax({
     type: "POST",
     url: "/_api/a1a_login",
     contentType: "application/json",
     data: JSON.stringify(dataObject),
     success: function (data, textStatus, xhr) {
     var recordId = xhr.getResponseHeader("entityid");
     console.log(recordId);
     }, error: function (xhr, textStatus, errorThrown) {
     console.log(xhr);
     }
     }); 
    }

     

    • The web API can be very particular about the names (as mentioned above) - so double check them.
    • Ensure you have table permissions created for your table a1a_login (as mentioned above)
    • Ensure you have created two Site Setting to enable your table/fields for web API.
    Webapi/a1a_login/enabled
    Webapi/a1a_login/fields

    https://learn.microsoft.com/en-us/power-pages/configure/webapi-how-to

  • skoofy5 Profile Picture
    482 on at

    Alright so a strange twist.  I've tested in a different browser and still no joy with this contact. So I had some colleagues test and it works for them. Their contact setup is identical to mine, except they have fewer web roles assigned to them (e.g. no Administrator).

     

    So I'm really confused at the moment as I thought it was cumulative access. In any case I've gone to align myself with those roles and still isn't working for my contact login. So I really don't understand.

  • Verified answer
    skoofy5 Profile Picture
    482 on at

    Right. So I checked the error message again. It was still a 400 bad request, but actually contained the following detail which I either hadn't noticed or it wasn't supplying:


    "Read Privilege Check For Owner failed with exception: Principal user..."

     

    Very strange, because it was a user Id - I have no idea why this random user is only impacting my contact. Turns out there was one other difference with the contact - it's owner was not 'System' as all the other contacts also the user was inactive, but not the contact record. Once I changed the owner of the contact record the webapi calls were successful.

    So my question now is - how is it that the owner of the contact record is impacting access to the webapi? Is this a documented thing? 

     

    skoofy5_0-1710470968386.png

Under review

Thank you for your reply! To ensure a great experience for everyone, your content is awaiting approval by our Community Managers. Please check back later.

Helpful resources

Quick Links

Forum hierarchy changes are complete!

In our never-ending quest to improve we are simplifying the forum hierarchy…

Ajay Kumar Gannamaneni – Community Spotlight

We are honored to recognize Ajay Kumar Gannamaneni as our Community Spotlight for December…

Leaderboard > Power Pages

#1
Jerry-IN Profile Picture

Jerry-IN 71

#2
Fubar Profile Picture

Fubar 62 Super User 2025 Season 2

#3
sannavajjala87 Profile Picture

sannavajjala87 31

Last 30 days Overall leaderboard