oData
Files
API
Studio_Creatio_enterprise_edition
8.0

Hello community,

 

I want to add data inside a section with the OData interface. I've already checked the documentation at https://documenter.getpostman.com/view/10204500/SztHX5Qb?version=latest and https://academy.creatio.com/docs/developer/integrations_and_api/data_se… but I have the following problem:



I am using a simple Python script to make the API requests in these steps:

 

1. Authenticate in the website using the Authentication method

This works nice using the credentials as payload inside the request.

 

2. Extract the cookie returned inside the header response.

From the test I've made, I need to extract the cookie parts UserName, BPMCSRF, .ASPXAUTH, BPMLOADER and append all of them inside a "Cookie" header like this example:

 

"Cookie: BPMLOADER=; UserType=General; UserName=; .ASPXAUTH=; BPMCSRF=;"

 

Everywhere I've checked inside the documentation it says that it is enough using a header called BPMCSRF with that value from the Set-Cookie response header, but in my case it fails using that value and I have to build the Cookie myself with the different values specified above.

 

3. Perform a POST request to a section like https://mycreatio.com/0/odata/Case

Here the request fails and I get an error 403 - Forbidden with the following message:

 

403 - Forbidden: Access is denied.

You do not have permission to view this directory or page using the credentials that you supplied.

 

And I don't understand why Creatio returns that error, because if I try doing a GET request to the same URL it returns the full list without any problem, but performing a POST request using the same cookie structure inside the headers doesn't return the expected inserted register.

 

Thanks in advance in for your help.

 

Regards.

Like 0

Like

3 comments

Just to clarify, in theory the issue is not related to user permissions as I have tried to insert registers with multiple users (one of them being Supervisor) and in multiple sections, but I always get the same error.

 

P.D. I am using OData 4

Hello Alejandro!

 

For correct requests, you need to use all cookies not "only a part". Also "BPMCSRF" must be used in cookies and as a separate parameter in the header as mentioned in the example here Creatio API (getpostman.com).

Please try and test it with the corresponding changes.

Hello Kyrylo,

 

Thank you very much for your help. In my case the problem was only with that "BPMCSRF" header that I was not building properly, for the cookie values that I have to pass inside the "Cookie" header I tried passing ALL the values extracted from the response header "Set-Cookie" but it didn't let me authenticate, so the solution that works for me is creating a cookie manually with only the values  UserName, UserType, BPMCSRF, .ASPXAUTH, BPMLOADER that I mentioned before.

 

The POST requests are working flawlessly now. I will try now to upload files using OData following the documentation and I would highly appreciate if you are able to help me again if I have trouble.

 

Thank you very much.

Show all comments
oData
Files
API
Studio_Creatio_enterprise_edition
8.0

Hello community,

 

I want to get the attached files information from a given case inside my environment. As the primary section containing the information is case, I know that I can retrieve the case information from 

 

https://mycreatio.com/0/odata/Case

 

And the attached files can be extracted from 

 

https://mycreatio.com/0/odata/CaseFile

 

Where each element from the response has the format:

{
  "Id": "7bb283a4-2f30-7193-37f3-79c8465ceda4",
  "Name": "<value>",
  "CreatedOn": "<value>",
  "CreatedById": "<value>",
  "ModifiedOn": "<value>",
  "ModifiedById": "<value>",
  "ProcessListeners": 0,
  ...
  "Size": <value>,
  "CaseId": "<value>",
  "IsNeedToNotify": true,
  "SysFileStorageId": "<value>",
  "FileGroupId": "<value>",
  "Tag": "<value>"
},

As you may see there is a field "CaseId" which is used to link the file object to the case object.

 

The problem I have is that I want to get the list of files from a case only by the Case Id. I've tried many different approaches using the OData standard syntax like:

 

'">https://mycreatio.com/0/odata/CaseFile?$filter=CaseId eq '<value>'

 

But I always get an error when trying to access the resource. In the previous example, the error I get is related to the field data type. Creatio yells because the CaseId field is of type Guid but in the comparison I am using a string.

 

By the way, changing the query to:

 

'">https://mycreatio.com/0/odata/CaseFile?$filter=CaseId eq guid'<value>'

 

or

 

'">https://mycreatio.com/0/odata/CaseFile?$filter=CaseId eq <value>

 

Doesn't fix the issue.

 

