cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
ExCessna
Resolver I
Resolver I

The property expects Table values, but this rule produces incompatible Boolean values

Below are links to two screen prints. They are for a PowerApp using the new barcode scanner. The purpose of the app is to scan a book's ISBN, then get information from a database and return information about the book. The Swagger file results in a successful response (see image at link).

 

Issue 1: I have two instances of the app saved. One is shared and the other is not. When I try to load the unshared instance for editing, the "Downloading" overlay appears and never completes loading the app in edit mode. The shared instance loads for editing. Is there a way to "unshare" to permit additional edits? Or is something else causing the problem?

 

Issue 2: If the Items property of Gallery1 is set to 'BookByISBN2.txt'.GetISBNSearch(Scanned_ISBN), the result is "The property expects Table values, but this rule produces incompatible Boolean values". If I replace "Scanned_ISBN" with an actual ISBN, the same message appears. How can this Items statement be corrected? The intent is to scan an ISBN, search the database for that ISBN, then return it to Gallery1.

 

Issue 3: When scanning the barcode in PowerApps online, the image is rotated 90 degrees and scanning does not work (at least not well).  When using PowerApps Studio, the barcode scanning image does NOT rotate (it is oriented properly and scanning works). This issue has been reported previously in the " scanning" Ideas section of the PowerApps Community. I assume this has been identified for a fix by the PA Team.

 

Any help will be very much appreciated!

Swagger File Is Valid

Gallery1 Items Statement

25 REPLIES 25

Hey ExCessna,

 

Good job trying to get it right. It can be tricky to understand Swagger and JSON Schema.

 

Given the values in your 'schema' property it looks like the schema is not matching your response. Try using a json schema generator. Perhaps: http://jsonschema.net/previous/

You can paste an example of your response and it'll spit out a roughly correct schema for you.

 

It looks like your root response is an object, not an array. Also, you have the array's 'items' property having a 'type' of 'string'.

 

I think you just need to change line 36 to be: type: "object" and remove the surrounding schema (lines 34-35).

Still unsuccessful. First made the changes to 34-36 described above. This resulted in a message similar to but different than the previous message:

000-Error-Required property type is not present or not a string at definitions.png

The response in the Swagger Editor is successful and still returns the data I'm trying to get. I just can't get a successful connection established in PowerApps.

I also tried copying and pasting the response in the Swagger editor into the Input of JASONSchema.net. It is nearly the same except that it lists the properties of the items in alphabetical order. Is there something I should be looking for here?

 

Is there something unusual about the particular API I'm trying to connect to? Would the problem stem from the authorization method where the api_key is part of the path? Is this even allowed by the current PowerApps version?

 

When you say "the schema is not matching your response", should they both list the properties in the same order? It always seems they are in a different order. Or does the order of the properties not make a difference, just the names and types of properties?

 

I will keep trying various versions made with the JASONSchema.net output. 

 

The order of properties does not make a difference. Only their names and types matter.

Unfortunately I cannot paste formatted content here, but can you please try the following 200 response (below):

 

(this is assuming that author_data and subject_ids are both arrays of objects, but it does not declare the schema of those objects, since the schema is not obvious from the sample response you included). 

 

"200": {

"description": "Successful Operation",
"schema": {
"type": "object",
"properties": {
"index_searched": {
"type": "string"
},
"data": {
"type": "array",
"items": {
"type": "object",
"properties": {
"title_long": {
"type": "string"
},
"author_data": {
"type": "array",
"items": {
"type": "object"
}
},
"summary": {
"type": "string"
},
"physical_description_text": {
"type": "string"
},
"publisher_text": {
"type": "string"
},
"urls_text": {
"type": "string"
},
"publisher_name": {
"type": "string"
},
"publisher_id": {
"type": "string"
},
"language": {
"type": "string"
},
"title_latin": {
"type": "string"
},
"edition_info": {
"type": "string"
},
"dewey_decimal": {
"type": "string"
},
"isbn10": {
"type": "string"
},
"title": {
"type": "string"
},
"lcc_number": {
"type": "string"
},
"dewey_normal": {
"type": "string"
},
"marc_enc_level": {
"type": "string"
},
"notes": {
"type": "string"
},
"book_id": {
"type": "string"
},
"awards_text": {
"type": "string"
},
"isbn13": {
"type": "string"
},
"subject_ids": {
"type": "array",
"items": {
"type": "object"
}
}
}
}
}
}
}
},

Radu Gruian [MSFT] ** PowerApps Staff

View solution in original post

Radu,

Thank you, thank you! I am able to make the connection at last! I cut and pasted the JSON file together using VS. Previously, I was trying to use the "Swagger JSON" from the "Generate Client" tab in the Swagger Editor. Is this the wrong thing to do? I am not sure why this didn't work...any ideas? Is it better to deal with a JSON file instead of YAML in the Swagger editor? What would you recommend for a beginner?

Much thanks to the PA Team for your help and not giving up despite my vague understanding of all of this. I have learned a lot in this process and hopefully am on the road to learning quite a bit more.

