Ask questions about connecting to Rest APIs within TimeXtender
Recently active
Hi,I’m trying to use the transformation Set replace value in the Table Builder. Described in tutorial like this: I tried a simple SQL string function (LEFT(NodeName,5). It looks proper in the XSLT Output: The execution worked fine. No errors. But both columns PatientNameHash and PatientName produces the same result in the Ingest table. The full name.Anyone who knows how to format a transformation in Set replace value?Is the content of the template “string-replace-all” available for viewing?BRAnders
Hi all! This morning, I retrieved data with the REST API of MoreApp.com. The API is quite straightforward. I encountered some challenges that I'd like to share with you. If there’s anything incorrect in this description, please let me know so I can adjust it.PreparationI am using the TX REST connector version 7.1.0.0.You will also need an API key, which must be created by the administrator in the app.The data I need to retrieve is located at the base URL: https://api.moreapp.com/api/v1.0. The specific data I am fetching is "submissions," or filled-out surveys. The POST API used to fetch this data is structured as follows:https://api.moreapp.com/api/v1.0/customers/{customerId}/forms/{formId}/submissions/filter/{page}Customer is fixed. FormId needs to be looked up. Page is required for pagination.Authentication is achieved by including the X-Api-Key in the header.Step 1 – Retrieve the correct FormIdsYou can do this via Postman or TimeXtender. It is a simple GET API:https://api.moreapp.co
HI,For the first time in my life, I have enjoyed working with a REST API 😁.It is actually a pleasure to use TimeXtender's new REST data source now.Swagger import, Dynamic values, Table builder etc.There will be more to be desired of course, but hats off to the developers who built it and to Thomas who have made tutorials that are comprehensive and easy to understand.Nice job! 🎉BRAndersP.S. It feels good to be undividedly positive once in a while too 😊
Hello,I'm working with a REST API where the response is a valid JSON but has a Content-Type: text/plain. The response looks like this:[{"OrderId":"46D2A6BD-8B34-4F55-B816-B90017CDBA28","OrderNumber":131,"DeviceId":"POS41232","VendorId":1,"VendorName":"Test Facility","StoreId":114}]However, the log shows the following:2025-01-10T15:33:16.340+01:00 2 [1|Q-Id] [HTTP|Res: 0] HTTP/1.1 200 OK, 1615 Bytes Transferred2025-01-10T15:33:16.340+01:00 2 [1|Q-Id] [HTTP|Res: 0] Request completed in 676 ms.2025-01-10T15:33:16.344+01:00 3 [1|Q-Id] [META|Schema: JSONValidation] https://pos.no/getsales is not a valid JSON resource.2025-01-10T15:33:16.345+01:00 3 [1|Q-Id] [META|Schema: JSONValidation] Invalid JSON markup. Expected json, but instead found [text/plain; charset=utf-8]. To attempt to fix this, I set Accept: application/json in the request headers, but this results in a response wrapped in a string, like this:"[{\"OrderId\":\"46D2A6BD-8B34-4F55-B816-B90017CD
Hello, I want to get metadate from my Azure datalake using their Blob API. I wasn't seeing any data in the Ingest storage so I turned on cashing to file, to try to see what's happening. There are three files in my cashing folder: Data_.raw: The return of the call, i.e. my actual data. This look excellent, except that it's a .raw file. Contents: <?xml version="1.0" encoding="utf-8"?><EnumerationResults ServiceEndpoint="https://xxxx.blob.core.windows.net/" ContainerName="datalake"> <Prefix>my_prefix</Prefix> <Blobs> <Blob> .... </Blob> </Blobs> <NextMarker/></EnumerationResults> Data_.xml: Basically the same as the Data_.raw, but with the content of Data_.raw as the data of a value-element. The data also contains the XML header (so now the document has two headers) and the brackets have been encoded (i.e. all the `<` are now `<`). <?xml version="1.0" encoding="utf-8"?><Table_flattening_name
I have two particular use cases where I would like the TX REST connector to be able to handle nothing being returned. In one case I've configured the portal to do a PUT request. PUT's generally don't return any body. In a second case, the API is just configured to do this sometimes. We get ID's from another endpoint that we are then supposed to use dynamically like: endpoint/{ID}. The problem is that the source system can have phantom ID's, meaning that ID=13 doesn't really point anywhere. endpoint/13 then returns just a completely empty body. In both cases the problem seems to be that the connector can't handle this. We get back:Failed to execute endpoint 'xxx':Unexpected character encountered while parsing value: }. Path 'TX_Autogenerated_Element', line 1, position 28.Going of the error message, it would seem that the connector is assuming a json was returned and automatically starts trying to convert is somehow. I need to be able to handle these situations somehow, since I have no
I have an API with the following documentation:• https://baseball.help.trumedianetworks.com/baseball/data-pro-api-docs According to the API documentation, a token must be generated and included as a parameter. This is done using a master token provided by the supplier. When testing in Postman, I receive a response in CSV format; however, the same does not work in TimeXtender. In Postman, the request automatically generates a header "cookie" containing an access token (through redirection). Is it possible to use a cookie container with a redirect option? In cases where a query is redirected to another URL and an authentication cookie obtained from the original URL needs to be set in the redirected request? If so, is this option available in TimeXtender's REST or RSD functionality?
I am trying to achieve something complex in the TX REST connector using table flattening.I have the following JSON response: [ { "id": 1, "submitted": "2024-06-26T12:11:42+02:00", "answers": [ { "question": { "id": 3, "label": "How do you evaluate this?", "type": "SINGLE" }, "answer": 9 }, { "question": { "id": 4, "label": "How do you rate the following elements?", "type": "MATRIX_SINGLE_CHOICE" }, "answer": [ { "ids": [ 55 ], "labels": [ "Drinks" ], "value": [ "Good" ] },
Hello,We have a REST API where we use both Dynamic Value and Pagination (replace URL). The issue is that the paging works fine but only considers the first Dynamic Value and skips the rest. The final result then returns all pages for the first dynamic value and no rows for the rest. Further we also use Table Flattening as well as the Exhaustive Metadata Scan Option. How can we make it loop through all dynamic values as well as keeping the paging option? API request:https://{base_url}/{company_url} Paging:Replace URL with {nextLink} type XPath Dynamic Value query:SELECT company_url FROM [MDW_Dev].[SysTransform].[Company_information]
Hello all,I am currently trying to retrieve all Google Reviews for multiple locations for one of my clients, who operates 35 locations. Some of these locations have over 50 reviews, and since Google Reviews uses pagination through a nextPageToken for more than 50 reviews, I need to handle this pagination effectively.The client is running TimeXtender version 20.10.52.64, and I am using the CData connector version 24.0.8999.0. I have reviewed the documentation on the TimeXtender support pages about nesting an API call and utilizing pagination. I am attempting to set up the Query Slicer to loop through the locations and retrieve all reviews per location, but I am encountering difficulties.Here’s what I have set up so far:I created two .rsd files:locations.rsd: Retrieves a list of all location IDs. This returns 35 locations, as expected. locationsReviews.rsd: Retrieves all reviews for a given location. This works correctly when I test it, returning 397 reviews for one location ID.(I've inc
The below image is the documentation for my endpoint. I can't get this to work. When I configure this in the portal I get back a 415 error. Any general guidelines on how to configure this? Update 2024-07-22The regular way:I’ve been doing some additional testing. Here's a more detailed description of my findings/problems. The API wants to receive a JSON body like so:{ "grant_type": "authorization_code", "code": "abc***123"}I tried to add fill out the portal like this:This doesn't work and returns the 415 error.What should I fill out in stead? My cicumvention (doesn't suffice). I configure one endpoint (access_token) to be a POST request (the request that will give back my bearer token). I then configure a second endpoint (Products) and use a dynamic value based on access_token and use it in the header Authorization. See images below.A POST request that will return my bearer token.A GET request that uses the bearer token value returned by the previous endpoint.This method does “wor
I am getting a bearer token when i am running the json code below with the specified url, but i don`t know how to implement this json body in TimeXtender, is there any documentation available or a solution for this? { "id": "", "language": "en", "data": { "resourceType": "AUTH", "item": { "loginName": "api@user", "password": "password", "module": "API" } } }
Hi,As mentioned here https://support.timextender.com/data-sources-112/advanced-rsd-file-options-884?postid=7688#post7688 I'm having some issues with nested API calls using the CData REST provider. It looks like it maxes out at 1,000 calls per iteration. Is this the expected behaviour or is there a setting I haven't found?Thanks!
I have an API that requires an access token to be retrieved using a POST request, which is returned as JSON. Most of the endpoints also return the data in JSON, which I can already extract using custom rsd files. However, there is one endpoint that returns custom reports in text/CSV format. So I'm looking for a way to retrieve the token from a JSON response and use it to do a second request to retrieve a CSV response.I've tried using the CSV provider to do this, but I get an error when I want to combine jsonproviderGet and csvproviderGet in a nested call using an rsd file based on my already working all-json rsd file: Is there a way to make this work? Thanks,Jasper
I am having issues getting the new ODX TimeXtender Rest API to connect using OAuth2 and an authentication service to generate an expiring bearer token.I have been able to generate a token successfully using Postman, and I have been able to configure the standard ODX CData Rest datasource successfully with the authentication service. But using the same setup I am getting errors on the TimeXtender Rest service.This is the OAuth2 settings from the standard Rest Data SourceCData Rest OAuth settings that workThis is the OAuth settings from the new TimeXtender Rest datasource that don’t work.TimeXtender Rest APIThe only thing potentially unusual was that when setting up my postman request to generate the Bearer Toekn the connection instructions specifically stated to setup the body as follows:Postman However I did not have to set the encoding in the standard CData Rest.I did try generating the bearer token in postman and then using that as a not expiring Bearer token to verify my core URL an
Hi all,I am using a Cdata Restapi to connect to a datasource, and it has been working fine up to now.It seems they have changed one of the fields, used for incremental loading, and this has now become too long to fit in a integer data type. I have had contact with the support team of the datasource and it seems the field had always been setup as a int64 field (not documented very well), but the value wasn't that big in the past. Now I get errors when retrieving data , stating that the field is too small. How can I adjust the field definition in TX so that it is a bigint field instead of int32? I tried with override datatype, but initially it still wants to load the data in int32.Using the TX 20.10 version, with business units and a cdata restapi connection. Has anyone experience with this? Kind regards,Jacqueline
In many of the tutorials for dealing with specific types of APIs reference is made to internal variables like {TX_CurrentPage} and others that can be leveraged to implement things like pagination. As far as I can find there does not seem to be a list of such items and what they do. Could this be made available?
I'm trying to connect to an InfluxDB source, where a POST request is expected, including flux script in the body to filter data. The output is in CSV format. I have this working in Postman, but how should I configure this in TimeXtender? Anything I try results in the error below, which also means no RSD is generated.[500] Could not execute the specified command: HTTP protocol error. 405 Method Not Allowed
Hi,I'm using the TimeXtender REST Data Source (5.0) and trying to set up pagination.Right now the relevant table from the data source contains 3999 rows.However the table should contain 4092 rows.In the API documentation I couldn't find a XPath or a header containing a link to the next page.Could someone help me with configuring the pagination in the portal. (maybe by looping over the max row count) Thank you.
Hi all, I have an api which is connecting to a restlet endpoint. trying to get this in timextender but I'm getting errors all the time. to set this up in Postman I have added a screenshot of the values i'm adding to my call, which is then added as a header to the call (see header png).Transferring this to TX gives me a 403 forbidden. I'm thinking this is because of encoding or the HMAC signing. But I have tried a lot of things but not getting the call through. Any suggestions as to how I can add a restlet with Oauth1.0? If more information is needed please let me know
Hey, I have a question about our REST API. We need to implement client certificates, similar to here in Postman: Is this possible with the new REST provider? If not, what are the steps to do it with the old one?
Hi,I am trying to parse a response using the REST connector from an API which returns a JSONROWS-format where the first row contains the name of the columns, while the following rows contain the values.The response is on the form:{ "response":[ [ {"name":"test1"}, {"name":"test2"} ], [ 1, 2 ], [ 3, 4 ], [ 5, 6 ] ]}I have tried several different xPath-configurations. The following gives the correct columns, but returns zero rows:xPath: column:/response;columnname:/response.name;row:/responseI was hoping that at least this would have parsed all the values as strings with the first row containing the {“name”:”testN”} in the corresponding columns.How do I work with this response?
Hi everyone, I’ve been searching but haven’t been able to find in previous threads. For an API i'm trying to extract to TX, i'm running into some issues. The API extracts some geographical building data, based on an ID. I have these ID's from a seperate source already in the warehouse.What I want to do is get the ID from the ODX-table and for each ID run a call to the API. I'm new to this scripting language and maybe im overlooking it in existing documentation but for me it seems impossible. Any idea's and suggestions would be welcome, thanks!
Hi,I'm currently connecting to a new api.https://ads-api.autotelex.com/swagger/index.html?urls.primaryName=Autotelex%20%7C%20Advertisement%20API%20V2%20(Beta)In my RSD file I call /api/v2/stock to get the ids for a stock, then I call /api/v2/stock/{adsStockId}/summary using the ids from the first call.The problem I run in to is that i can only make 300 calls per minute for the second call. Whenever I run into this limit my execute fails with the message: "Too many requests".Is there any way to limit or reduce the amount of calls I make per minute?Kind regards,Niek
Hi,I have a project that is using the cdata connector as a datasource, and because of issues with paging and nested call we have created query tables to get the correct results (using queryslicer in the rsd-files).Because of performance issues the tables have to be setup for incremental loading, but I cannot get this working because I need the incremental value in the call.Is it somehow possible to use a variable or a field from another table in the Quey tables to get the incremental value?When using a fixed date the logic is working fine (as shown below) but that's not workable: SELECT * FROM [REST].[EventRegistration_Detail] WHERE [file_name] IN (SELECT [Name] FROM [REST].[EventRegistration_List] WHERE [Properties.Last-Modified] > '2023-01-01') (using TX 20.10.30.64 with Business Units) Any good suggestions on this? Kind regards,Jacqueline
Already have an account? Login
No account yet? Create an account
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.