{"info":{"_postman_id":"ef6e6112-53a4-4510-a8bc-080a88f180a2","name":"JustFoodForDogs Partner API","description":"<html><head></head><body><p>Use this collection to integrate partner systems with JustFoodForDogs customer, pet, veterinarian, pet-snapshot, and registration-workflow resources.</p>\n<h2 id=\"before-you-begin\">Before you begin</h2>\n<p>This collection is distributed with two Postman environments:</p>\n<ul>\n<li><p><strong>Partner API Sandbox</strong> — use for development, integration testing, and validation.</p>\n</li>\n<li><p><strong>Partner API Production</strong> — use only for live partner traffic after approval.</p>\n</li>\n</ul>\n<p>Select the appropriate environment in Postman before sending any request. Each environment defines the following variables:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Environment variable</th>\n<th>Purpose</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>baseUrl</code></td>\n<td>Base URL for the selected API environment.</td>\n</tr>\n<tr>\n<td><code>clientId</code></td>\n<td>Identifies your API client.</td>\n</tr>\n<tr>\n<td><code>clientSecret</code></td>\n<td>Authenticates your API client. Treat this value as confidential.</td>\n</tr>\n<tr>\n<td><code>partnerId</code></td>\n<td>Identifies your partner account and scopes API operations.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Obtain environment-specific values from your JustFoodForDogs integration contact. Do not commit credentials to source control or expose them in exported collections, screenshots, logs, or support messages.</p>\n<h2 id=\"authentication-and-request-tracing\">Authentication and request tracing</h2>\n<p>The collection-level pre-request script reads credentials from the selected environment and adds these headers automatically:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Header</th>\n<th>Environment variable</th>\n<th>Purpose</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>client_id</code></td>\n<td><code>clientId</code></td>\n<td>Identifies the API client.</td>\n</tr>\n<tr>\n<td><code>client_secret</code></td>\n<td><code>clientSecret</code></td>\n<td>Authenticates the API client.</td>\n</tr>\n<tr>\n<td><code>X-Partner-ID</code></td>\n<td><code>partnerId</code></td>\n<td>Scopes operations to your partner account.</td>\n</tr>\n<tr>\n<td><code>X-Request-ID</code></td>\n<td>Generated automatically</td>\n<td>Unique UUID used to trace each request.</td>\n</tr>\n</tbody>\n</table>\n</div><p>All request URLs use <code>{{baseUrl}}</code> from the active environment.</p>\n<h2 id=\"recommended-setup\">Recommended setup</h2>\n<ol>\n<li><p>Import or fork the collection and both supplied environments into a private workspace.</p>\n</li>\n<li><p>Select <strong>Partner API Sandbox</strong> in Postman's environment selector.</p>\n</li>\n<li><p>Populate <code>baseUrl</code>, <code>clientId</code>, <code>clientSecret</code>, and <code>partnerId</code> with the sandbox values supplied to your organization.</p>\n</li>\n<li><p>Send a non-destructive request or an agreed test workflow to validate connectivity.</p>\n</li>\n<li><p>Switch to <strong>Partner API Production</strong> only after sandbox validation and production approval.</p>\n</li>\n<li><p>Populate the Production environment with production-specific values; do not reuse sandbox credentials or URLs.</p>\n</li>\n<li><p>Confirm the active environment before every write or delete operation.</p>\n</li>\n</ol>\n<h2 id=\"resource-model\">Resource model</h2>\n<ul>\n<li><p>A partner owns customer records through its partner scope.</p>\n</li>\n<li><p>A customer can have one or more pets.</p>\n</li>\n<li><p>A pet can have multiple point-in-time profile and nutrition snapshots.</p>\n</li>\n<li><p>Veterinarian records can be associated with customers and pets.</p>\n</li>\n<li><p><code>externalId</code> is the stable customer identifier supplied by your system and is the customer identifier used by all customer-scoped endpoints.</p>\n</li>\n<li><p>Customers are not addressed by a separate JustFoodForDogs customer ID.</p>\n</li>\n<li><p><code>petId</code> is the JustFoodForDogs pet identifier returned by pet creation and listing operations.</p>\n</li>\n</ul>\n<h2 id=\"typical-workflow\">Typical workflow</h2>\n<p>For a single-call onboarding flow, use <strong>Workflows → Pet Registration</strong> to create or match the customer, always create a new pet, and optionally record an initial snapshot.</p>\n<p>For resource-by-resource integration:</p>\n<ol>\n<li><p>Create, read, or update a customer using the partner-owned <code>externalId</code>.</p>\n</li>\n<li><p>Create or list pets using that customer's <code>externalId</code>.</p>\n</li>\n<li><p>Read or update a pet using its <code>petId</code>.</p>\n</li>\n<li><p>Create pet snapshots as profile or feeding information changes.</p>\n</li>\n<li><p>List snapshots to retrieve the pet's history.</p>\n</li>\n<li><p>Create or update veterinarian records and associate them with the appropriate customer or pets.</p>\n</li>\n</ol>\n<h2 id=\"data-format-and-request-safety\">Data format and request safety</h2>\n<ul>\n<li><p>Request bodies are JSON.</p>\n</li>\n<li><p>Replace all example personal data before sending a request.</p>\n</li>\n<li><p>Keep <code>externalId</code> stable and unique within your partner account.</p>\n</li>\n<li><p>External customer IDs must be URL-safe because they are used in request paths.</p>\n</li>\n<li><p>The collection generates a new <code>X-Request-ID</code> for every send. Retain it when contacting support.</p>\n</li>\n<li><p>Confirm the active environment and resource IDs before update or delete operations.</p>\n</li>\n<li><p>Never place sandbox credentials in the Production environment or production credentials in the Sandbox environment.</p>\n</li>\n</ul>\n<h2 id=\"responses-and-errors\">Responses and errors</h2>\n<p>This collection does not yet include saved response examples or a formal error schema. Inspect each live response's HTTP status and JSON body. When escalating an issue, include the request method and path, timestamp, selected environment, HTTP status, and <code>X-Request-ID</code>; never include <code>clientSecret</code>.</p>\n<h2 id=\"support\">Support</h2>\n<p>Use the onboarding or support channel provided by your JustFoodForDogs integration contact.</p>\n</body></html>","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[],"owner":"30939530","collectionId":"ef6e6112-53a4-4510-a8bc-080a88f180a2","publishedId":"2sBY4VLxcr","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"},"publishDate":"2026-10-05T21:31:13.000Z"},"item":[{"name":"Customers","item":[{"name":"Create a customer","id":"09cf3426-6044-4c53-a2a1-da7bbeac8307","request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"externalId\": \"1234abcd\",\n    \"firstName\": \"Jane\",\n    \"lastName\": \"Doe\",\n    \"address1\": \"123 Main St\",\n    \"address2\": \"Apt 3C\",\n    \"city\": \"New York\",\n    \"stateCode\": \"NY\",\n    \"postalCode\": \"10001\",\n    \"countryCode\": \"US\",\n    \"emailPrimary\": \"janedoe@example.com\",\n    \"emailSecondary\": \"janedoe2@example.com\",\n    \"phoneMobile\": \"000-000-0000\",\n    \"phoneHome\": \"000-000-0000\"\n}","options":{"raw":{"language":"json"}}},"url":"{{baseUrl}}/v1/customers","description":"<p>Creates a partner-scoped customer using the stable <code>externalId</code> supplied by your system. Reusing an existing <code>externalId</code> updates the matching customer rather than creating a duplicate.</p>\n","urlObject":{"path":["v1","customers"],"host":["{{baseUrl}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"09cf3426-6044-4c53-a2a1-da7bbeac8307"},{"name":"Read a Customer","id":"d4308bcd-422e-4385-8975-077ec73110cf","request":{"method":"GET","header":[],"url":"{{baseUrl}}/v1/customers/:externalCustomerId","description":"<p>Retrieves a customer by the partner-owned external customer identifier.</p>\n<p><strong>Path parameter</strong></p>\n<ul>\n<li><code>externalCustomerId</code> — Stable customer identifier supplied by your system. It must be URL-safe.</li>\n</ul>\n","urlObject":{"path":["v1","customers",":externalCustomerId"],"host":["{{baseUrl}}"],"query":[],"variable":[{"type":"any","key":"externalCustomerId"}]}},"response":[],"_postman_id":"d4308bcd-422e-4385-8975-077ec73110cf"},{"name":"Update a Customer","id":"8b8f628c-4bdd-433e-ab51-063861de28c8","request":{"method":"PATCH","header":[],"body":{"mode":"raw","raw":"{\n    \"externalId\": \"1234abcd\",\n    \"firstName\": \"Jane\",\n    \"lastName\": \"Doe\",\n    \"address1\": \"123 Main St\",\n    \"address2\": \"Apt 3C\",\n    \"city\": \"New York\",\n    \"stateCode\": \"NY\",\n    \"postalCode\": \"10001\",\n    \"countryCode\": \"US\",\n    \"emailPrimary\": \"janedoe@example.com\",\n    \"emailSecondary\": \"janedoe2@example.com\",\n    \"phoneMobile\": \"000-000-0000\",\n    \"phoneHome\": \"000-000-0000\"\n}","options":{"raw":{"language":"json"}}},"url":"{{baseUrl}}/v1/customers/:externalCustomerId","description":"<p>Updates an existing customer identified by the partner-owned external customer identifier. Include only the fields that should change.</p>\n<p><strong>Path parameter</strong></p>\n<ul>\n<li><code>externalCustomerId</code> — Stable customer identifier supplied by your system. It must be URL-safe.</li>\n</ul>\n","urlObject":{"path":["v1","customers",":externalCustomerId"],"host":["{{baseUrl}}"],"query":[],"variable":[{"type":"any","key":"externalCustomerId"}]}},"response":[],"_postman_id":"8b8f628c-4bdd-433e-ab51-063861de28c8"},{"name":"List Customers","id":"8a8c3956-07c2-405d-9360-d04cf84d97eb","request":{"method":"GET","header":[],"url":"{{baseUrl}}/v1/customers?limit=50&offset=0","description":"<p>Lists customers in the authenticated partner scope.</p>\n<p><strong>Query parameters</strong></p>\n<ul>\n<li><code>limit</code> — Maximum number of customers to return. Defaults to <code>50</code>.</li>\n<li><code>offset</code> — Number of customers to skip before returning results. Defaults to <code>0</code>.</li>\n</ul>\n","urlObject":{"path":["v1","customers"],"host":["{{baseUrl}}"],"query":[{"description":{"content":"<p>Maximum number of customers to return. Defaults to 50.</p>\n","type":"text/plain"},"key":"limit","value":"50"},{"description":{"content":"<p>Number of customers to skip before returning results. Defaults to 0.</p>\n","type":"text/plain"},"key":"offset","value":"0"}],"variable":[]}},"response":[],"_postman_id":"8a8c3956-07c2-405d-9360-d04cf84d97eb"}],"id":"0dc0d727-a36f-4a1c-bb9e-e4b1f28d5686","description":"<p>Create, retrieve, update, and list partner-scoped customers. Customers are fully identified by the stable <code>externalId</code> owned by your system; no separate internal customer ID is used by customer endpoints.</p>\n","_postman_id":"0dc0d727-a36f-4a1c-bb9e-e4b1f28d5686"},{"name":"Pets","item":[{"name":"Create a Pet","id":"b69e570c-312e-4799-9f22-797f73beb484","request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"name\": \"Stella\",\n    \"gender\": \"female\",\n    \"birthMonth\": 8,\n    \"birthYear\": 2018,\n    \"breed\": \"Mixed\"\n}","options":{"raw":{"language":"json"}}},"url":"{{baseUrl}}/v1/customers/:externalCustomerId/pets","description":"<p>Creates a pet for a customer identified by the partner-owned external customer identifier.</p>\n<p><strong>Path parameter</strong></p>\n<ul>\n<li><code>externalCustomerId</code> — Stable customer identifier supplied by your system. It must be URL-safe.</li>\n</ul>\n","urlObject":{"path":["v1","customers",":externalCustomerId","pets"],"host":["{{baseUrl}}"],"query":[],"variable":[{"type":"any","key":"externalCustomerId"}]}},"response":[],"_postman_id":"b69e570c-312e-4799-9f22-797f73beb484"},{"name":"Read a Pet","id":"de35a99b-d9b2-4fad-81dc-9bf74ab9125c","request":{"method":"GET","header":[],"url":"{{baseUrl}}/v1/pets/:petId","description":"<p>Retrieves a pet by its JustFoodForDogs pet identifier.</p>\n<p><strong>Path parameter</strong></p>\n<ul>\n<li><code>petId</code> — JustFoodForDogs pet identifier returned by pet creation or listing operations.</li>\n</ul>\n<p><strong>Optional query parameter</strong></p>\n<ul>\n<li><code>include</code> — Requests additional related data alongside the pet. Supported value: <code>latestSnapshot</code>, which embeds the pet's most recent profile and nutrition snapshot. Omit to return the pet record alone.</li>\n</ul>\n","urlObject":{"path":["v1","pets",":petId"],"host":["{{baseUrl}}"],"query":[{"disabled":true,"description":{"content":"<p>Optional. Requests additional related data alongside the pet. Supported value: <code>latestSnapshot</code> — embeds the pet's most recent profile and nutrition snapshot. Omit to return the pet record alone.</p>\n","type":"text/plain"},"key":"include","value":"latestSnapshot"}],"variable":[{"type":"any","value":"","key":"petId"}]}},"response":[],"_postman_id":"de35a99b-d9b2-4fad-81dc-9bf74ab9125c"},{"name":"Update a pet","id":"519a06f5-3547-4a3d-bc91-a74c30f5b31f","request":{"method":"PATCH","header":[],"body":{"mode":"raw","raw":"{\n    \"name\": \"Stella\",\n    \"gender\": \"female\",\n    \"birthMonth\": 8,\n    \"birthYear\": 2018,\n    \"breed\": \"Mixed\"\n}","options":{"raw":{"language":"json"}}},"url":"{{baseUrl}}/v1/pets/:petId","description":"<p>Updates an existing pet. Include only the fields that should change.</p>\n<p><strong>Path parameter</strong></p>\n<ul>\n<li><code>petId</code> — JustFoodForDogs pet identifier returned by pet creation or listing operations.</li>\n</ul>\n","urlObject":{"path":["v1","pets",":petId"],"host":["{{baseUrl}}"],"query":[],"variable":[{"type":"any","key":"petId"}]}},"response":[],"_postman_id":"519a06f5-3547-4a3d-bc91-a74c30f5b31f"},{"name":"Delete a pet","id":"8a79d043-be73-4ac5-a933-c1934d48b6c6","request":{"method":"DELETE","header":[],"url":"{{baseUrl}}/v1/pets/:petId","description":"<p>Deletes a pet identified by its JustFoodForDogs pet identifier. Confirm the active environment and identifier before sending this request.</p>\n<p><strong>Path parameter</strong></p>\n<ul>\n<li><code>petId</code> — JustFoodForDogs pet identifier returned by pet creation or listing operations.</li>\n</ul>\n","urlObject":{"path":["v1","pets",":petId"],"host":["{{baseUrl}}"],"query":[],"variable":[{"type":"any","key":"petId"}]}},"response":[],"_postman_id":"8a79d043-be73-4ac5-a933-c1934d48b6c6"},{"name":"List a Customer's Pets","id":"f4dba8e2-f65b-4591-a016-fd5f64823156","request":{"method":"GET","header":[],"url":"{{baseUrl}}/v1/customers/:externalCustomerId/pets?limit=50&offset=0","description":"<p>Lists pets belonging to a customer.</p>\n<p><strong>Path parameter</strong></p>\n<ul>\n<li><code>externalCustomerId</code> — Stable customer identifier supplied by your system. It must be URL-safe.</li>\n</ul>\n<p><strong>Query parameters</strong></p>\n<ul>\n<li><p><code>limit</code> — Maximum number of pets to return. Defaults to <code>50</code>.</p>\n</li>\n<li><p><code>offset</code> — Number of pets to skip before returning results. Defaults to <code>0</code>.</p>\n</li>\n<li><p><code>include</code> — Requests additional related data alongside each pet. Supported value: <code>latestSnapshot</code>, which embeds each pet's most recent profile and nutrition snapshot. Omit to return pet records alone.</p>\n</li>\n</ul>\n","urlObject":{"path":["v1","customers",":externalCustomerId","pets"],"host":["{{baseUrl}}"],"query":[{"description":{"content":"<p>Maximum number of pets to return. Defaults to 50.</p>\n","type":"text/plain"},"key":"limit","value":"50"},{"description":{"content":"<p>Number of pets to skip before returning results. Defaults to 0.</p>\n","type":"text/plain"},"key":"offset","value":"0"},{"disabled":true,"description":{"content":"<p>Optional. Requests additional related data alongside each pet. Supported value: <code>latestSnapshot</code> — embeds each pet's most recent profile and nutrition snapshot. Omit to return pet records alone.</p>\n","type":"text/plain"},"key":"include","value":"latestSnapshot"}],"variable":[{"type":"any","value":"","key":"externalCustomerId"}]}},"response":[],"_postman_id":"f4dba8e2-f65b-4591-a016-fd5f64823156"}],"id":"2b0c5d94-4ca6-4d4e-b7f3-4097d48901ab","description":"<p>Create and manage pets belonging to partner-scoped customers. Creating and listing pets uses the customer's partner-owned <code>externalId</code> as <code>externalCustomerId</code>; reading, updating, and deleting an individual pet uses its JustFoodForDogs <code>petId</code>.</p>\n","_postman_id":"2b0c5d94-4ca6-4d4e-b7f3-4097d48901ab"},{"name":"Pet Snapshots","item":[{"name":"Create a Pet Snapshot","id":"ab90c01b-4f6e-46fe-97e1-818559d66328","request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"name\": \"Stella\",\n    \"gender\": \"female\",\n    \"birthMonth\": 6,\n    \"birthYear\": 2009,\n    \"breed\": \"Mixed\",\n    \"sterilized\": true,\n    \"weight\": 18,\n    \"bodyType\": \"ideal\",\n    \"currentlyEats\": \"fresh\",\n    \"healthGoal\": \"maintain weight\",\n    \"allergies\": \"none\",\n    \"treats\": \"dental chews\",\n    \"foodSelection\": \"Beef & Russet Potato\",\n    \"portionSelection\": \"standard\",\n    \"caloriesRequiredPerDay\": 1000\n}","options":{"raw":{"language":"json"}}},"url":"{{baseUrl}}/v1/pets/:petId/snapshots","description":"<p>Creates a point-in-time profile and nutrition snapshot for a pet.</p>\n<p><strong>Path parameter</strong></p>\n<ul>\n<li><code>petId</code> — JustFoodForDogs pet identifier returned by pet creation or listing operations.</li>\n</ul>\n","urlObject":{"path":["v1","pets",":petId","snapshots"],"host":["{{baseUrl}}"],"query":[],"variable":[{"type":"any","key":"petId"}]}},"response":[],"_postman_id":"ab90c01b-4f6e-46fe-97e1-818559d66328"},{"name":"List a Pet's Snapshots","id":"5ffaeffc-369b-4e31-ac24-f3c999393b0e","request":{"method":"GET","header":[],"url":"{{baseUrl}}/v1/pets/:petId/snapshots?limit=50&offset=0","description":"<p>Lists saved profile and nutrition snapshots for a pet. Snapshots are returned newest first; use <code>limit=1&amp;offset=0</code> to retrieve only the latest assessment.</p>\n<p><strong>Path parameter</strong></p>\n<ul>\n<li><code>petId</code> — JustFoodForDogs pet identifier returned by pet creation or listing operations.</li>\n</ul>\n<p><strong>Query parameters</strong></p>\n<ul>\n<li><code>limit</code> — Maximum number of snapshots to return. Defaults to <code>50</code>.</li>\n<li><code>offset</code> — Number of snapshots to skip before returning results. Defaults to <code>0</code>.</li>\n</ul>\n","urlObject":{"path":["v1","pets",":petId","snapshots"],"host":["{{baseUrl}}"],"query":[{"description":{"content":"<p>Maximum number of snapshots to return. Defaults to 50. Use 1 to retrieve only the latest assessment.</p>\n","type":"text/plain"},"key":"limit","value":"50"},{"description":{"content":"<p>Number of snapshots to skip before returning results. Defaults to 0.</p>\n","type":"text/plain"},"key":"offset","value":"0"}],"variable":[{"type":"any","key":"petId"}]}},"response":[],"_postman_id":"5ffaeffc-369b-4e31-ac24-f3c999393b0e"}],"id":"754d13bc-9132-452c-8fb4-56c4fe5ac4c9","description":"<p>Create and list point-in-time pet profile and nutrition snapshots. Snapshots capture attributes such as weight, body type, diet, health goals, food selection, portion selection, and daily calorie requirements. List results are returned newest first.</p>\n","_postman_id":"754d13bc-9132-452c-8fb4-56c4fe5ac4c9"},{"name":"Workflows","item":[{"name":"Pet Registration","id":"2a551f58-4204-4ccd-af15-778e1aa4edab","request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"customer\": {\n        \"externalId\": \"1234abcd\",\n        \"firstName\": \"Jane\",\n        \"lastName\": \"Doe\",\n        \"emailPrimary\": \"janedoe@example.com\",\n        \"phoneMobile\": \"000-000-0000\"\n    },\n    \"pet\": {\n        \"name\": \"Stella\",\n        \"gender\": \"female\",\n        \"birthMonth\": 8,\n        \"birthYear\": 2009,\n        \"breed\": \"Mixed\"\n    },\n    \"snapshot\": {\n        \"sterilized\": true,\n        \"weight\": 18,\n        \"bodyType\": \"Just Right\",\n        \"currentlyEats\": \"Fresh Frozen\",\n        \"healthGoal\": \"Maintain Weight\",\n        \"allergies\": \"None\",\n        \"treats\": \"Some\",\n        \"foodSelection\": \"JustFresh\",\n        \"portionSelection\": \"Standard\",\n        \"caloriesRequiredPerDay\": 1000\n    }\n}","options":{"raw":{"language":"json"}}},"url":"{{baseUrl}}/v1/workflows/pet-registration","description":"<p>Creates or matches a customer, always creates a new pet, and optionally records an initial profile and nutrition snapshot in one partner-scoped request. Use the stable customer <code>externalId</code> supplied by your system. Reusing an <code>externalId</code> can match the existing customer, but it never updates or reuses an existing pet.</p>\n","urlObject":{"path":["v1","workflows","pet-registration"],"host":["{{baseUrl}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"2a551f58-4204-4ccd-af15-778e1aa4edab"}],"id":"3ce80094-7bb1-46ce-a687-ddee148c61dc","description":"<p>Business-level integration workflows that coordinate multiple JustFoodForDogs resources in a single request.</p>\n<p>Use these operations when a partner action spans more than one resource and would otherwise require several individual API calls. For example, <strong>Pet Registration</strong> creates or matches the customer, always creates a new pet, and optionally records an initial profile and nutrition snapshot.</p>\n<p>Workflow requests remain scoped to the authenticated partner. Use stable partner-owned identifiers, send the complete current data expected by each workflow, and retain the generated <code>X-Request-ID</code> for troubleshooting.</p>\n","_postman_id":"3ce80094-7bb1-46ce-a687-ddee148c61dc"},{"name":"Vets","item":[{"name":"Create a Vet","id":"c2dc0f56-8c67-42ff-aa28-71666959c452","request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n  \"vet\": {\n    \"firstName\": \"Johnathan\",\n    \"lastName\": \"Doe\",\n    \"clinicName\": \"Example Animal Hospital\",\n    \"address1\": \"123 Main Street\",\n    \"address2\": \"Suite 100\",\n    \"city\": \"New York\",\n    \"stateCode\": \"NY\",\n    \"postalCode\": \"10001\",\n    \"phone\": \"123-456-7890\",\n    \"email\": \"johnathandoe@example.com\"\n  },\n  \"customerExternalId\": \"1234abcd\",\n  \"petIds\": [\n    \"52a7575f-3e86-4806-b2da-386648373b0b\"\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"{{baseUrl}}/v1/vets/create-vet","description":"<p>Creates a veterinarian record and associates it with a customer and one or more pets in the same request. <code>customerExternalId</code> identifies the partner-owned customer, and each entry in <code>petIds</code> is a JustFoodForDogs pet identifier.</p>\n","urlObject":{"path":["v1","vets","create-vet"],"host":["{{baseUrl}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"c2dc0f56-8c67-42ff-aa28-71666959c452"},{"name":"Read a Vet","id":"bf81344c-e6ae-422f-8bb1-9e8cd2da78c0","request":{"method":"GET","header":[],"url":"{{baseUrl}}/v1/vets/:vetId","description":"<p>Retrieves a veterinarian by its JustFoodForDogs vet identifier.</p>\n<p><strong>Path parameter</strong></p>\n<ul>\n<li><code>vetId</code> — JustFoodForDogs veterinarian identifier returned by vet creation or listing operations.</li>\n</ul>\n","urlObject":{"path":["v1","vets",":vetId"],"host":["{{baseUrl}}"],"query":[],"variable":[{"type":"any","key":"vetId"}]}},"response":[],"_postman_id":"bf81344c-e6ae-422f-8bb1-9e8cd2da78c0"},{"name":"Update a Vet","id":"a16310c7-5191-466f-836d-b6bfcf255396","request":{"method":"PATCH","header":[],"body":{"mode":"raw","raw":"{\n    \"firstName\": \"Johnathan\",\n    \"lastName\": \"Doe\",\n    \"clinicName\": \"Example Animal Hospital\",\n    \"address1\": \"123 Main Street\",\n    \"address2\": \"Suite 100\",\n    \"city\": \"New York\",\n    \"stateCode\": \"NY\",\n    \"postalCode\": \"10001\",\n    \"phone\": \"123-456-7890\",\n    \"email\": \"johnathandoe@example.com\"\n}","options":{"raw":{"language":"json"}}},"url":"{{baseUrl}}/v1/vets/:vetId","description":"<p>Updates an existing veterinarian. Include only the fields that should change.</p>\n<p><strong>Path parameter</strong></p>\n<ul>\n<li><code>vetId</code> — JustFoodForDogs veterinarian identifier returned by vet creation or listing operations.</li>\n</ul>\n","urlObject":{"path":["v1","vets",":vetId"],"host":["{{baseUrl}}"],"query":[],"variable":[{"type":"any","key":"vetId"}]}},"response":[],"_postman_id":"a16310c7-5191-466f-836d-b6bfcf255396"},{"name":"Attach a Vet to a Pet","id":"e771c51e-0ba5-4248-aa94-889e7d296f4a","request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"vetId\": \"d39ef304-42ad-43ad-b83b-b6bf96bf1982\"\n}","options":{"raw":{"language":"json"}}},"url":"{{baseUrl}}/v1/pets/:petId/vets","description":"<p>Associates an existing veterinarian with a pet. Supply the veterinarian identifier in the JSON request body.</p>\n<p><strong>Path parameter</strong></p>\n<ul>\n<li><code>petId</code> — JustFoodForDogs pet identifier returned by pet creation or listing operations.</li>\n</ul>\n","urlObject":{"path":["v1","pets",":petId","vets"],"host":["{{baseUrl}}"],"query":[],"variable":[{"type":"any","key":"petId"}]}},"response":[],"_postman_id":"e771c51e-0ba5-4248-aa94-889e7d296f4a"},{"name":"Detach a Vet from a Pet","id":"df5d4071-35ec-4109-99e7-e4bd38c97998","request":{"method":"DELETE","header":[],"body":{"mode":"raw","raw":"","options":{"raw":{"language":"json"}}},"url":"{{baseUrl}}/v1/pets/:petId/vets/:vetId","description":"<p>Removes the association between a veterinarian and a pet. Both identifiers are supplied in the request path.</p>\n<p><strong>Path parameters</strong></p>\n<ul>\n<li><code>petId</code> — JustFoodForDogs pet identifier returned by pet creation or listing operations.</li>\n<li><code>vetId</code> — JustFoodForDogs veterinarian identifier returned by vet creation or listing operations.</li>\n</ul>\n","urlObject":{"path":["v1","pets",":petId","vets",":vetId"],"host":["{{baseUrl}}"],"query":[],"variable":[{"type":"any","key":"petId"},{"type":"any","key":"vetId"}]}},"response":[],"_postman_id":"df5d4071-35ec-4109-99e7-e4bd38c97998"},{"name":"List a Customer's Vets","id":"f69ddf19-b96f-44b2-b0cc-7f2b65cbdceb","request":{"method":"GET","header":[],"url":"{{baseUrl}}/v1/customers/:externalCustomerId/vets?limit=50&offset=0","description":"<p>Lists veterinarians associated with a customer.</p>\n<p><strong>Path parameter</strong></p>\n<ul>\n<li><code>externalCustomerId</code> — Stable customer identifier supplied by your system. It must be URL-safe.</li>\n</ul>\n<p><strong>Optional query parameters</strong></p>\n<ul>\n<li><code>limit</code> — Maximum number of veterinarians to return. Disabled by default.</li>\n<li><code>offset</code> — Number of veterinarians to skip before returning results. Disabled by default.</li>\n</ul>\n","urlObject":{"path":["v1","customers",":externalCustomerId","vets"],"host":["{{baseUrl}}"],"query":[{"disabled":true,"description":{"content":"<p>Maximum number of veterinarians to return.</p>\n","type":"text/plain"},"key":"limit","value":"50"},{"disabled":true,"description":{"content":"<p>Number of veterinarians to skip before returning results.</p>\n","type":"text/plain"},"key":"offset","value":"0"}],"variable":[{"type":"any","key":"externalCustomerId"}]}},"response":[],"_postman_id":"f69ddf19-b96f-44b2-b0cc-7f2b65cbdceb"},{"name":"List a Pet's Vets","id":"db7e5bbf-8231-4cb3-a77f-fd1c58d8ec0a","request":{"method":"GET","header":[],"url":"{{baseUrl}}/v1/pets/:petId/vets?limit=50&offset=0","description":"<p>Lists veterinarians associated with a pet.</p>\n<p><strong>Path parameter</strong></p>\n<ul>\n<li><code>petId</code> — JustFoodForDogs pet identifier returned by pet creation or listing operations.</li>\n</ul>\n<p><strong>Optional query parameters</strong></p>\n<ul>\n<li><code>limit</code> — Maximum number of veterinarians to return. Disabled by default.</li>\n<li><code>offset</code> — Number of veterinarians to skip before returning results. Disabled by default.</li>\n</ul>\n","urlObject":{"path":["v1","pets",":petId","vets"],"host":["{{baseUrl}}"],"query":[{"disabled":true,"description":{"content":"<p>Maximum number of veterinarians to return.</p>\n","type":"text/plain"},"key":"limit","value":"50"},{"disabled":true,"description":{"content":"<p>Number of veterinarians to skip before returning results.</p>\n","type":"text/plain"},"key":"offset","value":"0"}],"variable":[{"type":"any","key":"petId"}]}},"response":[],"_postman_id":"db7e5bbf-8231-4cb3-a77f-fd1c58d8ec0a"}],"id":"5fcb92c3-9930-41fa-83dd-f366a6583e96","description":"<p>Create and manage veterinarian records and their associations with partner-scoped customers and pets. Vet records use a JustFoodForDogs <code>vetId</code>; customer-scoped operations use the partner-owned <code>externalCustomerId</code>, and pet-scoped operations use <code>petId</code>.</p>\n","_postman_id":"5fcb92c3-9930-41fa-83dd-f366a6583e96"},{"name":"Products","item":[{"name":"List Products","id":"ae02c9a5-2b4c-4c30-8bc3-5cf101062932","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{baseUrl}}/v1/products?limit=50&offset=0","description":"<p>Lists products in the JustFoodForDogs catalog available to the authenticated partner.</p>\n<p><strong>Query parameters</strong></p>\n<ul>\n<li><code>limit</code> — Maximum number of products to return. Defaults to <code>50</code>.</li>\n<li><code>offset</code> — Number of products to skip before returning results. Defaults to <code>0</code>.</li>\n</ul>\n<p><strong>Response</strong></p>\n<p>Returns a JSON array of product objects. Each product includes:</p>\n<ul>\n<li><p><code>sku</code> — JustFoodForDogs product identifier.</p>\n</li>\n<li><p><code>upc</code> — Universal Product Code.</p>\n</li>\n<li><p><code>name</code> — Product display name, including size and pack count where applicable.</p>\n</li>\n<li><p><code>partnerSku</code> — Partner-specific product identifier, or <code>null</code> when none is assigned.</p>\n</li>\n<li><p><code>productCategory</code> — Product line, for example <code>Daily Diets</code> or <code>Vet Support Diets</code>.</p>\n</li>\n<li><p><code>productSubCategory</code> — Recipe or formulation within the product category.</p>\n</li>\n<li><p><code>price</code> — Product price as a decimal number.</p>\n</li>\n<li><p><code>manufacturer</code> — Product manufacturer.</p>\n</li>\n<li><p><code>storageTemp</code> — Required storage temperature, such as <code>Ambient</code> or <code>Frozen</code>.</p>\n</li>\n</ul>\n","urlObject":{"path":["v1","products"],"host":["{{baseUrl}}"],"query":[{"description":{"content":"<p>Maximum number of products to return. Defaults to 50.</p>\n","type":"text/plain"},"key":"limit","value":"50"},{"description":{"content":"<p>Number of products to skip before returning results. Defaults to 0.</p>\n","type":"text/plain"},"key":"offset","value":"0"}],"variable":[]}},"response":[],"_postman_id":"ae02c9a5-2b4c-4c30-8bc3-5cf101062932"}],"id":"e2ad1b11-fde0-46de-9e78-a11f2b860d90","description":"<p>Retrieve the JustFoodForDogs product catalog available to the authenticated partner. Products are identified by their JustFoodForDogs <code>sku</code>; each product also includes its <code>upc</code>, an optional partner-specific <code>partnerSku</code>, category and subcategory, price, manufacturer, and storage temperature.</p>\n","_postman_id":"e2ad1b11-fde0-46de-9e78-a11f2b860d90"},{"name":"Orders","item":[{"name":"Create an Order","id":"8edd6449-20fa-4e73-aca8-aa22ca14ef6d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"orderNumber\": \"123456\",\n    \"orderDate\": \"2026-09-10T11:22:59-04:00\",\n    \"customer\": {\n        \"externalId\": \"12345678\",\n        \"firstName\": \"John\",\n        \"lastName\": \"Doe\",\n        \"email\": \"johndoe@example.com\",\n        \"phone\": \"+10000000000\"\n    },\n    \"shipTo\": {\n        \"recipientName\": \"John Doe\",\n        \"address1\": \"123 Main Street\",\n        \"address2\": \"Suite 100\",\n        \"city\": \"Tustin\",\n        \"stateCode\": \"CA\",\n        \"postalCode\": \"92782\",\n        \"countryCode\": \"US\",\n        \"phone\": \"+10000000000\"\n    },\n    \"billTo\": {\n        \"recipientName\": \"John Doe\",\n        \"address1\": \"123 Main Street\",\n        \"address2\": \"Suite 100\",\n        \"city\": \"Tustin\",\n        \"stateCode\": \"CA\",\n        \"postalCode\": \"92782\",\n        \"countryCode\": \"US\",\n        \"phone\": \"+10000000000\"\n    },\n    \"totals\": {\n        \"currency\": \"USD\",\n        \"shipping\": 19.99,\n        \"discount\": 32.55,\n        \"tax\": 39.47,\n        \"total\": 677.55\n    },\n    \"lineItems\": [\n        {\n            \"lineNumber\": 1,\n            \"sku\": \"981036206\",\n            \"quantity\": 1,\n            \"unitPrice\": 181.99,\n            \"totalDiscount\": 9.10,\n            \"discounts\": [\n                {\n                    \"title\": \"Item Discount\",\n                    \"description\": \"Item Discount\",\n                    \"amount\": 9.1,\n                    \"discountQualifier\": \"fixed_amount\"\n                }\n            ]\n        },\n        {\n            \"lineNumber\": 2,\n            \"sku\": \"911014001\",\n            \"quantity\": 7,\n            \"unitPrice\": 12.99,\n            \"totalDiscount\": 4.55,\n            \"discounts\": []\n        }\n    ]\n}","options":{"raw":{"language":"json"}}},"url":"{{baseUrl}}/v1/orders","description":"<p>Places an order for JustFoodForDogs products on behalf of one of your partner-scoped customers. A successful request returns <code>202 Accepted</code> with the <code>salesOrderId</code> JustFoodForDogs assigns to the order. The <code>salesOrderId</code> is final; store it immediately and quote it to support. The order itself is created moments after the call returns.</p>\n<p><strong>Order rules</strong></p>\n<ul>\n<li><p><strong>Order from your catalog.</strong> Every <code>lineItems[].sku</code> must be a <code>sku</code> returned by <strong>Products → List Products</strong> for your credentials. A SKU outside your catalog rejects the whole order with <code>400</code> naming the line. An order is never partly accepted.</p>\n</li>\n<li><p><strong><code>orderNumber</code></strong> <strong>is the key.</strong> It must be unique across every order you send and is never reused. Sending a different order with an <code>orderNumber</code> you have already used returns <code>409</code>.</p>\n</li>\n<li><p><strong>Retries are safe.</strong> If a call times out, resend the identical request with the same <code>X-Request-ID</code> to receive the original result without creating a second order. The collection generates a new <code>X-Request-ID</code> on every send, so set a fixed value when testing a retry.</p>\n</li>\n<li><p><strong>The customer is resolved for you.</strong> If you send <code>customer.externalId</code>, the order is linked to that customer, matched or created as <strong>Customers → Create a customer</strong> would. If you omit it, the order is accepted but not linked to a customer record. Contact details on the order do not update the customer record; use <strong>Customers → Update a Customer</strong> for that.</p>\n</li>\n<li><p><strong>US only at launch.</strong> Addresses must be in the US and amounts must be in USD.</p>\n</li>\n<li><p><strong>Strict validation.</strong> Any field not listed below is rejected with <code>400</code> naming the field.</p>\n</li>\n</ul>\n<p><strong>Request body</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>orderNumber</code></td>\n<td>string</td>\n<td>Yes</td>\n<td>Your order number, exactly as your system shows it to the customer. 1–64 characters: letters, digits, <code>.</code> <code>_</code> <code>~</code> <code>-</code>. Unique per partner and never reused.</td>\n</tr>\n<tr>\n<td><code>orderDate</code></td>\n<td>datetime</td>\n<td>Yes</td>\n<td>When the order was placed, in RFC 3339 format with a UTC offset, for example <code>2026-09-10T11:22:59-04:00</code>. Timestamps without an offset are rejected.</td>\n</tr>\n<tr>\n<td><code>customer</code></td>\n<td>object</td>\n<td>Yes</td>\n<td>Who the order is for. See <strong>Customer</strong>.</td>\n</tr>\n<tr>\n<td><code>shipTo</code></td>\n<td>object</td>\n<td>Yes</td>\n<td>Delivery address. See <strong>Address</strong>.</td>\n</tr>\n<tr>\n<td><code>billTo</code></td>\n<td>object</td>\n<td>Yes</td>\n<td>Billing address. See <strong>Address</strong>.</td>\n</tr>\n<tr>\n<td><code>totals</code></td>\n<td>object</td>\n<td>Yes</td>\n<td>Order-level amounts. See <strong>Totals</strong>.</td>\n</tr>\n<tr>\n<td><code>lineItems</code></td>\n<td>array</td>\n<td>Yes</td>\n<td>1–200 lines. See <strong>Line item</strong>.</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Customer</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>externalId</code></td>\n<td>string</td>\n<td>No</td>\n<td>Your customer identifier, the same value used with <strong>Customers</strong> endpoints. Up to 64 characters: letters, digits, <code>.</code> <code>_</code> <code>~</code> <code>-</code>.</td>\n</tr>\n<tr>\n<td><code>firstName</code></td>\n<td>string</td>\n<td>Yes</td>\n<td>Up to 500 characters.</td>\n</tr>\n<tr>\n<td><code>lastName</code></td>\n<td>string</td>\n<td>Yes</td>\n<td>Up to 500 characters.</td>\n</tr>\n<tr>\n<td><code>email</code></td>\n<td>string</td>\n<td>Yes</td>\n<td>A valid email address.</td>\n</tr>\n<tr>\n<td><code>phone</code></td>\n<td>string</td>\n<td>No</td>\n<td>E.164 format, for example <code>+13105551234</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Address</strong> (<code>shipTo</code> and <code>billTo</code>)</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>recipientName</code></td>\n<td>string</td>\n<td>Yes</td>\n<td>Up to 200 characters.</td>\n</tr>\n<tr>\n<td><code>address1</code></td>\n<td>string</td>\n<td>Yes</td>\n<td>Up to 500 characters.</td>\n</tr>\n<tr>\n<td><code>address2</code></td>\n<td>string</td>\n<td>No</td>\n<td>Up to 500 characters.</td>\n</tr>\n<tr>\n<td><code>city</code></td>\n<td>string</td>\n<td>Yes</td>\n<td>Up to 500 characters.</td>\n</tr>\n<tr>\n<td><code>stateCode</code></td>\n<td>string</td>\n<td>Yes</td>\n<td>Two-letter upper-case USPS code, for example <code>CA</code>.</td>\n</tr>\n<tr>\n<td><code>postalCode</code></td>\n<td>string</td>\n<td>Yes</td>\n<td>Five-digit ZIP or ZIP+4, for example <code>92782</code> or <code>92782-1234</code>.</td>\n</tr>\n<tr>\n<td><code>countryCode</code></td>\n<td>string</td>\n<td>Yes</td>\n<td><code>US</code> only at launch.</td>\n</tr>\n<tr>\n<td><code>phone</code></td>\n<td>string</td>\n<td>No</td>\n<td>E.164 format.</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Totals</strong></p>\n<p>All amounts are zero or greater, with at most two decimal places.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>currency</code></td>\n<td>string</td>\n<td>Yes</td>\n<td><code>USD</code> only at launch.</td>\n</tr>\n<tr>\n<td><code>shipping</code></td>\n<td>number</td>\n<td>Yes</td>\n<td>Shipping charged.</td>\n</tr>\n<tr>\n<td><code>discount</code></td>\n<td>number</td>\n<td>Yes</td>\n<td>Send a positive amount; it is subtracted (<code>32.55</code>, not <code>-32.55</code>).</td>\n</tr>\n<tr>\n<td><code>tax</code></td>\n<td>number</td>\n<td>Yes</td>\n<td>Tax charged.</td>\n</tr>\n<tr>\n<td><code>total</code></td>\n<td>number</td>\n<td>Yes</td>\n<td>What the customer is charged, after the discount and including shipping and tax.</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Line item</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>lineNumber</code></td>\n<td>integer</td>\n<td>Yes</td>\n<td>1 or greater, and unique within the order.</td>\n</tr>\n<tr>\n<td><code>sku</code></td>\n<td>string</td>\n<td>Yes</td>\n<td>The JustFoodForDogs <code>sku</code> from <strong>Products → List Products</strong>. It must be in your catalog. Do not send <code>partnerSku</code> or <code>upc</code>.</td>\n</tr>\n<tr>\n<td><code>quantity</code></td>\n<td>integer</td>\n<td>Yes</td>\n<td>1 or greater.</td>\n</tr>\n<tr>\n<td><code>unitPrice</code></td>\n<td>number</td>\n<td>Yes</td>\n<td>Price of one unit before any discount. 0 or greater.</td>\n</tr>\n<tr>\n<td><code>totalDiscount</code></td>\n<td>number</td>\n<td>No</td>\n<td>Total discount on the line across all units. Should equal the sum of <code>discounts[].amount</code>.</td>\n</tr>\n<tr>\n<td><code>discounts</code></td>\n<td>array</td>\n<td>No</td>\n<td>How <code>totalDiscount</code> was arrived at. See <strong>Discount</strong>.</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Discount</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>title</code></td>\n<td>string</td>\n<td>Yes</td>\n<td>Up to 200 characters.</td>\n</tr>\n<tr>\n<td><code>description</code></td>\n<td>string</td>\n<td>No</td>\n<td>Up to 500 characters.</td>\n</tr>\n<tr>\n<td><code>amount</code></td>\n<td>number</td>\n<td>Yes</td>\n<td>Money this discount took off the line. 0 or greater.</td>\n</tr>\n<tr>\n<td><code>discountQualifier</code></td>\n<td>string</td>\n<td>Yes</td>\n<td><code>fixed_amount</code> or <code>percentage</code>. Informational only; <code>amount</code> is always the money value.</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Responses</strong></p>\n<ul>\n<li><p><code>202 Accepted</code> — The order was validated and accepted for processing. Returns <code>salesOrderId</code> (JustFoodForDogs order identifier, final) and <code>orderNumber</code> (echoed). A replayed request returns the same body.</p>\n</li>\n<li><p><code>400</code> — Validation failed: a missing or badly formatted field, an unknown field, or a SKU not in your catalog.</p>\n</li>\n<li><p><code>401</code> — Credentials missing or not recognized.</p>\n</li>\n<li><p><code>403</code> — Credentials are valid but don't match <code>X-Partner-ID</code>.</p>\n</li>\n<li><p><code>409</code> — <code>orderNumber</code> has already been used for a different order (<code>duplicate_order</code>). Nothing was written.</p>\n</li>\n<li><p><code>429</code> — Request rate agreed in your contract exceeded.</p>\n</li>\n<li><p><code>500</code> — Server error. Safe to retry with the same <code>X-Request-ID</code>.</p>\n</li>\n</ul>\n<p>Errors return a consistent envelope with <code>error.code</code>, <code>error.message</code>, <code>error.field</code>, and <code>error.requestId</code>.</p>\n","urlObject":{"path":["v1","orders"],"host":["{{baseUrl}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"8edd6449-20fa-4e73-aca8-aa22ca14ef6d"}],"id":"3002415b-98f4-4efa-8753-67969ec09c87","description":"<p>Place orders for JustFoodForDogs products on behalf of partner-scoped customers. Orders use <code>sku</code> values from your product catalog (Products → List Products) and are keyed by your partner-owned <code>orderNumber</code>, which must be unique and is never reused. Each accepted order returns a JustFoodForDogs <code>salesOrderId</code>; store it and quote it to support. Reading an order back, checking its status or tracking, and cancelling or amending an order are not available in v1.</p>\n","_postman_id":"3002415b-98f4-4efa-8753-67969ec09c87"}],"event":[{"listen":"prerequest","script":{"id":"9783228e-afbe-4a69-9437-2ed21f724a54","type":"text/javascript","exec":["// Generate a unique tracing ID for every request","function uuidv4() {","  return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {","    var r = Math.random() * 16 | 0, v = c === 'x' ? r : (r & 0x3 | 0x8);","    return v.toString(16);","  });","}","","pm.request.headers.upsert({","  key: \"X-Request-ID\",","  value: uuidv4()","});","","// Authentication","pm.request.headers.upsert({","  key: \"client_id\",","  value: pm.environment.get(\"clientId\")","});","pm.request.headers.upsert({","  key: \"client_secret\",","  value: pm.environment.get(\"clientSecret\")","});","pm.request.headers.upsert({","  key: \"X-Partner-ID\",","  value: pm.environment.get(\"partnerId\")","});"]}},{"listen":"test","script":{"id":"fc7dab13-05f7-4dad-b423-6b097e997c40","type":"text/javascript","exec":[""]}}]}