hpkeong
Community Champion
Community Champion

Hi

 

Question(2):

Since you want to return only the first record found (not a table), then I would suggest you to change to:

- LookUp and place in a TextBox.

(Both Filter and Search table that contains the same columns as the original table and the records that match the criteria.)

 

However, if to list out in Gallery with the ONLY matching record, use

Filter inside your items.

 

Question(3):

Scanning issues. 

I have also reported on the first day of BarCode scanning release in PowerApps Idea and others but yet to receive any reply on this, too. Hope PG can look into this.

hpkeong

Fantastic! Glad to hear.

Radu Gruian [MSFT] ** PowerApps Staff

OK! Now I'm able to generate valid connectors for the API (and probably for other APIs as well). For those future users who might be interested, much of the problem stems from using the "Generate Client", "Swagger JSON" output of the Swagger Editor and assumed it was valid JSON to upload into the PA Add Connection feature. It is NOT and I could not get the "Download JSON" feature in the editor to do anything (something else I don't understand). But if the Swagger YAML is pasted into an online YAML to JSON converter, a PA friendly JSON results.

 

So now another problem with this particular API surfaced:

1. The API wants an ISBN passed to it within a function. So the Data Source is currently "BookByISBN.GetISBNSearch(ISBN needed here), where "ISBN needed here" is a text string.

2. Unfortunately, as hpkeong has pointed out, the data source returns a single record, not a table. The Filter function and the LookUp functions are both designed to work with tables to "find" a single record, from what I understand, and I have not been able to use them successfully with either a Text Box or a Gallery. Errors were returned indicating it was looking for a table to be returned but incompatible record values are returned.

3. The Display Form has been successful in at least acting like PA is trying to retrieve the response. The following statement allows selection of the columns in the data source

BookByISBN.GetISBNSearch(Scanned_ISBN).data.title".  The "data.title" extension should not be there, but it does seem to indicate that PA is working with the API connection.  (see screen print below)

400 Bad Request Error400 Bad Request Error

"Scanned_ISBN.Text" is the ISBN number in a Text Box. The error message is "The service returned an error: BookByISBN!GetISBNSearch: 400 Request Header or Cookie Too Large 400 Bad Request  Request Header or Cookie Too Large nginx 1.6.1" 

An Internet search indicates the solution if this is returned on a web page is usually to clear the browser cache and try again. What causes this in PowerApps? How can I fix it?

 

Is Scanned_ISBN a text input control? If so, what you are passing into the function seems correct (Scanned_ISBN.Text), so the request should go through successfully.

 

If you have Fiddler installed, it would be great if you could capture a trace of that single call (what request is issued, and what the response is). We may be able to understand the problem by looking at that trace.

 

Also if you have the ability to watch what happens on the service side (if you own the service) -- e.g. via logs, telemetry, or debugging, that would also be helpful in tracking down the issue.

 

Basically at this point it seems like you are doing the correct thing on the PowerAps side, however either the request is malformed, or the service is unprepared to deal with one or more constructs folded in that request.

 

Radu Gruian [MSFT] ** PowerApps Staff

Radu,

Yes, I have an Input Text box capturing the EAN barcode scan or a manual entry of the ISBN. I have tried passing both Scanned_ISBN and Scanned_ISBN.Text in the function and get the "Bad request" error message with both.

 

I don't own the service, so that option is out.

 

I'm not familiar with what you mean by " the service is unprepared to deal with one or more constructs folded in that request" but would it have anything to do with the "author_data" array and/or the "subject_ids" array whose schema I don't yet know?

 

I have installed Fiddler and am now trying to figure out how to use it. Browsing to new sites with Edge results in "Can't connect to the proxy server" message and indicates I need to change something in the Proxy Settings. Chrome continues to work, so I'm able to send you this message. So far, I created a Loopback Exemption for PowerApps and placed the Fiddler Root Certificate in the machine's Trusted Root store, as described here.

 

I don't know whether the following is a trace or just a log file of http requests and responses, but here is a screen capture of what was logged when I clicked on "BookByISBN.GetISBNSearch(Scanned_ISBN.Text).data.title" when recreating the error. This time, I got the following error...slightly different..."The service returned an error: BookByISBN!GetISBNSearch: { "statusCode": 404, "message": "Resource not found" }.

000-Fiddler log 1c.png

If this is not what you've mentioned above, please let me know how to capture it and I will. Thank you!

Whoops! I realized I hadn't scanned a barcode, so here is the result:

000-Fiddler log 1d.png

The error message is the one originally described, not the one described in the previous post.

Helpful resources

Announcements
UG GA Amplification 768x460.png

Launching new user group features

Learn how to create your own user groups today!

Community Connections 768x460.jpg

Community & How To Videos

Check out the new Power Platform Community Connections gallery!

M365 768x460.jpg

Microsoft 365 Collaboration Conference | December 7–9, 2021

Join us, in-person, December 7–9 in Las Vegas, for the largest gathering of the Microsoft community in the world.

Top Solution Authors
Top Kudoed Authors
Users online (3,077)