### Get Customer ID with C# Source: https://docs.ppd.iopole.fr/docs/iopole-api/apiDescriptions/account/getCustomerId This C# example demonstrates how to fetch your customer ID using HttpClient. Replace 'your_token_here' with your actual API token. ```csharp using System; using System.Net.Http; using System.Net.Http.Headers; using System.Text; using System.Threading.Tasks; class Program { static async Task Main(string[] args) { string url = "https://api.ppd.iopole.fr/v1/config/customer/id"; string token = "your_token_here"; using var client = new HttpClient(); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token); client.DefaultRequestHeaders.Add("customer-id", "0df69e39-4988-48e0-8bd6-3ca5463a7118"); HttpResponseMessage response; response = await client.GetAsync(url); response.EnsureSuccessStatusCode(); string responseBody = await response.Content.ReadAsStringAsync(); Console.WriteLine(responseBody); } } ``` -------------------------------- ### Search API - Query Examples Source: https://docs.ppd.iopole.fr/docs/iopole-api/search Illustrative examples of complex queries that can be constructed using the Search API. ```APIDOC ## Query Examples - Truthy if `buyer.siren` ends by `123456789` OR if `seller.siren` ends by `88888`: `buyer.siren:"*123456789" OR seller.siren:"*88888"` - Truthy if `createdDate` is between `2024-01-01 04:05:06` AND `2025-01-01 04:05:06`: `createdDate:"2024-01-01 04:05:06" AND createdDate:"2025-01-01 04:05:06"` - Truthy if `buyer.siren` starts by `123456789` AND (`buyer.corporateName` equals `iopole` OR `seller.corporateName` equals `myOtherCompany`) AND `createdDate` is between `2024-01-01 04:05:06` AND `2025-01-01 04:05:06`: `buyer.siren:"*123456789" AND (buyer.corporateName:"iopole" OR seller.corporateName:"myOtherCompany") AND createdDate:>="2024-01-01" AND createdDate:<="2025-01-01"` ``` -------------------------------- ### Complex Query Example Source: https://docs.ppd.iopole.fr/docs/iopole-api/search A comprehensive example demonstrating the combination of wildcard searches, logical operators (AND, OR), grouping with parentheses, and range comparisons for multiple fields. ```lucene buyer.siren:"*123456789" AND (buyer.corporateName:"iopole" OR seller.corporateName:"myOtherCompany") AND createdDate:>="2024-01-01" AND createdDate:<="2025-01-01")' ``` -------------------------------- ### Get Customer ID with Node.js Source: https://docs.ppd.iopole.fr/docs/iopole-api/apiDescriptions/account/getCustomerId Use this Node.js snippet to fetch your customer ID. Ensure you have the 'got' library installed. Replace 'your_token_here' with your actual API token. ```javascript const got = require('got'); const url = 'https://api.ppd.iopole.fr/v1/config/customer/id'; const token = 'your_token_here'; (async () => { try { const response = await got(url, { method: 'GET', headers: { accept: 'application/json', Authorization: `Bearer ${token}`, customer-id: '0df69e39-4988-48e0-8bd6-3ca5463a7118', 'Content-Type': 'application/json', }, responseType: 'json', }); console.log(response.body); } catch (error) { console.error('Error:', error.message); } })(); ``` -------------------------------- ### Example Error Response Source: https://docs.ppd.iopole.fr/docs/iopole-api/search This is an example of a JSON response received when a query fails due to exceeding complexity limits or other syntax errors. It includes a status code and a descriptive message. ```json { "status": 400, "message": "Query has exceeded the maximum allowed depth" } ``` -------------------------------- ### Get Customer ID with Python Source: https://docs.ppd.iopole.fr/docs/iopole-api/apiDescriptions/account/getCustomerId This Python script uses the 'requests' library to get your customer ID. Replace 'your_token_here' with your API token. ```python import requests import json url = "https://api.ppd.iopole.fr/v1/config/customer/id" token = "your_token_here" headers = { "accept": "application/json", "Authorization": f"Bearer {token}", "customer-id": "0df69e39-4988-48e0-8bd6-3ca5463a7118", "Content-Type": "application/json" } response = requests.get(url, headers=headers) print(response.text) ``` -------------------------------- ### Get Customer ID with cURL Source: https://docs.ppd.iopole.fr/docs/iopole-api/apiDescriptions/account/getCustomerId This cURL command fetches your customer ID. Replace ${TOKEN} with your actual API token. ```bash curl -X GET \ 'https://api.ppd.iopole.fr/v1/config/customer/id' \ -H 'accept: application/json' \ -H 'Authorization: Bearer ${TOKEN}' \ -H 'customer-id: 0df69e39-4988-48e0-8bd6-3ca5463a7118' \ -H 'Content-Type: application/json' \ ``` -------------------------------- ### GET /websites/ppd_iopole_fr/businessEntities Source: https://docs.ppd.iopole.fr/docs/iopole-api/apiDescriptions/operatorBusinessEntity/directory/searchBusinessEntityById Retrieve a list of business entities matching the given criteria. ```APIDOC ## GET /websites/ppd_iopole_fr/businessEntities ### Description Retrieve a list of business entities matching the given criteria. ### Method GET ### Endpoint /websites/ppd_iopole_fr/businessEntities ### Query Parameters #### Optional Query Parameters - **name** (string) - Filter by business entity name. - **country** (string) - Filter by business entity country. - **type** (string) - Filter by business entity type. - **scope** (string) - Filter by business entity scope. ### Response #### Success Response (200) - **businessEntityId** (string) - Unique identifier for the business entity. - **name** (string) - Name of the business entity. - **country** (enum) - Country of the business entity. - **type** (enum) - The type of the business entity. - **scope** (enum) - Scope of the office or legal unit business entity. - **identifierScheme** (string) - The EAS code (Endpoint Address Scheme) identifies the type of identifier used for parties in electronic invoicing. - **identifierValue** (string) - The value of the electronic address. - **postalAddress** (object) - Postal address details. - **operatorRelation** (object) - Operator relation details. - **identifiers** (array) - List of business entity identifiers. #### Response Example (200) ```json { "businessEntityId": "01944583-ae33-7285-b62d-91737a7dcf56", "name": "HELIO PROJETS", "type": "LEGAL_UNIT", "scope": "PRIVATE_TAX_PAYER", "country": "FR", "identifierScheme": "0002", "identifierValue": "007350101", "countryIdentifier": { "siren": "007350101", "siret": "007350101" }, "identifiers": [ { "businessEntityIdentifierId": "01944583-ae40-770c-bd8c-7f7f801a18b0", "type": "LEGAL_IDENTIFIER", "scheme": "0002", "value": "007350101" } ] } ``` #### Error Responses - **400 Bad Request**: Validation - Request validation failure. - **401 Unauthorized**: Authentication is required and has failed or has not yet been provided. - **403 Forbidden**: The server understood the request, but it refuses to authorize it. - **404 Not Found**: Business entity not found for the given ID. ``` -------------------------------- ### Obtain OAuth2 Token (.NET) Source: https://docs.ppd.iopole.fr/docs/iopole-api/authentication This C# example demonstrates how to obtain an OAuth2 access token using HttpClient. It sends a POST request with form-urlencoded data. The token obtained is valid for 1 hour. ```csharp using System; using System.Net.Http; using System.Net.Http.Headers; using System.Threading.Tasks; using Newtonsoft.Json.Linq; class Program { static async Task Main(string[] args) { string url = "https://auth.ppd.iopole.fr/realms/iopole/protocol/openid-connect/token"; var payload = new FormUrlEncodedContent(new[] { new KeyValuePair("grant_type", "client_credentials"), new KeyValuePair("client_id", "clientId"), new KeyValuePair("client_secret", "clientSecret") }); using (HttpClient client = new HttpClient()) { client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/x-www-form-urlencoded")); HttpResponseMessage response = await client.PostAsync(url, payload); if (response.IsSuccessStatusCode) { string responseString = await response.Content.ReadAsStringAsync(); JObject jsonResponse = JObject.Parse(responseString); string token = jsonResponse["access_token"].ToString(); Console.WriteLine(token); } else { Console.WriteLine("Error: " + response.StatusCode); } } } } ``` -------------------------------- ### Obtain OAuth2 Token (JavaScript) Source: https://docs.ppd.iopole.fr/docs/iopole-api/authentication Use this JavaScript snippet with the 'got' library to request an OAuth2 access token. Ensure you have 'got' installed. The token expires after 1 hour. ```javascript const got = require('got'); const token = await got.post('https://auth.ppd.iopole.fr/realms/iopole/protocol/openid-connect/token', { form: { grant_type: 'client_credentials', client_id: 'clientId', client_secret: 'clientSecret' }, headers: { 'Content-type': 'application/x-www-form-urlencoded' }).json() ``` -------------------------------- ### Wildcard Search: Name Starts With Source: https://docs.ppd.iopole.fr/docs/iopole-api/search Use this syntax to find entries where the 'name' field begins with a specific string. The asterisk acts as a wildcard. ```lucene name:val* ``` -------------------------------- ### GET /v1/directory/international Source: https://docs.ppd.iopole.fr/docs/iopole-api/apiDescriptions/directory/directoryObject Retrieves a list of directory entries for international companies. ```APIDOC ## GET /v1/directory/international ### Description Retrieves a list of directory entries for international companies. ### Method GET ### Endpoint /v1/directory/international ### Parameters #### Query Parameters - **businessEntityId** (string) - Optional - The unique identifier for the business entity. - **name** (string) - Optional - The name of the business entity. - **type** (enum) - Optional - The type of the business entity. - **scope** (enum) - Optional - The scope of the business entity. - **siren** (string) - Optional - The SIREN number, 9 digits. - **siret** (string) - Optional - The SIRET number, 14 digits. - **postalAddress** (object) - Optional - The postal address of the business entity. - **legalUnit** (object) - Optional - The legal unit details. - **identifiers** (array) - Optional - A list of business entity identifiers. - **chorusPro** (object) - Optional - Chorus Pro information. ### Response #### Success Response (200) - **data** (array) - A list of directory entry objects. - **meta** (object) - Metadata about the response, including offset, limit, and count. #### Response Example ```json { "data": [ { "businessEntityId": "0194cbfd-5d5d-7388-bb3c-3e2df476eca9", "name": "HELIO PROJETS", "type": "LEGAL_UNIT", "scope": "PRIVATE_TAX_PAYER", "country": "FR", "identifierScheme": "0002", "identifierValue": "007350101", "countryIdentifier": { "siren": "007350101" }, "identifiers": [ { "businessEntityIdentifierId": "0194cbfd-5d61-774e-9c9f-810ccf54b156", "type": "LEGAL_IDENTIFIER", "scheme": "0002", "value": "007350101", "networkRegistered": [ { "directoryId": "0194cc00-9331-7057-a32e-69111f02fbe5", "networkId": "b00d52d5-40b8-4d71-83f1-1709cf47e812", "directoryAddress": "0225:007350101", "networkIdentifier": "DOMESTIC_FR", "validFrom": "2024-01-01" } ] } ] } ], "meta": { "offset": 0, "limit": 50, "count": 1 } } ``` ``` -------------------------------- ### GET /v1/directory/french Source: https://docs.ppd.iopole.fr/docs/iopole-api/apiDescriptions/directory/directoryObject Retrieves a list of directory entries for French companies. ```APIDOC ## GET /v1/directory/french ### Description Retrieves a list of directory entries for French companies. ### Method GET ### Endpoint /v1/directory/french ### Parameters #### Query Parameters - **businessEntityId** (string) - Optional - The unique identifier for the business entity. - **name** (string) - Optional - The name of the business entity. - **type** (enum) - Optional - The type of the business entity. - **scope** (enum) - Optional - The scope of the business entity. - **siren** (string) - Optional - The SIREN number, 9 digits. - **siret** (string) - Optional - The SIRET number, 14 digits. - **postalAddress** (object) - Optional - The postal address of the business entity. - **legalUnit** (object) - Optional - The legal unit details. - **identifiers** (array) - Optional - A list of business entity identifiers. - **chorusPro** (object) - Optional - Chorus Pro information. ### Response #### Success Response (200) - **data** (array) - A list of directory entry objects. - **meta** (object) - Metadata about the response, including offset, limit, and count. #### Response Example ```json { "data": [ { "businessEntityId": "0194cbfd-5d5d-7388-bb3c-3e2df476eca9", "name": "HELIO PROJETS", "type": "LEGAL_UNIT", "scope": "PRIVATE_TAX_PAYER", "country": "FR", "identifierScheme": "0002", "identifierValue": "007350101", "countryIdentifier": { "siren": "007350101" }, "identifiers": [ { "businessEntityIdentifierId": "0194cbfd-5d61-774e-9c9f-810ccf54b156", "type": "LEGAL_IDENTIFIER", "scheme": "0002", "value": "007350101", "networkRegistered": [ { "directoryId": "0194cc00-9331-7057-a32e-69111f02fbe5", "networkId": "b00d52d5-40b8-4d71-83f1-1709cf47e812", "directoryAddress": "0225:007350101", "networkIdentifier": "DOMESTIC_FR", "validFrom": "2024-01-01" } ] } ] } ], "meta": { "offset": 0, "limit": 50, "count": 1 } } ``` ``` -------------------------------- ### Search API - Error Handling Source: https://docs.ppd.iopole.fr/docs/iopole-api/search Information on common error scenarios and example error responses for the Search API. ```APIDOC ## Error Handling The API provides detailed error messages to help you troubleshoot query issues. Common error scenarios include: - **Syntax Error**: Invalid query syntax results in a 400 Bad Request error. - **Field Validation Error**: Referencing an invalid field or using an incorrect data type results in a 400 Bad Request error. - **Complexity Error**: Queries exceeding the maximum allowed complexity result in a 400 Bad Request error. ### Example Error Response ```json { "status": 400, "message": "Query has exceeded the maximum allowed depth" } ``` ``` -------------------------------- ### Get Customer ID with Java Source: https://docs.ppd.iopole.fr/docs/iopole-api/apiDescriptions/account/getCustomerId This Java code snippet shows how to retrieve your customer ID using the built-in HttpClient. Remember to substitute 'your_token_here' with your API token. ```java import java.net.URI; import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; import java.net.http.HttpRequest.BodyPublishers; public class ApiExample { public static void main(String[] args) throws Exception { String url = "https://api.ppd.iopole.fr/v1/config/customer/id"; String token = "your_token_here"; HttpClient client = HttpClient.newHttpClient(); HttpRequest request = HttpRequest.newBuilder() .uri(URI.create(url)) .header("accept", "application/json") .header("customer-id", "0df69e39-4988-48e0-8bd6-3ca5463a7118") .header("Authorization", "Bearer " + token) .GET() .build(); HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofString()); System.out.println(response.body()); } } ``` -------------------------------- ### GET /v1/directory/international/check/scheme/{scheme}/value/{value} Source: https://docs.ppd.iopole.fr/docs/iopole-api/apiDescriptions/directory/directoryObject Checks the validity of a company identifier against a specific scheme and value. ```APIDOC ## GET /v1/directory/international/check/scheme/{scheme}/value/{value} ### Description Checks the validity of a company identifier against a specific scheme and value. ### Method GET ### Endpoint /v1/directory/international/check/scheme/{scheme}/value/{value} ### Parameters #### Path Parameters - **scheme** (string) - Required - The identifier scheme to check against. - **value** (string) - Required - The identifier value to check. #### Query Parameters - **businessEntityId** (string) - Optional - The unique identifier for the business entity. - **name** (string) - Optional - The name of the business entity. - **type** (enum) - Optional - The type of the business entity. - **scope** (enum) - Optional - The scope of the business entity. - **siren** (string) - Optional - The SIREN number, 9 digits. - **siret** (string) - Optional - The SIRET number, 14 digits. - **postalAddress** (object) - Optional - The postal address of the business entity. - **legalUnit** (object) - Optional - The legal unit details. - **identifiers** (array) - Optional - A list of business entity identifiers. - **chorusPro** (object) - Optional - Chorus Pro information. ### Response #### Success Response (200) - **data** (array) - A list of directory entry objects matching the scheme and value. - **meta** (object) - Metadata about the response, including offset, limit, and count. #### Response Example ```json { "data": [ { "businessEntityId": "0194cbfd-5d5d-7388-bb3c-3e2df476eca9", "name": "HELIO PROJETS", "type": "LEGAL_UNIT", "scope": "PRIVATE_TAX_PAYER", "country": "FR", "identifierScheme": "0002", "identifierValue": "007350101", "countryIdentifier": { "siren": "007350101" }, "identifiers": [ { "businessEntityIdentifierId": "0194cbfd-5d61-774e-9c9f-810ccf54b156", "type": "LEGAL_IDENTIFIER", "scheme": "0002", "value": "007350101", "networkRegistered": [ { "directoryId": "0194cc00-9331-7057-a32e-69111f02fbe5", "networkId": "b00d52d5-40b8-4d71-83f1-1709cf47e812", "directoryAddress": "0225:007350101", "networkIdentifier": "DOMESTIC_FR", "validFrom": "2024-01-01" } ] } ] } ], "meta": { "offset": 0, "limit": 50, "count": 1 } } ``` ``` -------------------------------- ### Retrieve Business Entity - JSON Response Source: https://docs.ppd.iopole.fr/docs/iopole-api/apiDescriptions/operatorBusinessEntity/directory/searchBusinessEntityById Example of a successful JSON response when retrieving a business entity. This structure includes identifiers and address details. ```json { "businessEntityId": "01944583-ae33-7285-b62d-91737a7dcf56", "name": "HELIO PROJETS", "type": "LEGAL_UNIT", "scope": "PRIVATE_TAX_PAYER", "country": "FR", "identifierScheme": "0002", "identifierValue": "007350101", "countryIdentifier": { "siren": "007350101", "siret": "007350101" }, "identifiers": [ { "businessEntityIdentifierId": "01944583-ae40-770c-bd8c-7f7f801a18b0", "type": "LEGAL_IDENTIFIER", "scheme": "0002", "value": "007350101" } ] } ``` -------------------------------- ### Directory Object JSON Example Source: https://docs.ppd.iopole.fr/docs/iopole-api/apiDescriptions/directory/directoryObject This JSON structure represents a directory entry, including identifiers, addresses, and legal unit information. It is returned by directory API endpoints. ```json { "data": [ { "businessEntityId": "0194cbfd-5d5d-7388-bb3c-3e2df476eca9", "name": "HELIO PROJETS", "type": "LEGAL_UNIT", "scope": "PRIVATE_TAX_PAYER", "country": "FR", "identifierScheme": "0002", "identifierValue": "007350101", "countryIdentifier": { "siren": "007350101" }, "identifiers": [ { "businessEntityIdentifierId": "0194cbfd-5d61-774e-9c9f-810ccf54b156", "type": "LEGAL_IDENTIFIER", "scheme": "0002", "value": "007350101", "networkRegistered": [ { "directoryId": "0194cc00-9331-7057-a32e-69111f02fbe5", "networkId": "b00d52d5-40b8-4d71-83f1-1709cf47e812", "directoryAddress": "0225:007350101", "networkIdentifier": "DOMESTIC_FR", "validFrom": "2024-01-01" } ] } ] }, { "businessEntityId": "0194cbfd-7042-7046-8bab-5f8ae49a0628", "name": "HELIANTHE", "type": "LEGAL_UNIT", "scope": "PRIVATE_TAX_PAYER", "country": "FR", "identifierScheme": "0002", "identifierValue": "351881800", "countryIdentifier": { "siren": "351881800" }, "identifiers": [ { "businessEntityIdentifierId": "0194cbfd-7043-758a-b9da-bb3a84897d43", "type": "LEGAL_IDENTIFIER", "scheme": "0002", "value": "351881800", "networkRegistered": [ { "directoryId": "0194cc00-a52c-7251-8f30-8eafdf1f66ec", "networkId": "b00d52d5-40b8-4d71-83f1-1709cf47e812", "directoryAddress": "0225:351881800", "networkIdentifier": "DOMESTIC_FR", "validFrom": "2024-01-01" } ] } ] }, { "businessEntityId": "0194cbff-11d7-777e-bbd5-da801296805b", "name": "HELOISE", "type": "OFFICE", "scope": "PRIMARY", "country": "FR", "identifierScheme": "0009", "identifierValue": "43786239400024", "countryIdentifier": { "siren": "437862394", "siret": "43786239400024" }, "postalAddress": { "city": "MONTPELLIER", "postalCode": "34000", "addressLine1": "RUE DE GALATA" }, "legalUnit": { "businessEntityId": "0194cbfd-9f53-74e3-9907-99c877f7fb0a", "name": "HELOISE" }, "identifiers": [ { "businessEntityIdentifierId": "0194cbff-11d8-753e-b6cf-e1c7d8b0f313", "type": "OFFICE_IDENTIFIER", "scheme": "0009", "value": "43786239400024" } ] } ], "meta": { "offset": 0, "limit": 50, "count": 3 } } ``` -------------------------------- ### Query Example: Date Range Source: https://docs.ppd.iopole.fr/docs/iopole-api/search Searches for entries where 'createdDate' falls between two specified timestamps. It uses greater than and less than operators for the date range. ```lucene createdDate:"2024-01-01 04:05:06" AND createdDate:"2025-01-01 04:05:06" ``` -------------------------------- ### Get Customer ID with PHP Source: https://docs.ppd.iopole.fr/docs/iopole-api/apiDescriptions/account/getCustomerId This PHP code retrieves your customer ID using cURL. Remember to replace 'your_token_here' with your valid API token. ```php $url, CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => $headers, CURLOPT_CUSTOMREQUEST => 'GET', ]); $response = curl_exec($curl); $err = curl_error($curl); curl_close($curl); if ($err) { echo "cURL Error #" . $err; } else { echo $response; } ?> ``` -------------------------------- ### GET /v1/config/customer/id Source: https://docs.ppd.iopole.fr/docs/iopole-api/apiDescriptions/account/getCustomerId This endpoint allows you to retrieve your unique customer identifier (ID). This ID must be included in the 'customer-id' header for all subsequent API requests. The endpoint is synchronous and requires the 'user' role. ```APIDOC ## GET /v1/config/customer/id ### Description Retrieves the unique customer identifier (ID) required for all API requests. ### Method GET ### Endpoint /v1/config/customer/id ### Parameters #### Header Parameters - **customer-id** (string) - Required - Your unique customer identifier. Must be included in all requests starting February 1, 2026. - **Authorization** (string) - Required - Bearer token for authentication. - **accept** (string) - Optional - Specifies the desired response format, typically 'application/json'. - **Content-Type** (string) - Optional - Specifies the media type of the resource, typically 'application/json'. ### Request Example ```bash curl -X GET \ 'https://api.ppd.iopole.fr/v1/config/customer/id' \ -H 'accept: application/json' \ -H 'Authorization: Bearer ${TOKEN}' \ -H 'customer-id: 0df69e39-4988-48e0-8bd6-3ca5463a7118' \ -H 'Content-Type: application/json' ``` ### Response #### Success Response (200) - **operator_uuid** (string) - The current operator's unique identifier. #### Response Example ```json { "operator_uuid": "0df69e39-4988-48e0-8bd6-3ca5463a7118" } ``` #### Error Responses - **400 Bad Request**: Request validation failure. - **401 Unauthorized**: Authentication is required and has failed or has not yet been provided. - **403 Forbidden**: The server understood the request, but it refuses to authorize it. ``` -------------------------------- ### Query Example: Siren Ends With OR Source: https://docs.ppd.iopole.fr/docs/iopole-api/search Combines two conditions using the 'OR' operator. It searches for entries where 'buyer.siren' ends with '123456789' or 'seller.siren' ends with '88888'. ```lucene buyer.siren:"*123456789" OR seller.siren:"*88888" ``` -------------------------------- ### Search API - General Information Source: https://docs.ppd.iopole.fr/docs/iopole-api/search The Search API supports filter options on GET endpoints. It allows for complex queries using a Lucene-like query syntax. Note: Beginning February 1, 2026, all API requests must include the 'customer-id' header. ```APIDOC ## Search API ### Description Our search API allows you to perform complex queries on our dataset using a Lucene-like query syntax. Some of our `/GET` endpoints support filter options. ### Important Note Beginning February 1, 2026, all API requests must include the `customer-id` header. ``` -------------------------------- ### API General Information Source: https://docs.ppd.iopole.fr/ Overview of the Iopole API architecture, security requirements, and environment endpoints. ```APIDOC ## General API Information ### Description Iopole APIs follow REST architecture and prioritize an asynchronous model for efficiency. All traffic must be encrypted via HTTPS. ### Requirements - **customer-id** (header) - Required (Effective Feb 1, 2026) - **Encryption** - TLS (HTTPS) required for all requests ### Environments - **QA Environment**: https://api.ppd.iopole.fr - **Live Environment**: https://api.iopole.com ``` -------------------------------- ### Asynchronous Pattern Source: https://docs.ppd.iopole.fr/ Explanation of the asynchronous request handling and status tracking. ```APIDOC ## Asynchronous Requests ### Description Endpoints that modify resource states are typically asynchronous. Successful requests return a GUID used to track the status of the operation. ### Response - **guid** (string) - Unique identifier returned upon successful initiation of an asynchronous process. ``` -------------------------------- ### Search API - Supported Query Syntax Source: https://docs.ppd.iopole.fr/docs/iopole-api/search Details on the supported query syntax, including logical expressions, wildcard searches, range expressions, and unary operators. ```APIDOC ## Supported Query Syntax ### Logical Expressions Logical expressions allow you to combine multiple conditions using logical operators. Logical expressions must be in uppercase. - **AND**: Combine conditions that must all be true. - **OR**: Combine conditions where at least one must be true. - **:** or **:=**: Specify that the field must exactly match the given value. `:=` must be used for integer or boolean types. - **:>**: Specify that the field must be greater than the given value. - **:>=**: Specify that the field must be greater than or equal to the given value. - **:<**: Specify that the field must be less than the given value. - **:<=**: Specify that the field must be less than or equal to the given value. Example: `field1:value1 AND field2:>value2` ### Wildcard Searches Wildcard searches enable pattern matching within your queries. - To find values starting with a string: `name:val*` - To find values containing a string: `name:"*val48*"` ### Range Expressions Range expressions allow you to search for values within a specific range. - Inclusive range: `amount:[10 TO 20]` (between 10 and 20 included) - Exclusive range: `amount:{10 TO 20}` (between 10 and 20 excluded) ### Unary Operators Unary operators are used to negate conditions. - **NOT**: Exclude results that match the condition. - **-**: Exclude results that match the condition. Example: `-amount:[10 TO 20]` (amount is NOT between 10 and 20) Example: `name:- "myName"` (name is NOT equal to "myName") For complex cases with parentheses, the keyword `NOT` must be used. Example: `name:"myName" OR NOT (amount:=100 AND name:"myOtherName")` ``` -------------------------------- ### Rate Limiting Source: https://docs.ppd.iopole.fr/ Details regarding API usage limits and protection mechanisms. ```APIDOC ## Rate Limiting ### Description APIs are protected by rate limits to prevent abuse and DDoS attacks. ### Current Limits - **TCP-level limit**: 3,600 requests per minute per source IP. - **Behavior**: Requests exceeding this limit are rejected. ``` -------------------------------- ### Complex Logical Expression with Unary Operator Source: https://docs.ppd.iopole.fr/docs/iopole-api/search Demonstrates a complex query combining direct matches, negated conditions, and logical operators. Parentheses are used for grouping, and 'NOT' must be used for negation within complex expressions. ```lucene name:"myName" OR NOT (amount:=100 AND name:"myOtherName") ``` -------------------------------- ### Range Expression: Amount Included Source: https://docs.ppd.iopole.fr/docs/iopole-api/search Use this syntax to find entries where the 'amount' field falls within a specified range, inclusive of the boundary values. The 'TO' keyword denotes the range. ```lucene amount:[10 TO 20] ``` -------------------------------- ### Wildcard Search: Name Contains Source: https://docs.ppd.iopole.fr/docs/iopole-api/search Use this syntax to find entries where the 'name' field contains a specific substring. The asterisks before and after the value indicate a search within the entire string. ```lucene name:"*val48*" ``` -------------------------------- ### Unary Operator: Name Not Equals Source: https://docs.ppd.iopole.fr/docs/iopole-api/search Use the hyphen prefix to exclude results where the 'name' field exactly matches the specified string. This negates a direct equality comparison. ```lucene name:-"myName" ``` -------------------------------- ### Unary Operator: Amount Not In Range Source: https://docs.ppd.iopole.fr/docs/iopole-api/search Use the hyphen prefix to exclude results where the 'amount' field falls within the specified range. This is equivalent to a 'NOT' operation on the range. ```lucene -amount:[10 TO 20] ``` -------------------------------- ### Range Expression: Amount Excluded Source: https://docs.ppd.iopole.fr/docs/iopole-api/search Use this syntax to find entries where the 'amount' field falls within a specified range, exclusive of the boundary values. Curly braces denote an exclusive range. ```lucene amount:{10 TO 20} ``` === COMPLETE CONTENT === This response contains all available snippets from this library. No additional content exists. Do not make further requests.