{"activeVersionTag":"latest","latestAvailableVersionTag":"latest","collection":{"info":{"_postman_id":"09eef4f1-1567-4f26-9931-25669359c75c","name":"Product-API","description":"This documentation describes the PDM Product API. This API allows users to post data to or retrieve data from a single PDM account with an API Token for that account. To create or retrieve an API Token, please log into the PDM account in question or contact our support team.\n\n<u><b>PDM Account Types</b></u>\n\nPDM is a two-sided platform, meaning there are two different account types.\n\n- Brand Accounts: These are generally used by manufacturers.\n    \n- Receiver Accounts: These are generally used by retailers and other recipients of product data.\n    \n\nThe Product API can be used with either account type when authorized. The behavior of the API will be similar but there are some differences which will be called out in the description of each endpoint where relevant.\n\n<u><b>Staging Database:</b></u>\n\nData in a Brand account could be in a state of published or unpublished. Published data is available to approved Receiver accounts. Receiver accounts using this API will only be able to access published data. However, Brand accounts can access unpublished data by using the 'use_staging_databse\" parameter with a value of 1.\n\n<u><b><br>Data Structure:</b></u>\n\nEach product (known in PDM as a Part Number) has data stored in multiple segments, which are groupings of similar product data values.\n\nSome segments can involve a large number of key/value pairs of data (theoretically infinite in some cases). For example, a single part number could have thousands of application records associated with it. Most use cases for retrieving product data via the PDM Product API do not require the majority of this data at any given time. It is therefore recommended that API calls are structured to target the desired data. To do this, use one of the following approaches.\n\n1. Use the \"v1/products/export_builder_plus\" endpoint with an Export Builder Plus Template ID. Export Builder Plus templates are created via the PDM UI and can reference data from any segment. Include a specific brand_id, filter_id, and/or delimited list of desired part_numbers.\n    \n2. Use the \"v1/products/data\" endpoint with a specific brand_id, filter_id, and/or delimited list of desired part_numbers. This will return all populated fields for all segments, ignoring fields with no values.\n    \n3. Use the \"v1/products/segments\" endpoint filtering for a subset of available segments. This will return all fields in the segment, even if values are null. Include a specific brand_id, filter_id, and/or delimited list of desired part_numbers.\n    \n\n<u><b>Filtering for Updated Part Numbers Only:</b></u>  \nPlease consider using the \"updated_since\" or \"staging_updated_since\" parameter which returns all requested data only for part numbers with changes since the indicated timestamp. Alternatively, the \"updated_within\" or \"staging_updated_within\" parameter behaves similarly but allows for a specific lookback period in seconds. The \"updated_since\" and \"updated_within\" paramaters refer to data published to be visible to Receiver accounts and key off of the \"last_synced_at\" timestampe value of a part number. The \"staging_updated_since\" and \"staging_updated_within\" parameters are refer to data in the staging database and key off the \"updated_at\" timestamp value of a part_number.\n\n<u><b>Expanding Application Data:</b></u>  \nWhen using the product/data or products/export_builder_plus endpoint, application data can be expanded to capture information implied by the selected values in the application record using the expand_sub_configs parameter. The most common values used for this parameter are sub_models and/or regions, but any values included in the \"Expand Subconfigs Based on Selection\" menu in the \"Advanced Export\" features in the PDM user interface can be included.\n\n<u><b>Data Import Behavior:</b></u>\n\nThe system by default will process any imported data as a wipe and replace. For most segements, this can be avoided by used the \"update_only\" parameter with a value of 1. This does is not supported for the Digital Assets segment, meaning all digital asset data must be included when using the data is patched to this segment.\n\n<u><b>Structuring API Calls</b></u>\n\nBecause of the wide variety of data in PDM accounts, there is no single ideal structure for calls to the PDM API. We strongly suggest that calls use the limit parameter with a maximum of 100 as a starting point, in conjunction with the page parameter to ensure future calls do not return the same set data or a subset of such. Please note we do not currently enforce usage of these parameters or have specific maximums for any particular endpoint. When writing to the PDM system, please batch data to write whenever possible versus using individual calls. The PDM team is available to assist in any planning and can provide guidance based on the unique profile of the PDM account in question.\n\n<u><b>API Limits</b></u>  \nToday each account is by default limited to calls that extract data for 2X the size of the product catalog within a 24 hour period. Please contact us for more information. In addition, calls requesting more than 15,000 part numbers will not be successful. You can use the limit parameter to request a maximim count of part numbers and the page parameter to request a subsequent set of parts for the same request.","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","isPublicCollection":false,"owner":"9230939","team":552835,"collectionId":"09eef4f1-1567-4f26-9931-25669359c75c","publishedId":"SVzubgv5","public":true,"publicUrl":"https://api-doc.pdm-automotive.com","privateUrl":"https://go.postman.co/documentation/9230939-09eef4f1-1567-4f26-9931-25669359c75c","customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"36A0B3"},"documentationLayout":"classic-double-column","version":"8.10.1","publishDate":"2019-11-05T10:23:31.000Z","activeVersionTag":"latest","documentationTheme":"light","metaTags":{},"logos":{}},"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/d88c9e77e0bbc731bc991dbc44b4e2d148942b4d33cf0abdde5191126f741a97","favicon":"https://res.cloudinary.com/postman/image/upload/v1616362413/team/jttiiwcgfcouhfbda5lk.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-doc.pdm-automotive.com/view/metadata/SVzubgv5"}