API / ODATA BATCH PATCH requests with decimal values

HeidiAlford
Member Posts: 4
Hi all,
I have an ongoing project where an external system is using custom API's to update jobs in our Business Central (Onprem, 16) system.
Everything has been going fine until we start trying to use a combination of batching and numbers with decimal values in them. Send a single non-batched request with decimals - everything is fine. Send a batched request with a decimal value and it does not seem to like it.
For example the following request (Slightly modified example) works:
Has anyone come across this or have any work-arounds (Short of making it a string value and parsing it in BC when I receive it)?
TIA
Heidi
I have an ongoing project where an external system is using custom API's to update jobs in our Business Central (Onprem, 16) system.
Everything has been going fine until we start trying to use a combination of batching and numbers with decimal values in them. Send a single non-batched request with decimals - everything is fine. Send a batched request with a decimal value and it does not seem to like it.
For example the following request (Slightly modified example) works:
PATCH https://bc365test:7048/BC160/api/mycomp/jobs/v1.0/jobServiceLines('JO00003','SV01')?company=xyz If-Match: "*" { "lineamount": 400.2 }... but when batching requests like so:
POST https://bc365test:7048/BC160/api/mycomp/jobs/v1.0/$batch { "requests": [ { "method": "PATCH", "url": "jobServiceLines('JO00003','SV01')", "headers": { "company": "xyz", "Content-Type": "application/json", "If-Match": "*" }, "body": { "lineamount": 400.2 } } ] }I get the response:
"error":{"code":"BadRequest","message":"Invalid Request Body CorrelationId: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx."}If I just send an integer "lineamount" value it works fine.
Has anyone come across this or have any work-arounds (Short of making it a string value and parsing it in BC when I receive it)?
TIA
Heidi
1
Best Answer
-
Nevermind, I found it.
Here is an link to an article that explains that this is a bug:
https://www.kauffmann.nl/2021/01/06/batch-calls-with-business-central-apis-3-tips-and-tricks/
The way to fix this is to add the following to your Content-Type header:
IEEE754Compatible=true
That way, your Content-Type header would look like this:
application/json;IEEE754Compatible=true
1
Answers
-
Hi, I am facing the exact same problem, did you find any solution ?0
-
Nevermind, I found it.
Here is an link to an article that explains that this is a bug:
https://www.kauffmann.nl/2021/01/06/batch-calls-with-business-central-apis-3-tips-and-tricks/
The way to fix this is to add the following to your Content-Type header:
IEEE754Compatible=true
That way, your Content-Type header would look like this:
application/json;IEEE754Compatible=true
1
Categories
- All Categories
- 73 General
- 73 Announcements
- 66.6K Microsoft Dynamics NAV
- 18.7K NAV Three Tier
- 38.4K NAV/Navision Classic Client
- 3.6K Navision Attain
- 2.4K Navision Financials
- 116 Navision DOS
- 851 Navision e-Commerce
- 1K NAV Tips & Tricks
- 772 NAV Dutch speaking only
- 617 NAV Courses, Exams & Certification
- 2K Microsoft Dynamics-Other
- 1.5K Dynamics AX
- 320 Dynamics CRM
- 111 Dynamics GP
- 10 Dynamics SL
- 1.5K Other
- 990 SQL General
- 383 SQL Performance
- 34 SQL Tips & Tricks
- 35 Design Patterns (General & Best Practices)
- 1 Architectural Patterns
- 10 Design Patterns
- 5 Implementation Patterns
- 53 3rd Party Products, Services & Events
- 1.6K General
- 1.1K General Chat
- 1.6K Website
- 83 Testing
- 1.2K Download section
- 23 How Tos section
- 252 Feedback
- 12 NAV TechDays 2013 Sessions
- 13 NAV TechDays 2012 Sessions