Can you please help me with this query that I am struggling to do?

 

Regards

Like 0

Like

1 comments
Best reply

Rather than using CaseId, use Case/Id:

https://mycreatio.com/0/odata/CaseFile?$filter=Case/Id eq idvalue

Ryan

Rather than using CaseId, use Case/Id:

https://mycreatio.com/0/odata/CaseFile?$filter=Case/Id eq idvalue

Ryan

Show all comments
oData
Contact
Phone
Sales_Creatio
8.0

Dear mates,

We are adding to Creatio, our contacts from marketplaces with oData.

We are facing the following issue :

data are well integrated into Creatio, but if we look at the contact sheet, in the area on the top left, the telephone professional is not indicated even though it is present in the contact's communications fields. So in the contact details of the account, we do not directly see the contact's telephone number.

 

How can we add the phone to the contacts left panel in order to see the contact's telephone number directly on the accounts page ?

Thank you !

Nicolas

Like 1

Like

1 comments

Hello,



It`s seems to be an issue that our support should take a look. Please send us an email at support@creatio.com



Best regards,

Serhii

 

Show all comments
Upload
file
external
Application
oData
Service_Creatio
8.0

Hello Community,

 

I need to know if it is possible (and how to proceed if possible) to upload a file into Creatio (in this specific case an audio file) from an external application using OData connection in version 8.0.10. The file need to be uploaded into the attachments detail of a custom section.

 

Thank you!

Like 0

Like

1 comments

Hello Javier,

Regarding the general function of OData, you can find detailed information in the following resource:

 

OData Overview

 

For more specific examples and methods, you can refer to this documentation:

 

OData Methods and Examples

API for file management

Show all comments
oData
Sales_Creatio
8.0

I am getting a HTTP 403 (Forbidden) error when I call the OData $batch request on my developer instance.  It does not matter what requests I pass to it.  It also occurs when I use the example $batch request provided by the Creatio postman environment.

 

Do developer instances support batch requests?  Is there an option I can enable to allow batch requests?

Like 0

Like

4 comments
Best reply

Mobileforce Support,

 

The answer to the POST request to /AuthService.svc/Login will be a set of session cookies needed for further requests execution. One of those cookies (BPMSCRF cookie) values should be specified as a separate BPMCSRF header value for further POST\PUT\PATCH requests. So once you are authenticated via postman you need to copy the value of the received BPMCSRF cookie and set it as a header value for further requests in the following manner:

After that, you can try calling the OData endpoints via POST requests and they should succeed.







Thank you for contacting the Creatio technical support team. If you have any further questions, please send them as a reply to this email.



Thank you for choosing Creatio!

 

Hello, 

 

I've shared some documentation that will help you: 

 

OData | Creatio Academy



Best regards,

Orkhan

Orkhan,

Thanks, but I've already read the documentation and was able to get other OData calls to work successfully.  It is only the batch request is not working for me. 

 

Typically, a HTTP 403 error means that a user is trying to access a page or API that they do not have permission for.  Hence why I was asking whether there is some system configuration option I need to set.  I am trying to access this as the Supervisor user on my development instance.

 

Mobileforce Support,

 

The answer to the POST request to /AuthService.svc/Login will be a set of session cookies needed for further requests execution. One of those cookies (BPMSCRF cookie) values should be specified as a separate BPMCSRF header value for further POST\PUT\PATCH requests. So once you are authenticated via postman you need to copy the value of the received BPMCSRF cookie and set it as a header value for further requests in the following manner:

After that, you can try calling the OData endpoints via POST requests and they should succeed.







Thank you for contacting the Creatio technical support team. If you have any further questions, please send them as a reply to this email.



Thank you for choosing Creatio!

 

Orkhan,

Thanks, that was the issue.  I did not realize that the BPMCSRF cookie also had to passed in as HTTP header as well.

Show all comments
data import
oData
Sales_Creatio_commerce_edition
8.0

Hello Community,

Besides the built-in functionality for data import, I have seen in community posts the possibility to import data to Creatio from ODATA protocol.

Are there any examples regarding this feature, academy article, or what to know before implementing it?

Best regards,

Sasori

Like 1

Like

1 comments

Hello Sasori,

 

Regarding the general function of OData, you can find detailed information in the following resource:

OData Overview

 

For more specific examples and methods, you can refer to this documentation:

OData Methods and Examples

Show all comments
Triggers
oData
Studio_Creatio_enterprise_edition
8.0

Hello team,

 

I have written a script using SEQUENCE & TRIGGERS for PostGres to auto increment the record number. This was a decision taken to avoid writing multiple codes through JS and Server side because we get inputs from a lot of sources - 3rd party integration, manual entry & business process.

 

While our trigger works well, we noticed that using odata, the response returned does not have the auto numbered value, whereas the auto numbering is indeed getting stored in the data base.

 

The question is, does Odata response for POST requests get triggered after all DB triggers are completed or does it happen just before a record is inserted into the DB?



PS: I tried triggers using BEFORE update and it did not work

Like 0

Like

1 comments

Hello,

This question needs to be analyzed mo deeply, but, based on your information, the POST request isn't affected by all the DB triggers and therefore happens before the insert.

Also, a small note, if you have autonumbering both on the JS and Server side than a new number will be generated no matter what is the source of the object (data, business process, etc).

Show all comments

Hi everyone 

 

Someone can tell me, How many requests? I could send it into a request batch using Odata v4 (0/odata/$batch)

 

Regards

Like 0

Like

1 comments
Best reply

Hello Carlos, 



The OData protocol has the following limitations:

- The response body can contain up to 20 000 lines.

- A batch request can contain up to 100 sub-requests.

More detailed information can be found in corresponding (and connected to it) article on our Academy. 

 

Best regards,

Anastasiia

Hello Carlos, 



The OData protocol has the following limitations:

- The response body can contain up to 20 000 lines.

- A batch request can contain up to 100 sub-requests.

More detailed information can be found in corresponding (and connected to it) article on our Academy. 

 

Best regards,

Anastasiia

Show all comments
API
oData
Studio_Creatio_enterprise_edition
8.0

Hi,

We need to integrate 3rd party web application with Creatio DataBase using OData4.

Our question is:

How many concurrent connections with the same Creatio user does Creatio system support?

 

Is it OK to set "ApiUser" Creatio user, and use this user to interact with Creatio with LOTS of concurrent  API requests to  Creatio?

 

Thanks,

Eran.

 

Like 0

Like

1 comments

Good day,

 

Sadly, we do not have exact specifications and limits on the number of connections to Creatio.

You should only be limited by the specs of your Redis server that will have to process those connections.

 

We would additionally recommend you use a header of ForceUseSession: true.

Using a system user through whom you will pass the API request should also work fine.

 

Thank you.

Show all comments
oData
json
API
Collections
Sales_Creatio
8.0

Hi Team,

We want to retrieve a specific record by Id along with all the related elements (eg - Retrieve Account A with all of its related Contacts). 

What we already know:

We can retrieve the account record itself along with related records that are linked with lookupfields, like the PrimaryContact

 

Account(0001111-1111-1111-1111-111111231123)?$expand=PrimaryContact($select=Name)

This works, but it returns only one contact, the primary one.

 

Instead, we need an embedded list of contacts, like

{
    "@odata.context": myurl.creatio.com/0/odata/$metadata#Account(PrimaryContact(Name))/$entity,
    "Id": "22222-222222-2222-222222-22222207ba6",
    "Name": "somename",
    "OwnerId": "111111-11111-11111-11111-1111111",
    "CreatedOn": "2022-11-16T21:11:57.214167Z",
    "Contacts“ : [
{object}, {object}
]
}

Given the first URL in the response, we expected that all NavigationProperties would behave the same:

But this collection:

Is not accessible. If we call for :

Account(0002204c-d255-46c0-bea6-0f32e2e07ba6)?$expand=ContactCollectionByAccount

 

We get this error in return:

{
    "error": {
        "code": "",
        "message": "An error has occurred."
    }
}

If we use other expand values, we retrieve meaningful errors like „Could not find a property named xy“, but this error is not self explaining. How can we return an object with an embedded list of children? I know that in this example we also could ask for a list of Contacts filtered by their account, but we cannot do that in all scenarios we have in mind.

Thank you

Petrika

Like 3

Like

1 comments

Hello Petrika,

 

This property cannot be used to retrieve all contacts related to the account and can be used in filtration only. To retrieve related contacts you need to perform the GET query to the Contact object with the correspondent AccountId filter. Using this approach you will be able to get contacts needed.

Show all comments