{"activeVersionTag":"latest","latestAvailableVersionTag":"latest","collection":{"info":{"_postman_id":"dae20395-a84a-4f11-8c2b-aee247c23ee8","name":"GLOBALG.A.P. - osapiens CertifierOS API documentation","description":"# Change Log\n\n| **Date** | **Change** | **Description/Detail** |\n| --- | --- | --- |\n| 20 October | Added new body for querying a producer with a GGN or number of GGNs | The body has been significantly simplified, requiring just the GGN(s) to search. |\n| 18 September 2025 | Query Products:  <br>\\- Updated request body with new fields.  <br>\\- Updated request type to GET. |  |\n| 07.04.2025 | \"Creating or Updating a location asset\" request updated with a clarification for assetCategoryId \"04\" | \"addressType\" field shall be left empty when using assetCategoryId value \"04\" |\n| 04.04.2025 | For ease of implemenation: New smart form references added | GGPLUS v2, FSMA v2.0 and 2.1, Biodiversity 1.1 and SPRING v2 smart form references were added |\n| 25.03.2025 | IFA v6 GFS Plants and AQ details added  <br>  <br>POST Returns a list of Producers/Business Partners updated | See Smart Forms available for IFA v6 GFS related information  <br>  <br>Feature communicated on 05.03.2025 also available now in LIVE: It is now possible to query for a specific producer using their GGN/GLN |\n| 20.03.2025 | Smart Forms available folder restructured and a GET requested added to query available smart forms in CertifierOS  <br>  <br>POST \"Writing the status of a ticket\" updated | The folders are restructured for better readability and to have information on the GET request to retrive the smart forms in the system  <br>  <br>New values for \"statusCategoryTypeId\" now documented |\n| 19.03.2025 | Request to connect a ticket to a work order has been updated | To connect a ticket to a work order, the \"linkType\" value should be \"FOLLOW_UP\" instead of \"RELATED\" |\n| 10.03.2025 | GRASP v2 details added | See \"Creating or updating a Work Order/Audit\" to see GRASP specific detail on how to create the audit based on worker scenarios (extensionFieldFive) |\n| 07.03.2025 | Answering DATE and DATE_TIME questions needs to happen with a timestamp. Examples updated for \"Write Smartform Data\"  <br>  <br>Non-compliance ticket creation now includes fields for reporting date and closing date |  |\n| 05.03.2025 | POST Returns a list of Producers/Business Partners updated | It is now possible to query for a specific producer using their GGN/GLN. ~~(Available only in PREPROD)~~ |\n| 03.03.2025 | LIVE environment information added | Url and path parameters for LIVE enviornment updated |\n| 19.02.2025 | Response details added to request POST Query Products | With this request, it is also possible to map old GLOBALG.A.P. product ids with the new ids in the osapiens system |\n| 12.02.2025 | Returns a list of Producers request JSON body updated  <br>  <br>Modify certificate and recertify calls have been added |  |\n| 11.02.2025 | Purpose of \"ExternalId\" in smart form content further explained | See \"Smart Forms available\" folder and \"Return content of a smart form...\" for details. The external ID can be used as an \"anchor\" to know the purpose of the smart form. |\n| 11.02.2025 | Request to generate a GGN added. See \"Generate GGN\".  <br>  <br>\"Creating or updating a Producer\" updated The GGN generated shall be added to the payload when creating a new producer. |  |\n| 07.02.2025 | Additional information for \"POST Creating or updating a location asset\" and \"POST Creating or Updating an Asset/Product....\"  <br>  <br>Additional requests added to \"Catalogues\" folder to:  <br>Query Farm Assurance Products  <br>Query reporting options  <br>Query team roles | When adding assets, the \"texts.key\" fields should also include the English translation key |\n| 04.02.2025 | Details added to  <br>\"Write Smartform Data for principle and criteria\" request JSON payload | Details added for \"answers.Validity\" section of the payload so that compliance calculation is supported |\n| 31.01.2025 | Creating or updating a Producer/Business Partner request JSON body updated | For the request, \"tags\" needs to be with a lower-case \"t\" and the organization id needs to be given in an array, e.g.: \\[\"001\"\\] |\n| 29.01.2025 | Request: \"Creating or updating a Ticket\" has been updated | The extensionFieldOne/Two/Three/Four shall be sent as an array of strings instead of an individual string value. |\n| 24.01.2025 | Additional information for \"Return content of a Smartform\" indicating rules for sections of a smart form to conditionally appear | E.g.: Important for QMS checklists where PHU/RMS principle and criteria will dynamically appear in case the producer group has PHU/RMS practices |\n| 22.01.2025 | Additional information provided for \"Return content of a Smartform\" | Additional field information provided for conditional questions in a smart form where an answer to a question will trigger new questions. |\n| 17.01.2025 | Two new audit statuses added  <br>  <br>\"Happy Path\" added in introduction to summarize the needed API calls in the certification process  <br>  <br>\"Smart Forms available\" folder added to ease testing of the API  <br>  <br>Added new audit type \"Certification scope management\" | Two new audit status values for \"Updating a Workorder/Audit Status\" request have been added:  <br>\"QMS/Sample audit compliant\" and \"QMS/Sample audit non-compliant\" |\n| 16.01.2025 | Write certificate request details were added.  <br>  <br>Creating or updating a work order was edited | For creating or editing a work order detail was added. When creating the work order, the product categories in the work order shall be given (extensionFieldTwo). Also, the parent location categories for assets was updated so that it supports recording of a producer group scope (AssetCategoryId). |\n| 15.01.2025 | New fields added to \"Creating or updating Ticket\" | Fields added for:  <br>Level of P&C  <br>Corrective Action needed  <br>Person who has closed the ticket  <br>General comments |\n| 19.12.2024 | Creation of asset: New values for asset category ids and explanation on how the asset ids shall be used  <br>  <br>Audit/Work order management: New explanation on the structure of work orders especially for group certification situations. | Note: The new asset category values are not yet in the CB test environment. |\n| 18.12.2024 | Table added to \"Creating or updating a Workorder/Audit\" to indicate a technical id for each Farm Assurance Product. |  |\n| 05.12.2024 | Initial release of documentation | Initial release of API documentation ready for inspection. See \"Major API developments in progress\" for missing information in the documentation. |\n\n# API Documentation\n\nThis documentation describes the API functionality of the GLOBALG.A.P. - osapiens Certification and Audit OS API (CertifierOS). Certifier OS supports processes to carry out GLOBALG.A.P. and related certifications from managing legal entity master data, assigning assets to the legal enties, carrying out audits, and issuing/managing the certificates per legal entity.\n\n## Basic workflow to register data via the API\n\n1. Create a producer and its masterdata\n    \n    1. Optional: Assign a producer to a producer group or assign members under the producer group\n        \n2. Assign \"assets\" to the producer\n    \n    1. Assign production sites as a location asset\n        \n    2. Assign product handling units (PHU) as a location asset (when applicable)\n        \n    3. Assign products to be under certification. Note: the production sites and/or PHUs need to be created first since the products will be assigned under them. In case the legal entity has the same product (e.g., apples) in two production sites, apples shall be assigned twice (once per production site)\n        \n3. Optional: Assign assets to the producer group or multisite with QMS\n    \n    1. The producer group or producer with QMS needs to have the assets assigned once on PG or QMS level so that they can be displayed in the certificate. See \"Creating or updating a location asset for details\"\n        \n4. Create a work order and audit in the system\n    \n    1. Upon creation of the work order, the work order details need to be defined that determine the Farm Assurance Product and the certification option. A work order is created per legal entity per Farm Assurance product and its certification option.\n        \n    2. Work order shall include the assets of the legal entity assigned in the previous step that are desired be under certifiation.\n        \n    3. Upon a successful creation of the work order, the API will return the necessary \"smart forms\" to be completed in the work order. The compilation of the different smart forms depends on the combination of the Farm Assurance Product, the reporting option and assets. Note that smart forms will contain checklists that are needed to be answered once per the work order form or several times (in cases where one smart forms is needed to be answered per product to input product attributes, for instance)\n        \n        1. Smart forms include various checklists to be completed before a certificate can be issued or an audit closed. NOTE: checklists refer not only to the principle and criteria (P&C) checklists but to every data point needed to be recorded in the work order such as the product attributes and audit details.\n            \n        2. Smart forms can be either associated to a task in the work order or to an asset. When querying the data for a work order, the smart form ids will be associated, therefore, either to a task or an asset.\n            \n5. Return the smart forms with the necessary fields populated. The data recorded in these fields shall form a part of the certificate. See: [GLOBALG.A.P. - osapiens CertifierOS API documentation](https://api-certificationauditos-doc.globalgap.org/#661313e1-cfd7-4af7-8490-d2428a2923cd)\n    \n6. Generate the certificate based on the work order and its completed smart forms\n    \n\n<img src=\"https://content.pstmn.io/b7e23088-4ce8-4bc4-889d-a5ed23e45dc9/YXVkaXRfYW5kX2NlcnRpZmljYXRpb25fZmxvdy5wbmc=\">\n\n## \"Happy Path\" of the process in the API\n\nThe following list contains the API calls needed to complete the process described above (some steps need to be reproduced for option 1 QMS and option 2 certificates):\n\n1. **POST Creating or updating a Producer/Business Partner**\n    \n    1. To create the producer\n        \n2. **POST Creating or Updating a location asset**\n    \n    1. To assign production sites and PHUs to the producer or Central PHU in case of a producer group (see “Asset Management” in the API documentation)\n        \n3. **POST Creating or Updating an Asset/Product for product on site/PHU**\n    \n    1. To add products for the site/PHU created in step 2\n        \n    2. Each product must be added individually per site/PHU (or Central PHU)\n        \n4. **POST Creating or updating a Workorder/Audit**\n    \n    1. This will create a work order from which the actual certificate will be generated. See [GLOBALG.A.P. - osapiens CertifierOS API documentation](https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Flinkprotect.cudasvc.com%2Furl%3Fa%3Dhttps%253a%252f%252fapi-certificationauditos-doc.globalgap.org%252f%2523426ed52f-fa72-4da1-9c86-1abc78ebd211%26c%3DE%2C1%2Cp6eau2IQbBK3WgrNI4BmUqpay28c2dx9B-07IoudyPsI4rMjmVzJeeyRrYiXIxEPGlxEV0868V8bcobGIWVBQdVFJXhI4pPNf2f_UjTaoP_UCLv7vcbFroK0PHbw%26typo%3D1&data=05%7C02%7Ctolonen%40globalgap.org%7Cc2a50b34e900497e5c6108dd31bb529a%7C047408726ccd45ad9c3e755c11feea13%7C0%7C0%7C638721402819062842%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&sdata=AWrAnE5fIOCZGL5kzJXBdQq8FObT4sel3Xt21domAYs%3D&reserved=0) for the details on work orders.\n        \n5. **GET Returns a list of Workorders/Audits**\n    \n    1. Use the query to retrieve the work order created in step 4. The response will contain the Ids of the smart forms needed to complete the work order (the automatic assignment of smart form feature is still in development – otherwise the request works)\n        \n6. **GET Return content of a Smartform (example for a checklist without principle and criteria)**\n    \n    1. With this request you can retrieve the content of a single smart form that needs to be completed in the work order (one work order to have several smart forms)\n        \n7. **GET Return content of a Smartform (example with principle and criteria)**\n    \n    1. Same as above but this example is just a smart form with a principle and criteria checklist\n        \n8. **POST Write Smartform Data**\n    \n    1. To fill in the answers for the smart form retrieved\n        \n9. **POST Write Smartform Data for principle and criteria**\n    \n    1. To fill in the answers for the principle and criteria checklist in case that is one of the smart forms that needs to be filled out\n        \n10. **POST Returns captured data of a Smartform (optional)**\n    \n    1. To inspect the answers submitted to smart forms via the API\n        \n11. **POST Creating or updating a Ticket**\n    \n    1. In case of a non-compliance discovered during the audit, this request needs to be used\n        \n12. **POST Creates the relation between different objects such as e.g., Workorders/Audits and Tickets**\n    \n    1. To create a connection between the ticket and the work order\n        \n    2. This request can also be used to connect work orders with each other\n        \n13. **POST Writing the Status of a ticket**\n    \n    1. To close the ticket when corrective actions have been implemented\n        \n14. **POST Updating a Workorder/Audit Status**\n    \n    1. This request can be used at any point in time to change the status of the work order\n        \n    2. In order to create a certificate from the work order, in the end the status must be set to “Closed compliant”\n        \n15. **POST Write certificate**\n    \n    1. Will create a certificate based on the work order ID where the certification scope is managed\n        \n\nNote: In case of a option 1 multisite with QMS or an option 2 group certificatio scenario, the process above needs to be repeated several times. Once for the management of the certificate scope, once for the QMS audit report (when needed) and as many times as needed for the site/member sample reports. These work orders can be connected with each other using the same requests as in step 12.\n\n# Environments, Authorization, and Parameters\n\n## Environments (TEST and LIVE)\n\nThe current environment for testing the API is the pre-production environment referred to as the \"PREPROD\" environment.\n\nThe url for the PREPROD environment is:\n\n[<b>https://preprod.osapiens.cloud/data/integration/</b>](https://qa.osapiens.cloud/data/integration/)\n\nThe url for the LIVE environment is:\n\n[<b>https://prod.osapiens.cloud/data/integration/</b>](https://qa.osapiens.cloud/data/integration/)\n\n## Authorization with username and password as parameters\n\nThe credentials (username and password) of the individual user available for the osapiens platform shall be used as parameters in each API request.\n\n## Authorization with Base64 encoded credentials\n\nAn alternative authorization method is to use Basic Auth that will Base64 encode the credentials. When entering the username, add a prefix \"un.\" before the username. With this method, an authorization token is created and will be send in the headers for each request:\n\n<img src=\"https://content.pstmn.io/40653b40-16ab-4b6b-912c-791e9692c5f9/aW1hZ2UucG5n\" width=\"830\" height=\"324\">\n\n<img src=\"https://content.pstmn.io/993f263c-7614-4d9e-b216-085293553687/aW1hZ2UucG5n\" width=\"718\" height=\"177\">\n\n## Retrieving the Organization ID:\n\nThe request bodies will contain a field to enter the organization id which has to match the organization (Certification Body) under which the user is. See each individual request for more details.\n\nThe organization can be retrieved via the web application by going to \"Administration\" -> \"Organizations\" -> \"Edit\" (by clicking on the three dots next to the organization). If organization ID is not available in the system, contact [customer_support@globalgap.org](https://mailto:customer_support@globalgap.org)\n\n## Parameters\n\nWith each request sent via the API, the following parameter and path variable values are expected if not using the Base64 encoded credentials.\n\n### Parameters\n\n| **Parameter** | **Value** |\n| --- | --- |\n| username | _username of the user_ |\n| password | _password of the user_ |\n\n## Path variables\n\nThese path variables are always expected and are the same across all CB users.\n\n| **Path variable** | **Value** |\n| --- | --- |\n| customer (PREPROD) | foodplus-qa-ext |\n| customer (LIVE) | foodplus |\n| application (PREPROD/LIVE) | field-service-os |\n\nWith the above parameters and authorization method, an example url is:\n\nPREPROD:  \n[https://preprod.osapiens.cloud/data/integration/foodplus-qa-ext/field-service-os/read-business-partners?username=demouser@demoandtestCB.org&amp;password=sjgirsg03359](https://qa.osapiens.cloud/data/integration/foodplus-dev/field-service-os/read-business-partners?username=demouser@demoandtestCB&password=sjgirsg03359)\n\nLIVE:\n\n[https://prod.osapiens.cloud/data/integration/foodplus/field-service-os/read-business-partners?username=demouser@demoandtestCB.org&amp;password=sjgirsg03359](https://qa.osapiens.cloud/data/integration/foodplus-dev/field-service-os/read-business-partners?username=demouser@demoandtestCB&password=sjgirsg03359)\n\n### Important\n\nWith your API user, log in to the web application at [PREPROD osapiens Portal - Login](https://preprod.osapiens.cloud/portal/login.html)  \nand make sure that in top left corner you have your organization selected:\n\n<img src=\"https://content.pstmn.io/2058842a-6838-44c6-8fbb-d1ab6bc492dc/aW1hZ2UucG5n\" width=\"557\" height=\"69\">\n\n# API Terminology\n\nWith some current limitations in the system, various field names may appear foreign to users as they have not been used before in GLOBALG.A.P. systems. See the each request for details for field purposes. Generally, the following field names/terminology and their purpose shall be noted:\n\n| **Field name or terminology** | **Purpose** |\n| --- | --- |\n| Asset (terminology) | Assets for the legal entities include:  <br>Legal entity production sites  <br>Legal entity (external) product handling units  <br>Legal entity proucts to be under certification. Products shall be registered per production site / PHU  <br>  <br>It is necessary to register the needed assets per legal entity before the CB can continue in the process of creating an audit/work order or a certification. The assets created per legal entity shall be assigned to each work order / certification and their related Farm Assurance Products. |\n| BusinessPartnerId (field name) | This is the technical identifier of the legal entity in the system and shall be used to manage the legal entity via the API |\n| ExternalId (field name) | This id corresponds to the GGN/GLN used by GLOBALG.A.P. |\n| Smart form (terminology) | Smart forms contain the data that needs to be recorded in work orders and that eventually is transferred to a certificate. Smart forms can contain data for products under certification (e.g., product attributes) but also general audit attributes and also the principle and criteria checklist. Smart forms need to completed in the work orders so that a (new version of a) certificate can be created. |\n| Task (terminology) | For technical reasons, each work order shall have **one** task and no more. A task is needed in the generation of a work order so that the necessary smart forms can be associated to this task. |\n| Ticket (terminology) | In CertifierOS, a non-compliance discovered during an audit shall be reported and tracked via a \"ticket\". |\n| Work order (terminology) | Work order can be an audit report or the working file where the certification scope of a legal entity is managed. Work order contains one to several smart forms that define the contents and the purpose of the work order. |\n\n# Major API developments in progress\n\n| **Development** | **Description** | **Status (in progress / completed)** |\n| --- | --- | --- |\n| Automatic assignment of smart forms based on work order / asset details | With this feature, smart forms will be automatically assigned per each work order based on the details sent via the API in the creation and modification to a smart form. Currently, the user will need to know which smart forms to select. | Completed and ready for testing |\n| Smart forms per Farm Assurance Product | A more precise documentation of smart forms needed per Farm Assurance Product. | in progress:  <br>General smart forms are available  <br>Smart forms for IFA v6 Smart Plants and AQ are available  <br>Smart forms for Nurture v12 and GRASP v2 are available  <br>  <br>NOTE: The API documentation currently includes a generic example of a smart form and the question types. This can serve as a template for your API integration for smart forms. |\n| NC/CA handling via API | Documentation for ticketing functionality to record and manage non-compliances and their corrective actions | Ready for testing |\n| Returning a revised compliance calculation after non-compliances have been closed. | Currently, the system only returns a calculation for the compliance before corrective actions are done. | Ready for testing. See:  <br>Returns a list of Workorders/Audits |\n| Generation and management of the certificate via the API | To create a certificate or modify the certificate during its validity | The generation of the certificate can be tested in the API.  <br>  <br>The modification of the certificate scope contents (to issue a new certificate version) is still under development. |","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","isPublicCollection":false,"owner":"7747798","collectionId":"dae20395-a84a-4f11-8c2b-aee247c23ee8","publishedId":"2sAY4ydfxc","public":true,"publicUrl":"https://api-certificationauditos-doc.globalgap.org","privateUrl":"https://go.postman.co/documentation/7747798-dae20395-a84a-4f11-8c2b-aee247c23ee8","customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"},"documentationLayout":"classic-double-column","customisation":{"metaTags":[{"name":"description","value":""},{"name":"title","value":""}],"appearance":{"default":"light","themes":[{"name":"dark","logo":null,"colors":{"top-bar":"212121","right-sidebar":"303030","highlight":"FF6C37"}},{"name":"light","logo":null,"colors":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"}}]}},"version":"8.10.0","publishDate":"2024-11-19T13:49:24.000Z","activeVersionTag":"latest","documentationTheme":"light","metaTags":{"title":"","description":""},"logos":{"logoLight":null,"logoDark":null}},"statusCode":200},"environments":[],"user":{"authenticated":false,"permissions":{"publish":false}},"run":{"button":{"js":"https://run.pstmn.io/button.js","css":"https://run.pstmn.io/button.css"}},"web":"https://www.getpostman.com/","team":{"logo":"https://res.cloudinary.com/postman/image/upload/t_team_logo_pubdoc/v1/team/768118b36f06c94b0306958b980558e6915839447e859fe16906e29d683976f0","favicon":"https://globalgap.org/favicon.ico"},"isEnvFetchError":false,"languages":"[{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"HttpClient\"},{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"RestSharp\"},{\"key\":\"curl\",\"label\":\"cURL\",\"variant\":\"cURL\"},{\"key\":\"dart\",\"label\":\"Dart\",\"variant\":\"http\"},{\"key\":\"go\",\"label\":\"Go\",\"variant\":\"Native\"},{\"key\":\"http\",\"label\":\"HTTP\",\"variant\":\"HTTP\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"OkHttp\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"Unirest\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"Fetch\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"jQuery\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"XHR\"},{\"key\":\"c\",\"label\":\"C\",\"variant\":\"libcurl\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Axios\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Native\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Request\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Unirest\"},{\"key\":\"objective-c\",\"label\":\"Objective-C\",\"variant\":\"NSURLSession\"},{\"key\":\"ocaml\",\"label\":\"OCaml\",\"variant\":\"Cohttp\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"cURL\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"Guzzle\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"HTTP_Request2\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"pecl_http\"},{\"key\":\"powershell\",\"label\":\"PowerShell\",\"variant\":\"RestMethod\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"http.client\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"Requests\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"httr\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"RCurl\"},{\"key\":\"ruby\",\"label\":\"Ruby\",\"variant\":\"Net::HTTP\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"Httpie\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"wget\"},{\"key\":\"swift\",\"label\":\"Swift\",\"variant\":\"URLSession\"}]","languageSettings":[{"key":"csharp","label":"C#","variant":"HttpClient"},{"key":"csharp","label":"C#","variant":"RestSharp"},{"key":"curl","label":"cURL","variant":"cURL"},{"key":"dart","label":"Dart","variant":"http"},{"key":"go","label":"Go","variant":"Native"},{"key":"http","label":"HTTP","variant":"HTTP"},{"key":"java","label":"Java","variant":"OkHttp"},{"key":"java","label":"Java","variant":"Unirest"},{"key":"javascript","label":"JavaScript","variant":"Fetch"},{"key":"javascript","label":"JavaScript","variant":"jQuery"},{"key":"javascript","label":"JavaScript","variant":"XHR"},{"key":"c","label":"C","variant":"libcurl"},{"key":"nodejs","label":"NodeJs","variant":"Axios"},{"key":"nodejs","label":"NodeJs","variant":"Native"},{"key":"nodejs","label":"NodeJs","variant":"Request"},{"key":"nodejs","label":"NodeJs","variant":"Unirest"},{"key":"objective-c","label":"Objective-C","variant":"NSURLSession"},{"key":"ocaml","label":"OCaml","variant":"Cohttp"},{"key":"php","label":"PHP","variant":"cURL"},{"key":"php","label":"PHP","variant":"Guzzle"},{"key":"php","label":"PHP","variant":"HTTP_Request2"},{"key":"php","label":"PHP","variant":"pecl_http"},{"key":"powershell","label":"PowerShell","variant":"RestMethod"},{"key":"python","label":"Python","variant":"http.client"},{"key":"python","label":"Python","variant":"Requests"},{"key":"r","label":"R","variant":"httr"},{"key":"r","label":"R","variant":"RCurl"},{"key":"ruby","label":"Ruby","variant":"Net::HTTP"},{"key":"shell","label":"Shell","variant":"Httpie"},{"key":"shell","label":"Shell","variant":"wget"},{"key":"swift","label":"Swift","variant":"URLSession"}],"languageOptions":[{"label":"C# - HttpClient","value":"csharp - HttpClient - C#"},{"label":"C# - RestSharp","value":"csharp - RestSharp - C#"},{"label":"cURL - cURL","value":"curl - cURL - cURL"},{"label":"Dart - http","value":"dart - http - Dart"},{"label":"Go - Native","value":"go - Native - Go"},{"label":"HTTP - HTTP","value":"http - HTTP - HTTP"},{"label":"Java - OkHttp","value":"java - OkHttp - Java"},{"label":"Java - Unirest","value":"java - Unirest - Java"},{"label":"JavaScript - Fetch","value":"javascript - Fetch - JavaScript"},{"label":"JavaScript - jQuery","value":"javascript - jQuery - JavaScript"},{"label":"JavaScript - XHR","value":"javascript - XHR - JavaScript"},{"label":"C - libcurl","value":"c - libcurl - C"},{"label":"NodeJs - Axios","value":"nodejs - Axios - NodeJs"},{"label":"NodeJs - Native","value":"nodejs - Native - NodeJs"},{"label":"NodeJs - Request","value":"nodejs - Request - NodeJs"},{"label":"NodeJs - Unirest","value":"nodejs - Unirest - NodeJs"},{"label":"Objective-C - NSURLSession","value":"objective-c - NSURLSession - Objective-C"},{"label":"OCaml - Cohttp","value":"ocaml - Cohttp - OCaml"},{"label":"PHP - cURL","value":"php - cURL - PHP"},{"label":"PHP - Guzzle","value":"php - Guzzle - PHP"},{"label":"PHP - HTTP_Request2","value":"php - HTTP_Request2 - PHP"},{"label":"PHP - pecl_http","value":"php - pecl_http - PHP"},{"label":"PowerShell - RestMethod","value":"powershell - RestMethod - PowerShell"},{"label":"Python - http.client","value":"python - http.client - Python"},{"label":"Python - Requests","value":"python - Requests - Python"},{"label":"R - httr","value":"r - httr - R"},{"label":"R - RCurl","value":"r - RCurl - R"},{"label":"Ruby - Net::HTTP","value":"ruby - Net::HTTP - Ruby"},{"label":"Shell - Httpie","value":"shell - Httpie - Shell"},{"label":"Shell - wget","value":"shell - wget - Shell"},{"label":"Swift - URLSession","value":"swift - URLSession - Swift"}],"layoutOptions":[{"value":"classic-single-column","label":"Single Column"},{"value":"classic-double-column","label":"Double Column"}],"versionOptions":[],"environmentOptions":[{"value":"0","label":"No Environment"}],"canonicalUrl":"https://api-certificationauditos-doc.globalgap.org/view/metadata/2sAY4ydfxc"}