|
Β |
(346 intermediate revisions by 19 users not shown) |
Line 1: |
Line 1: |
| [[Category:Developer]] | | __NOINDEX__ |
| [[Category:API]] | | [[Category:Developer]] [[Category:API]] |
| == Status ==
| | The API (Application Programming Interface) is the way an application can enter in dialogue with Open Food Facts application server. |
| Currently the API is mainly used internally for [[Project:Mobile_Apps|Cordova application]], but does not follow good practices in API design.
| |
| It is also used by several application and while not yet stable, doesn't change much.
| |
| You can ask for help on using the API in this [[https://openfoodfacts.slack.com/messages/api/|Slack channel]]. You can have a look at the source code of the app (https://github.com/openfoodfacts/cordova-app/blob/master/www/off.js and https://github.com/openfoodfacts/cordova-app/blob/master/www/index.html)
| |
|
| |
|
| == Testing ==
| | All information about the API can be found [https://openfoodfacts.github.io/openfoodfacts-server/api/ in the documentation]. |
| * You should do all your test edits on http://world.openfoodfacts.net (ask for the password on Slack)
| |
| * Do not hesitate to create a global account for your app if you don't want to implement Open Food Facts user creation in your app right now.
| |
| Β | |
| == API Basic Documentation ==
| |
| === Countries ===
| |
| You can either use the global (world) for locales (fr, enβ¦)
| |
| Β | |
| === Reading a product ===
| |
| See http://fr.openfoodfacts.org/data or http://en.openfoodfacts.org/data
| |
| The requested subdomain will be the locale fetched.
| |
| Β | |
| === Searching for products ===
| |
| Β | |
| You can add &jqm=1 to search results pages on the web site to get results in a jquerymobile format.
| |
| Β | |
| Also:
| |
| * sort_by=unique_scans_n
| |
| * page_size=50 (20 by default, 1000 at most)
| |
| * page=2
| |
| Example: <sup>(remember to do tests on .net)</sup>
| |
| <pre>
| |
| http://world.openfoodfacts.org/cgi/search.pl?search_terms=coke&search_simple=1&jqm=1
| |
| </pre>
| |
| ====Search results====
| |
| * http://world.openfoodfacts.org/cgi/search.pl?search_terms=banania&search_simple=1&action=process&json=1
| |
| ====Labels====
| |
| =====List of labels=====
| |
| * http://world.openfoodfacts.org/labels.json
| |
| * http://world.openfoodfacts.org/labels.xml
| |
| =====Individual label=====
| |
| * http://world.openfoodfacts.org/label/utz-certified.json
| |
| * http://world.openfoodfacts.org/label/utz-certified.xml
| |
| ====Categories====
| |
| =====List of categories=====
| |
| * http://world.openfoodfacts.org/categories.json
| |
| * http://world.openfoodfacts.org/categories.xml
| |
| =====Individual category=====
| |
| * http://world.openfoodfacts.org/category/baby-foods.json
| |
| * http://world.openfoodfacts.org/category/baby-foods.xml
| |
| ====Status of products====
| |
| =====List of States =====
| |
| * http://world.openfoodfacts.org/states.json
| |
| * http://world.openfoodfacts.org/states.xml
| |
| =====Individual Status =====
| |
| * http://world.openfoodfacts.org/state/complete.json
| |
| * http://world.openfoodfacts.org/state/complete.xml
| |
| ====Packaging====
| |
| =====List of Packagings=====
| |
| * http://world.openfoodfacts.org/packagings.json
| |
| * http://world.openfoodfacts.org/packagings.xml
| |
| =====Individual Packaging=====
| |
| * http://world.openfoodfacts.org/packaging/cardboard.json
| |
| * http://world.openfoodfacts.org/packaging/cardboard.xml
| |
| ====Brands====
| |
| =====List of Brands=====
| |
| * http://world.openfoodfacts.org/brands.json
| |
| * http://world.openfoodfacts.org/brands.xml
| |
| =====Individual Brand=====
| |
| * http://world.openfoodfacts.org/brand/monoprix.json
| |
| * http://world.openfoodfacts.org/brand/monoprix.xml
| |
| ====Purchase Place of products====
| |
| =====List of Purchase Place =====
| |
| * http://world.openfoodfacts.org/.json
| |
| * http://world.openfoodfacts.org/.xml
| |
| =====Individual Purchase Place =====
| |
| * http://world.openfoodfacts.org/.json
| |
| * http://world.openfoodfacts.org/.xml
| |
| ====Store of products====
| |
| =====List of Stores=====
| |
| * http://world.openfoodfacts.org/.json
| |
| * http://world.openfoodfacts.org/.xml
| |
| =====Individual Store=====
| |
| * http://world.openfoodfacts.org/.json
| |
| * http://world.openfoodfacts.org/.xml
| |
| ====Country of products====
| |
| =====List of Countries =====
| |
| * http://world.openfoodfacts.org/countries.json
| |
| * http://world.openfoodfacts.org/countries.xml
| |
| =====Individual Country =====
| |
| * http://world.openfoodfacts.org/country/france.json
| |
| * http://world.openfoodfacts.org/country/france.xml
| |
| ====Trace of products====
| |
| =====List of Traces =====
| |
| * http://world.openfoodfacts.org/traces.json
| |
| * http://world.openfoodfacts.org/traces.xml
| |
| =====Individual Trace =====
| |
| * http://world.openfoodfacts.org/trace/egg.json
| |
| * http://world.openfoodfacts.org/trace/egg.xml
| |
| ====Additive of products====
| |
| =====List of Additives =====
| |
| * http://world.openfoodfacts.org/additives.json
| |
| * http://world.openfoodfacts.org/additives.xml
| |
| =====Individual Additive=====
| |
| * http://world.openfoodfacts.org/additive/fff.json
| |
| * http://world.openfoodfacts.org/additive/ddd.xml
| |
| ====Ingredient of products====
| |
| =====List of Ingredients=====
| |
| * http://world.openfoodfacts.org/ingredients.json
| |
| * http://world.openfoodfacts.org/ingredients.xml
| |
| =====Individual Ingredient=====
| |
| * http://world.openfoodfacts.org/ingredient/egg.json
| |
| * http://world.openfoodfacts.org/ingredient/egg.xml
| |
| Β | |
| === Posting photos ===
| |
| * Photos post on /cgi/product_image_upload.pl
| |
| ** code: the barcode
| |
| ** imagefield: "front"
| |
| ** imgupload_front : your image file
| |
| Β | |
| Example: <sup>(remember to do tests on .net)</sup>
| |
| <pre>
| |
| http://world.openfoodfacts.org/cgi/product_image_upload.pl
| |
| </pre>
| |
| Β | |
| === Posting a new product ===
| |
| * Product post to http://world.openfoodfacts.org/cgi/product_jqm2.pl <sup>(remember to do tests on .net)</sup>
| |
| ** var foodfact = { barcode : '3073780969000', name : 'KIRI GOUTER 280G 8 PORTIONS', energy: 500, energy_unit: "kJ", weight: 282 };
| |
| ** var postData = {
| |
| ** codeΒ Β Β Β : foodfact.barcode,
| |
| ** user_idΒ Β Β : "mesinfosnutritionelles",
| |
| ** passwordΒ Β : "****",
| |
| ** product_name : foodfact.name?foodfact.name:foodfact.shop_label,
| |
| ** quantityΒ Β : foodfact.weight?""+foodfact.weight+" g":undefined,
| |
| ** storesΒ Β Β : "IntermarchΓ©",
| |
| ** nutriment_energyΒ Β Β :foodfact.energy,
| |
| ** nutriment_energy_unit :foodfact.energy_unit,
| |
| ** nutrition_data_perΒ Β :"serving"
| |
| ** {"status_verbose":"fields saved","status":1}
| |
| Β | |
| <br>Example: <sup>(remember to do tests on .net)</sup><br>
| |
| <pre>http://world.openfoodfacts.org/cgi/product_jqm2.pl?code=3073780969000&user_id=usernameexample&password=*****&product_name=KIRI%20GOUTER%20280G%208%20PORTIONS&quantity=282%20g&stores=Intermarch%C3%A9&nutriment_energy=500&nutriment_energy_unit=kJ&nutrition_data_per=serving</pre>
| |
| Β | |
| == Roadmap ==
| |
| [[API/Roadmap]]
| |