{
  "info": {
    "name": "Frigolive Public API v1",
    "description": "Generated from the Frigolive API reference. Base path: /api/public/v1\n\nSet the clientId/clientSecret variables and run 'Get a service access token' first; copy the returned access_token into the accessToken variable. Docs: https://developer.frigolive.nl",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "variable": [
    {
      "key": "baseUrl",
      "value": "https://api.frigolive.nl",
      "type": "string"
    },
    {
      "key": "accessToken",
      "value": "",
      "type": "string"
    },
    {
      "key": "accountId",
      "value": "",
      "type": "string"
    },
    {
      "key": "clientId",
      "value": "",
      "type": "string"
    },
    {
      "key": "clientSecret",
      "value": "",
      "type": "string"
    }
  ],
  "item": [
    {
      "name": "Authentication",
      "description": "Obtain short-lived, scope-restricted access tokens with client credentials.",
      "item": [
        {
          "name": "POST Get a service access token",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Content-Type",
                "value": "application/x-www-form-urlencoded"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/public/v1/oauth/token/",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "oauth",
                "token"
              ],
              "query": [],
              "variable": []
            },
            "description": "Exchanges the client ID and the once-shown client secret for a JWT valid for at most one hour.\n\nAccess: public\n- Never embed the client secret in a mobile app or a browser.\n- There is no refresh token; your backend obtains a new access token before expiry and shares it in memory.",
            "body": {
              "mode": "urlencoded",
              "urlencoded": [
                {
                  "key": "grant_type",
                  "value": "client_credentials"
                },
                {
                  "key": "client_id",
                  "value": "{{clientId}}"
                },
                {
                  "key": "client_secret",
                  "value": "{{clientSecret}}"
                },
                {
                  "key": "scope",
                  "value": "devices:read telemetry:read"
                }
              ]
            }
          },
          "response": []
        }
      ]
    },
    {
      "name": "Accounts",
      "description": "Work with the companies assigned to the integration and customer-managed profile fields.",
      "item": [
        {
          "name": "GET List assigned accounts",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{accessToken}}"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/public/v1/accounts/",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "accounts"
              ],
              "query": [],
              "variable": []
            },
            "description": "Returns the active real customer accounts on the credential allow-list.\n\nScopes: accounts:read"
          },
          "response": []
        },
        {
          "name": "GET Get an account profile",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{accessToken}}"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/public/v1/accounts/:account_id/",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "accounts",
                ":account_id"
              ],
              "query": [],
              "variable": [
                {
                  "key": "account_id",
                  "value": "a6532895-026f-4dad-9f89-432a33e93bc0",
                  "description": "Tenant-scoped resource id."
                }
              ]
            },
            "description": "Returns the safe profile fields of a customer company on the allow-list.\n\nScopes: accounts:read"
          },
          "response": []
        },
        {
          "name": "PATCH Update an account profile",
          "request": {
            "method": "PATCH",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{accessToken}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/public/v1/accounts/:account_id/",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "accounts",
                ":account_id"
              ],
              "query": [],
              "variable": [
                {
                  "key": "account_id",
                  "value": "a6532895-026f-4dad-9f89-432a33e93bc0",
                  "description": "Tenant-scoped resource id."
                }
              ]
            },
            "description": "Updates customer-managed contact and legal profile fields; it cannot change status or subscription.\n\nScopes: accounts:write\n- The is_active flag, subscription, holding relationship, and billing fields cannot be changed through the Public API.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Fresh Logistics Europe\",\n  \"email\": \"api-ops@example.com\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        }
      ]
    },
    {
      "name": "Locations & Geofences",
      "description": "Manage circle and polygon locations plus entry/exit automation.",
      "item": [
        {
          "name": "GET List locations",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{accessToken}}"
              },
              {
                "key": "X-Frigolive-Account-ID",
                "value": "{{accountId}}"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/public/v1/locations/?page=1&page_size=50",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "locations"
              ],
              "query": [
                {
                  "key": "page",
                  "value": "1",
                  "description": "One-based page number.",
                  "disabled": true
                },
                {
                  "key": "page_size",
                  "value": "50",
                  "description": "Page size between 1 and 100.",
                  "disabled": true
                }
              ],
              "variable": []
            },
            "description": "Returns a page of locations records in the selected account.\n\nScopes: locations:read\n- X-Frigolive-Account-ID is required when the credential is assigned to more than one company; every resource is additionally checked against tenant ownership."
          },
          "response": []
        },
        {
          "name": "POST Create a location",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{accessToken}}"
              },
              {
                "key": "X-Frigolive-Account-ID",
                "value": "{{accountId}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/public/v1/locations/",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "locations"
              ],
              "query": [],
              "variable": []
            },
            "description": "Creates a new location record in the selected customer account.\n\nScopes: locations:write\n- X-Frigolive-Account-ID is required when the credential is assigned to more than one company; every resource is additionally checked against tenant ownership.\n- This create request requires a unique Idempotency-Key header of 8-128 characters. Retrying with the same key and body will not produce a duplicate record.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Rotterdam Soğuk Depo\",\n  \"shape\": \"CIRCLE\",\n  \"center_lat\": 51.9244,\n  \"center_lng\": 4.4777,\n  \"radius_m\": 500,\n  \"alert_on_enter\": true,\n  \"alert_on_exit\": false\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "GET Get location detail",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{accessToken}}"
              },
              {
                "key": "X-Frigolive-Account-ID",
                "value": "{{accountId}}"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/public/v1/locations/:location_id/",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "locations",
                ":location_id"
              ],
              "query": [],
              "variable": [
                {
                  "key": "location_id",
                  "value": "42",
                  "description": "Tenant-scoped resource id."
                }
              ]
            },
            "description": "Looks the resource up only inside the selected tenant.\n\nScopes: locations:read\n- X-Frigolive-Account-ID is required when the credential is assigned to more than one company; every resource is additionally checked against tenant ownership."
          },
          "response": []
        },
        {
          "name": "PUT Update a location",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{accessToken}}"
              },
              {
                "key": "X-Frigolive-Account-ID",
                "value": "{{accountId}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/public/v1/locations/:location_id/",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "locations",
                ":location_id"
              ],
              "query": [],
              "variable": [
                {
                  "key": "location_id",
                  "value": "42",
                  "description": "Tenant-scoped resource id."
                }
              ]
            },
            "description": "Updates writable fields against an explicit allow-list contract and rejects unknown fields.\n\nScopes: locations:write\n- X-Frigolive-Account-ID is required when the credential is assigned to more than one company; every resource is additionally checked against tenant ownership.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Rotterdam Soğuk Depo\",\n  \"shape\": \"CIRCLE\",\n  \"center_lat\": 51.9244,\n  \"center_lng\": 4.4777,\n  \"radius_m\": 500,\n  \"alert_on_enter\": true,\n  \"alert_on_exit\": false\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "PATCH Partially update a location",
          "request": {
            "method": "PATCH",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{accessToken}}"
              },
              {
                "key": "X-Frigolive-Account-ID",
                "value": "{{accountId}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/public/v1/locations/:location_id/",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "locations",
                ":location_id"
              ],
              "query": [],
              "variable": [
                {
                  "key": "location_id",
                  "value": "42",
                  "description": "Tenant-scoped resource id."
                }
              ]
            },
            "description": "Updates only the writable fields you send; the rest stay unchanged.\n\nScopes: locations:write\n- X-Frigolive-Account-ID is required when the credential is assigned to more than one company; every resource is additionally checked against tenant ownership.\n- PUT expects the full writable field set; use PATCH for a partial change.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"radius_m\": 750,\n  \"alert_on_exit\": true\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "DELETE Delete a location",
          "request": {
            "method": "DELETE",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{accessToken}}"
              },
              {
                "key": "X-Frigolive-Account-ID",
                "value": "{{accountId}}"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/public/v1/locations/:location_id/",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "locations",
                ":location_id"
              ],
              "query": [],
              "variable": [
                {
                  "key": "location_id",
                  "value": "42",
                  "description": "Tenant-scoped resource id."
                }
              ]
            },
            "description": "Deletes the resource only inside the selected tenant.\n\nScopes: locations:write\n- X-Frigolive-Account-ID is required when the credential is assigned to more than one company; every resource is additionally checked against tenant ownership."
          },
          "response": []
        }
      ]
    },
    {
      "name": "Carriers",
      "description": "Manage the customer's carrier catalogue.",
      "item": [
        {
          "name": "GET List carriers",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{accessToken}}"
              },
              {
                "key": "X-Frigolive-Account-ID",
                "value": "{{accountId}}"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/public/v1/carriers/?page=1&page_size=50",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "carriers"
              ],
              "query": [
                {
                  "key": "page",
                  "value": "1",
                  "description": "One-based page number.",
                  "disabled": true
                },
                {
                  "key": "page_size",
                  "value": "50",
                  "description": "Page size between 1 and 100.",
                  "disabled": true
                }
              ],
              "variable": []
            },
            "description": "Returns a page of carriers records in the selected account.\n\nScopes: carriers:read\n- X-Frigolive-Account-ID is required when the credential is assigned to more than one company; every resource is additionally checked against tenant ownership."
          },
          "response": []
        },
        {
          "name": "POST Create a carrier",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{accessToken}}"
              },
              {
                "key": "X-Frigolive-Account-ID",
                "value": "{{accountId}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/public/v1/carriers/",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "carriers"
              ],
              "query": [],
              "variable": []
            },
            "description": "Creates a new carrier record in the selected customer account.\n\nScopes: carriers:write\n- X-Frigolive-Account-ID is required when the credential is assigned to more than one company; every resource is additionally checked against tenant ownership.\n- This create request requires a unique Idempotency-Key header of 8-128 characters. Retrying with the same key and body will not produce a duplicate record.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"North Sea Logistics\",\n  \"transport_type\": \"LAND\",\n  \"phone_number\": \"+31101234567\",\n  \"description\": \"Benelux road partner\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "GET Get carrier detail",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{accessToken}}"
              },
              {
                "key": "X-Frigolive-Account-ID",
                "value": "{{accountId}}"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/public/v1/carriers/:carrier_id/",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "carriers",
                ":carrier_id"
              ],
              "query": [],
              "variable": [
                {
                  "key": "carrier_id",
                  "value": "42",
                  "description": "Tenant-scoped resource id."
                }
              ]
            },
            "description": "Looks the resource up only inside the selected tenant.\n\nScopes: carriers:read\n- X-Frigolive-Account-ID is required when the credential is assigned to more than one company; every resource is additionally checked against tenant ownership."
          },
          "response": []
        },
        {
          "name": "PUT Update a carrier",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{accessToken}}"
              },
              {
                "key": "X-Frigolive-Account-ID",
                "value": "{{accountId}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/public/v1/carriers/:carrier_id/",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "carriers",
                ":carrier_id"
              ],
              "query": [],
              "variable": [
                {
                  "key": "carrier_id",
                  "value": "42",
                  "description": "Tenant-scoped resource id."
                }
              ]
            },
            "description": "Updates writable fields against an explicit allow-list contract and rejects unknown fields.\n\nScopes: carriers:write\n- X-Frigolive-Account-ID is required when the credential is assigned to more than one company; every resource is additionally checked against tenant ownership.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"North Sea Logistics\",\n  \"transport_type\": \"LAND\",\n  \"phone_number\": \"+31101234567\",\n  \"description\": \"Benelux road partner\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "PATCH Partially update a carrier",
          "request": {
            "method": "PATCH",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{accessToken}}"
              },
              {
                "key": "X-Frigolive-Account-ID",
                "value": "{{accountId}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/public/v1/carriers/:carrier_id/",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "carriers",
                ":carrier_id"
              ],
              "query": [],
              "variable": [
                {
                  "key": "carrier_id",
                  "value": "42",
                  "description": "Tenant-scoped resource id."
                }
              ]
            },
            "description": "Updates only the writable fields you send; the rest stay unchanged.\n\nScopes: carriers:write\n- X-Frigolive-Account-ID is required when the credential is assigned to more than one company; every resource is additionally checked against tenant ownership.\n- PUT expects the full writable field set; use PATCH for a partial change.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"phone_number\": \"+31101234599\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "DELETE Delete a carrier",
          "request": {
            "method": "DELETE",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{accessToken}}"
              },
              {
                "key": "X-Frigolive-Account-ID",
                "value": "{{accountId}}"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/public/v1/carriers/:carrier_id/",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "carriers",
                ":carrier_id"
              ],
              "query": [],
              "variable": [
                {
                  "key": "carrier_id",
                  "value": "42",
                  "description": "Tenant-scoped resource id."
                }
              ]
            },
            "description": "Deletes the resource only inside the selected tenant.\n\nScopes: carriers:write\n- X-Frigolive-Account-ID is required when the credential is assigned to more than one company; every resource is additionally checked against tenant ownership."
          },
          "response": []
        }
      ]
    },
    {
      "name": "Receivers",
      "description": "Manage Frigolive receiver and delivery-party records.",
      "item": [
        {
          "name": "GET List receivers",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{accessToken}}"
              },
              {
                "key": "X-Frigolive-Account-ID",
                "value": "{{accountId}}"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/public/v1/receivers/?page=1&page_size=50",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "receivers"
              ],
              "query": [
                {
                  "key": "page",
                  "value": "1",
                  "description": "One-based page number.",
                  "disabled": true
                },
                {
                  "key": "page_size",
                  "value": "50",
                  "description": "Page size between 1 and 100.",
                  "disabled": true
                }
              ],
              "variable": []
            },
            "description": "Returns a page of receivers records in the selected account.\n\nScopes: receivers:read\n- X-Frigolive-Account-ID is required when the credential is assigned to more than one company; every resource is additionally checked against tenant ownership."
          },
          "response": []
        },
        {
          "name": "POST Create a receiver",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{accessToken}}"
              },
              {
                "key": "X-Frigolive-Account-ID",
                "value": "{{accountId}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/public/v1/receivers/",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "receivers"
              ],
              "query": [],
              "variable": []
            },
            "description": "Creates a new receiver record in the selected customer account.\n\nScopes: receivers:write\n- X-Frigolive-Account-ID is required when the credential is assigned to more than one company; every resource is additionally checked against tenant ownership.\n- This create request requires a unique Idempotency-Key header of 8-128 characters. Retrying with the same key and body will not produce a duplicate record.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Fresh Market BV\",\n  \"company_representative\": \"Alex de Vries\",\n  \"phone_number\": \"+31109876543\",\n  \"address\": \"Rotterdam, NL\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "GET Get receiver detail",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{accessToken}}"
              },
              {
                "key": "X-Frigolive-Account-ID",
                "value": "{{accountId}}"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/public/v1/receivers/:receiver_id/",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "receivers",
                ":receiver_id"
              ],
              "query": [],
              "variable": [
                {
                  "key": "receiver_id",
                  "value": "42",
                  "description": "Tenant-scoped resource id."
                }
              ]
            },
            "description": "Looks the resource up only inside the selected tenant.\n\nScopes: receivers:read\n- X-Frigolive-Account-ID is required when the credential is assigned to more than one company; every resource is additionally checked against tenant ownership."
          },
          "response": []
        },
        {
          "name": "PUT Update a receiver",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{accessToken}}"
              },
              {
                "key": "X-Frigolive-Account-ID",
                "value": "{{accountId}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/public/v1/receivers/:receiver_id/",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "receivers",
                ":receiver_id"
              ],
              "query": [],
              "variable": [
                {
                  "key": "receiver_id",
                  "value": "42",
                  "description": "Tenant-scoped resource id."
                }
              ]
            },
            "description": "Updates writable fields against an explicit allow-list contract and rejects unknown fields.\n\nScopes: receivers:write\n- X-Frigolive-Account-ID is required when the credential is assigned to more than one company; every resource is additionally checked against tenant ownership.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Fresh Market BV\",\n  \"company_representative\": \"Alex de Vries\",\n  \"phone_number\": \"+31109876543\",\n  \"address\": \"Rotterdam, NL\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "PATCH Partially update a receiver",
          "request": {
            "method": "PATCH",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{accessToken}}"
              },
              {
                "key": "X-Frigolive-Account-ID",
                "value": "{{accountId}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/public/v1/receivers/:receiver_id/",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "receivers",
                ":receiver_id"
              ],
              "query": [],
              "variable": [
                {
                  "key": "receiver_id",
                  "value": "42",
                  "description": "Tenant-scoped resource id."
                }
              ]
            },
            "description": "Updates only the writable fields you send; the rest stay unchanged.\n\nScopes: receivers:write\n- X-Frigolive-Account-ID is required when the credential is assigned to more than one company; every resource is additionally checked against tenant ownership.\n- PUT expects the full writable field set; use PATCH for a partial change.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"phone_number\": \"+31109876500\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "DELETE Delete a receiver",
          "request": {
            "method": "DELETE",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{accessToken}}"
              },
              {
                "key": "X-Frigolive-Account-ID",
                "value": "{{accountId}}"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/public/v1/receivers/:receiver_id/",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "receivers",
                ":receiver_id"
              ],
              "query": [],
              "variable": [
                {
                  "key": "receiver_id",
                  "value": "42",
                  "description": "Tenant-scoped resource id."
                }
              ]
            },
            "description": "Deletes the resource only inside the selected tenant.\n\nScopes: receivers:write\n- X-Frigolive-Account-ID is required when the credential is assigned to more than one company; every resource is additionally checked against tenant ownership."
          },
          "response": []
        }
      ]
    },
    {
      "name": "Alert Presets",
      "description": "Manage reusable temperature, humidity, light, shock, and battery thresholds.",
      "item": [
        {
          "name": "GET List alert presets",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{accessToken}}"
              },
              {
                "key": "X-Frigolive-Account-ID",
                "value": "{{accountId}}"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/public/v1/alert-presets/?page=1&page_size=50",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "alert-presets"
              ],
              "query": [
                {
                  "key": "page",
                  "value": "1",
                  "description": "One-based page number.",
                  "disabled": true
                },
                {
                  "key": "page_size",
                  "value": "50",
                  "description": "Page size between 1 and 100.",
                  "disabled": true
                }
              ],
              "variable": []
            },
            "description": "Returns a page of alert presets records in the selected account.\n\nScopes: alert-presets:read\n- X-Frigolive-Account-ID is required when the credential is assigned to more than one company; every resource is additionally checked against tenant ownership."
          },
          "response": []
        },
        {
          "name": "POST Create a alert preset",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{accessToken}}"
              },
              {
                "key": "X-Frigolive-Account-ID",
                "value": "{{accountId}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/public/v1/alert-presets/",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "alert-presets"
              ],
              "query": [],
              "variable": []
            },
            "description": "Creates a new alert preset record in the selected customer account.\n\nScopes: alert-presets:write\n- X-Frigolive-Account-ID is required when the credential is assigned to more than one company; every resource is additionally checked against tenant ownership.\n- This create request requires a unique Idempotency-Key header of 8-128 characters. Retrying with the same key and body will not produce a duplicate record.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Frozen Goods\",\n  \"min_temperature\": -25,\n  \"max_temperature\": -18,\n  \"min_battery_level\": 20,\n  \"is_active\": true\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "GET Get alert preset detail",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{accessToken}}"
              },
              {
                "key": "X-Frigolive-Account-ID",
                "value": "{{accountId}}"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/public/v1/alert-presets/:preset_id/",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "alert-presets",
                ":preset_id"
              ],
              "query": [],
              "variable": [
                {
                  "key": "preset_id",
                  "value": "a6532895-026f-4dad-9f89-432a33e93bc0",
                  "description": "Tenant-scoped resource id."
                }
              ]
            },
            "description": "Looks the resource up only inside the selected tenant.\n\nScopes: alert-presets:read\n- X-Frigolive-Account-ID is required when the credential is assigned to more than one company; every resource is additionally checked against tenant ownership."
          },
          "response": []
        },
        {
          "name": "PUT Update a alert preset",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{accessToken}}"
              },
              {
                "key": "X-Frigolive-Account-ID",
                "value": "{{accountId}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/public/v1/alert-presets/:preset_id/",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "alert-presets",
                ":preset_id"
              ],
              "query": [],
              "variable": [
                {
                  "key": "preset_id",
                  "value": "a6532895-026f-4dad-9f89-432a33e93bc0",
                  "description": "Tenant-scoped resource id."
                }
              ]
            },
            "description": "Updates writable fields against an explicit allow-list contract and rejects unknown fields.\n\nScopes: alert-presets:write\n- X-Frigolive-Account-ID is required when the credential is assigned to more than one company; every resource is additionally checked against tenant ownership.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Frozen Goods\",\n  \"min_temperature\": -25,\n  \"max_temperature\": -18,\n  \"min_battery_level\": 20,\n  \"is_active\": true\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "PATCH Partially update a alert preset",
          "request": {
            "method": "PATCH",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{accessToken}}"
              },
              {
                "key": "X-Frigolive-Account-ID",
                "value": "{{accountId}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/public/v1/alert-presets/:preset_id/",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "alert-presets",
                ":preset_id"
              ],
              "query": [],
              "variable": [
                {
                  "key": "preset_id",
                  "value": "a6532895-026f-4dad-9f89-432a33e93bc0",
                  "description": "Tenant-scoped resource id."
                }
              ]
            },
            "description": "Updates only the writable fields you send; the rest stay unchanged.\n\nScopes: alert-presets:write\n- X-Frigolive-Account-ID is required when the credential is assigned to more than one company; every resource is additionally checked against tenant ownership.\n- PUT expects the full writable field set; use PATCH for a partial change.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"max_temperature\": -16\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "DELETE Delete a alert preset",
          "request": {
            "method": "DELETE",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{accessToken}}"
              },
              {
                "key": "X-Frigolive-Account-ID",
                "value": "{{accountId}}"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/public/v1/alert-presets/:preset_id/",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "alert-presets",
                ":preset_id"
              ],
              "query": [],
              "variable": [
                {
                  "key": "preset_id",
                  "value": "a6532895-026f-4dad-9f89-432a33e93bc0",
                  "description": "Tenant-scoped resource id."
                }
              ]
            },
            "description": "Deletes the resource only inside the selected tenant.\n\nScopes: alert-presets:write\n- X-Frigolive-Account-ID is required when the credential is assigned to more than one company; every resource is additionally checked against tenant ownership."
          },
          "response": []
        }
      ]
    },
    {
      "name": "Shipment Templates",
      "description": "Manage frequently used shipment routes as templates.",
      "item": [
        {
          "name": "GET List shipment templates",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{accessToken}}"
              },
              {
                "key": "X-Frigolive-Account-ID",
                "value": "{{accountId}}"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/public/v1/shipment-templates/?page=1&page_size=50",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "shipment-templates"
              ],
              "query": [
                {
                  "key": "page",
                  "value": "1",
                  "description": "One-based page number.",
                  "disabled": true
                },
                {
                  "key": "page_size",
                  "value": "50",
                  "description": "Page size between 1 and 100.",
                  "disabled": true
                }
              ],
              "variable": []
            },
            "description": "Returns a page of shipment templates records in the selected account.\n\nScopes: shipment-templates:read\n- X-Frigolive-Account-ID is required when the credential is assigned to more than one company; every resource is additionally checked against tenant ownership."
          },
          "response": []
        },
        {
          "name": "POST Create a shipment template",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{accessToken}}"
              },
              {
                "key": "X-Frigolive-Account-ID",
                "value": "{{accountId}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/public/v1/shipment-templates/",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "shipment-templates"
              ],
              "query": [],
              "variable": []
            },
            "description": "Creates a new shipment template record in the selected customer account.\n\nScopes: shipment-templates:write\n- X-Frigolive-Account-ID is required when the credential is assigned to more than one company; every resource is additionally checked against tenant ownership.\n- This create request requires a unique Idempotency-Key header of 8-128 characters. Retrying with the same key and body will not produce a duplicate record.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"NL → FR Frozen\",\n  \"transport_type\": \"LAND\",\n  \"origin_address\": \"Amsterdam, NL\",\n  \"destination_address\": \"Paris, FR\",\n  \"carrier_company\": \"North Sea Logistics\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "GET Get shipment template detail",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{accessToken}}"
              },
              {
                "key": "X-Frigolive-Account-ID",
                "value": "{{accountId}}"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/public/v1/shipment-templates/:template_id/",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "shipment-templates",
                ":template_id"
              ],
              "query": [],
              "variable": [
                {
                  "key": "template_id",
                  "value": "42",
                  "description": "Tenant-scoped resource id."
                }
              ]
            },
            "description": "Looks the resource up only inside the selected tenant.\n\nScopes: shipment-templates:read\n- X-Frigolive-Account-ID is required when the credential is assigned to more than one company; every resource is additionally checked against tenant ownership."
          },
          "response": []
        },
        {
          "name": "PUT Update a shipment template",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{accessToken}}"
              },
              {
                "key": "X-Frigolive-Account-ID",
                "value": "{{accountId}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/public/v1/shipment-templates/:template_id/",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "shipment-templates",
                ":template_id"
              ],
              "query": [],
              "variable": [
                {
                  "key": "template_id",
                  "value": "42",
                  "description": "Tenant-scoped resource id."
                }
              ]
            },
            "description": "Updates writable fields against an explicit allow-list contract and rejects unknown fields.\n\nScopes: shipment-templates:write\n- X-Frigolive-Account-ID is required when the credential is assigned to more than one company; every resource is additionally checked against tenant ownership.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"NL → FR Frozen\",\n  \"transport_type\": \"LAND\",\n  \"origin_address\": \"Amsterdam, NL\",\n  \"destination_address\": \"Paris, FR\",\n  \"carrier_company\": \"North Sea Logistics\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "PATCH Partially update a shipment template",
          "request": {
            "method": "PATCH",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{accessToken}}"
              },
              {
                "key": "X-Frigolive-Account-ID",
                "value": "{{accountId}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/public/v1/shipment-templates/:template_id/",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "shipment-templates",
                ":template_id"
              ],
              "query": [],
              "variable": [
                {
                  "key": "template_id",
                  "value": "42",
                  "description": "Tenant-scoped resource id."
                }
              ]
            },
            "description": "Updates only the writable fields you send; the rest stay unchanged.\n\nScopes: shipment-templates:write\n- X-Frigolive-Account-ID is required when the credential is assigned to more than one company; every resource is additionally checked against tenant ownership.\n- PUT expects the full writable field set; use PATCH for a partial change.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"carrier_company\": \"Rhine Freight\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "DELETE Delete a shipment template",
          "request": {
            "method": "DELETE",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{accessToken}}"
              },
              {
                "key": "X-Frigolive-Account-ID",
                "value": "{{accountId}}"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/public/v1/shipment-templates/:template_id/",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "shipment-templates",
                ":template_id"
              ],
              "query": [],
              "variable": [
                {
                  "key": "template_id",
                  "value": "42",
                  "description": "Tenant-scoped resource id."
                }
              ]
            },
            "description": "Deletes the resource only inside the selected tenant.\n\nScopes: shipment-templates:write\n- X-Frigolive-Account-ID is required when the credential is assigned to more than one company; every resource is additionally checked against tenant ownership."
          },
          "response": []
        }
      ]
    },
    {
      "name": "Devices",
      "description": "Use the safe device view, status, customer settings, and maintenance history.",
      "item": [
        {
          "name": "GET List devices",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{accessToken}}"
              },
              {
                "key": "X-Frigolive-Account-ID",
                "value": "{{accountId}}"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/public/v1/devices/?page=1&page_size=50&online=true&active=true&search=",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "devices"
              ],
              "query": [
                {
                  "key": "page",
                  "value": "1",
                  "description": "One-based page number.",
                  "disabled": true
                },
                {
                  "key": "page_size",
                  "value": "50",
                  "description": "Page size between 1 and 100.",
                  "disabled": true
                },
                {
                  "key": "online",
                  "value": "true",
                  "description": "Online filter.",
                  "disabled": true
                },
                {
                  "key": "active",
                  "value": "true",
                  "description": "Active filter.",
                  "disabled": true
                },
                {
                  "key": "search",
                  "value": "",
                  "description": "Search by label or display serial.",
                  "disabled": true
                }
              ],
              "variable": []
            },
            "description": "Returns the safe operational view of approved, non-deleted devices.\n\nScopes: devices:read\n- X-Frigolive-Account-ID is required when the credential is assigned to more than one company; every resource is additionally checked against tenant ownership.\n- IMEI, SIM, device token, developer notes, and firmware management fields are never returned."
          },
          "response": []
        },
        {
          "name": "GET Get device detail",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{accessToken}}"
              },
              {
                "key": "X-Frigolive-Account-ID",
                "value": "{{accountId}}"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/public/v1/devices/:device_id/",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "devices",
                ":device_id"
              ],
              "query": [],
              "variable": [
                {
                  "key": "device_id",
                  "value": "a6532895-026f-4dad-9f89-432a33e93bc0",
                  "description": "Tenant-scoped resource id."
                }
              ]
            },
            "description": "Fetches the device only inside the selected tenant.\n\nScopes: devices:read\n- X-Frigolive-Account-ID is required when the credential is assigned to more than one company; every resource is additionally checked against tenant ownership."
          },
          "response": []
        },
        {
          "name": "PATCH Change the device label",
          "request": {
            "method": "PATCH",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{accessToken}}"
              },
              {
                "key": "X-Frigolive-Account-ID",
                "value": "{{accountId}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/public/v1/devices/:device_id/label/",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "devices",
                ":device_id",
                "label"
              ],
              "query": [],
              "variable": [
                {
                  "key": "device_id",
                  "value": "a6532895-026f-4dad-9f89-432a33e93bc0",
                  "description": "Tenant-scoped resource id."
                }
              ]
            },
            "description": "Changes only the customer-visible label, using the narrowest write scope.\n\nScopes: devices:read, devices:label:write\n- This endpoint accepts no other device field.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"label\": \"Pallet 24\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "PATCH Update customer device settings",
          "request": {
            "method": "PATCH",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{accessToken}}"
              },
              {
                "key": "X-Frigolive-Account-ID",
                "value": "{{accountId}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/public/v1/devices/:device_id/settings/",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "devices",
                ":device_id",
                "settings"
              ],
              "query": [],
              "variable": [
                {
                  "key": "device_id",
                  "value": "a6532895-026f-4dad-9f89-432a33e93bc0",
                  "description": "Tenant-scoped resource id."
                }
              ]
            },
            "description": "Updates the measurement/transmission interval, sensor usage, thresholds, and alert preset against an allow-list.\n\nScopes: devices:read, devices:settings:write\n- Tenant, hardware, SIM, debug, and firmware fields are not part of this endpoint.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"measure_interval\": 10,\n  \"transmission_interval\": 20,\n  \"min_temperature\": 2,\n  \"max_temperature\": 8\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "GET Get device status",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{accessToken}}"
              },
              {
                "key": "X-Frigolive-Account-ID",
                "value": "{{accountId}}"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/public/v1/devices/:device_id/status/",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "devices",
                ":device_id",
                "status"
              ],
              "query": [],
              "variable": [
                {
                  "key": "device_id",
                  "value": "a6532895-026f-4dad-9f89-432a33e93bc0",
                  "description": "Tenant-scoped resource id."
                }
              ]
            },
            "description": "Returns a lightweight status view with connectivity, battery, and last location.\n\nScopes: devices:read"
          },
          "response": []
        },
        {
          "name": "GET Get device alarms",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{accessToken}}"
              },
              {
                "key": "X-Frigolive-Account-ID",
                "value": "{{accountId}}"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/public/v1/devices/:device_id/alarms/?page=1&page_size=50",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "devices",
                ":device_id",
                "alarms"
              ],
              "query": [
                {
                  "key": "page",
                  "value": "1",
                  "description": "One-based page number.",
                  "disabled": true
                },
                {
                  "key": "page_size",
                  "value": "50",
                  "description": "Page size between 1 and 100.",
                  "disabled": true
                }
              ],
              "variable": [
                {
                  "key": "device_id",
                  "value": "a6532895-026f-4dad-9f89-432a33e93bc0",
                  "description": "Tenant-scoped resource id."
                }
              ]
            },
            "description": "Returns only alarms from the device's current physical lifecycle.\n\nScopes: alarms:read"
          },
          "response": []
        },
        {
          "name": "GET Get maintenance and calibration history",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{accessToken}}"
              },
              {
                "key": "X-Frigolive-Account-ID",
                "value": "{{accountId}}"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/public/v1/devices/:device_id/maintenance/?page=1&page_size=50",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "devices",
                ":device_id",
                "maintenance"
              ],
              "query": [
                {
                  "key": "page",
                  "value": "1",
                  "description": "One-based page number.",
                  "disabled": true
                },
                {
                  "key": "page_size",
                  "value": "50",
                  "description": "Page size between 1 and 100.",
                  "disabled": true
                }
              ],
              "variable": [
                {
                  "key": "device_id",
                  "value": "a6532895-026f-4dad-9f89-432a33e93bc0",
                  "description": "Tenant-scoped resource id."
                }
              ]
            },
            "description": "Returns maintenance, fault, repair, and calibration records without exposing cost fields.\n\nScopes: maintenance:read\n- The Frigolive model has no signed calibration certificate file, and this endpoint does not invent one."
          },
          "response": []
        }
      ]
    },
    {
      "name": "Telemetry",
      "description": "Read temperature, humidity, light, shock, battery, and location measurements.",
      "item": [
        {
          "name": "GET Get device telemetry",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{accessToken}}"
              },
              {
                "key": "X-Frigolive-Account-ID",
                "value": "{{accountId}}"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/public/v1/devices/:device_id/telemetry/?page=1&page_size=50&from=2026-07-24T12:00:00Z&to=2026-07-25T12:00:00Z",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "devices",
                ":device_id",
                "telemetry"
              ],
              "query": [
                {
                  "key": "page",
                  "value": "1",
                  "description": "One-based page number.",
                  "disabled": true
                },
                {
                  "key": "page_size",
                  "value": "50",
                  "description": "Page size between 1 and 100.",
                  "disabled": true
                },
                {
                  "key": "from",
                  "value": "2026-07-24T12:00:00Z",
                  "description": "Start of the window; defaults to the last 24 hours.",
                  "disabled": true
                },
                {
                  "key": "to",
                  "value": "2026-07-25T12:00:00Z",
                  "description": "End of the window; defaults to now.",
                  "disabled": true
                }
              ],
              "variable": [
                {
                  "key": "device_id",
                  "value": "a6532895-026f-4dad-9f89-432a33e93bc0",
                  "description": "Tenant-scoped resource id."
                }
              ]
            },
            "description": "Returns tenant-scoped sensor measurements within the configured maximum day range.\n\nScopes: telemetry:read\n- X-Frigolive-Account-ID is required when the credential is assigned to more than one company; every resource is additionally checked against tenant ownership."
          },
          "response": []
        }
      ]
    },
    {
      "name": "Shipments",
      "description": "Create, track, share, and complete multi-device shipments.",
      "item": [
        {
          "name": "GET List shipments",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{accessToken}}"
              },
              {
                "key": "X-Frigolive-Account-ID",
                "value": "{{accountId}}"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/public/v1/shipments/?page=1&page_size=50&status=ACTIVE&search=",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "shipments"
              ],
              "query": [
                {
                  "key": "page",
                  "value": "1",
                  "description": "One-based page number.",
                  "disabled": true
                },
                {
                  "key": "page_size",
                  "value": "50",
                  "description": "Page size between 1 and 100.",
                  "disabled": true
                },
                {
                  "key": "status",
                  "value": "ACTIVE",
                  "description": "Status filter.",
                  "disabled": true
                },
                {
                  "key": "search",
                  "value": "",
                  "description": "Search by shipment number, receiver, or carrier.",
                  "disabled": true
                }
              ],
              "variable": []
            },
            "description": "Lists multi-device shipments, filtered by active/completed status and search.\n\nScopes: shipments:read\n- X-Frigolive-Account-ID is required when the credential is assigned to more than one company; every resource is additionally checked against tenant ownership."
          },
          "response": []
        },
        {
          "name": "POST Create a shipment",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{accessToken}}"
              },
              {
                "key": "X-Frigolive-Account-ID",
                "value": "{{accountId}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/public/v1/shipments/create/",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "shipments",
                "create"
              ],
              "query": [],
              "variable": []
            },
            "description": "Creates a new, immediately active shipment with up to five eligible devices from the same tenant.\n\nScopes: shipments:write\n- X-Frigolive-Account-ID is required when the credential is assigned to more than one company; every resource is additionally checked against tenant ownership.\n- This create request requires a unique Idempotency-Key header of 8-128 characters. Retrying with the same key and body will not produce a duplicate record.\n- A device already assigned to another active shipment is rejected.\n- Frigolive has no separate DRAFT/STARTED model; a shipment is active as soon as it is created.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"shipment_number\": \"NL-FR-2026-00481\",\n  \"origin\": {\n    \"address\": \"Amsterdam, NL\",\n    \"latitude\": 52.3676,\n    \"longitude\": 4.9041\n  },\n  \"destination\": {\n    \"address\": \"Paris, FR\",\n    \"latitude\": 48.8566,\n    \"longitude\": 2.3522\n  },\n  \"receiver_name\": \"Fresh Market BV\",\n  \"transport_type\": \"LAND\",\n  \"carrier_company\": \"North Sea Logistics\",\n  \"devices\": [\n    {\n      \"id\": \"a6532895-026f-4dad-9f89-432a33e93bc0\",\n      \"label\": \"Pallet 1\"\n    }\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "GET Get shipment detail",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{accessToken}}"
              },
              {
                "key": "X-Frigolive-Account-ID",
                "value": "{{accountId}}"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/public/v1/shipments/:shipment_id/",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "shipments",
                ":shipment_id"
              ],
              "query": [],
              "variable": [
                {
                  "key": "shipment_id",
                  "value": "42",
                  "description": "Tenant-scoped resource id."
                }
              ]
            },
            "description": "Returns the route, devices, active transport leg, and AIS position where available, under a safe contract.\n\nScopes: shipments:read"
          },
          "response": []
        },
        {
          "name": "PUT Update an active shipment",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{accessToken}}"
              },
              {
                "key": "X-Frigolive-Account-ID",
                "value": "{{accountId}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/public/v1/shipments/:shipment_id/",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "shipments",
                ":shipment_id"
              ],
              "query": [],
              "variable": [
                {
                  "key": "shipment_id",
                  "value": "42",
                  "description": "Tenant-scoped resource id."
                }
              ]
            },
            "description": "Updates customer-managed fields: route, planning, receiver, carrier, and up to five devices.\n\nScopes: shipments:write\n- X-Frigolive-Account-ID is required when the credential is assigned to more than one company; every resource is additionally checked against tenant ownership.\n- Omitted fields stay unchanged; unknown and internal fields are rejected.\n- The history of a completed shipment cannot be modified.\n- The request is rejected if a device belongs to another active shipment.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"planned_arrival_time\": \"2026-07-27T16:00:00Z\",\n  \"carrier_id\": 42,\n  \"devices\": [\n    {\n      \"id\": \"a6532895-026f-4dad-9f89-432a33e93bc0\",\n      \"label\": \"Pallet 1\"\n    }\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "DELETE Delete an active shipment",
          "request": {
            "method": "DELETE",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{accessToken}}"
              },
              {
                "key": "X-Frigolive-Account-ID",
                "value": "{{accountId}}"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/public/v1/shipments/:shipment_id/",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "shipments",
                ":shipment_id"
              ],
              "query": [],
              "variable": [
                {
                  "key": "shipment_id",
                  "value": "42",
                  "description": "Tenant-scoped resource id."
                }
              ]
            },
            "description": "Deletes only an incomplete shipment; completed history is left untouched.\n\nScopes: shipments:write"
          },
          "response": []
        },
        {
          "name": "POST Complete a shipment",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{accessToken}}"
              },
              {
                "key": "X-Frigolive-Account-ID",
                "value": "{{accountId}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/public/v1/shipments/:shipment_id/complete/",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "shipments",
                ":shipment_id",
                "complete"
              ],
              "query": [],
              "variable": [
                {
                  "key": "shipment_id",
                  "value": "42",
                  "description": "Tenant-scoped resource id."
                }
              ]
            },
            "description": "Completes the shipment atomically and freezes the telemetry window at the completion moment.\n\nScopes: shipments:complete",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"reason\": \"Delivered and accepted\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "GET Get the sharing status",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{accessToken}}"
              },
              {
                "key": "X-Frigolive-Account-ID",
                "value": "{{accountId}}"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/public/v1/shipments/:shipment_id/share/",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "shipments",
                ":shipment_id",
                "share"
              ],
              "query": [],
              "variable": [
                {
                  "key": "shipment_id",
                  "value": "42",
                  "description": "Tenant-scoped resource id."
                }
              ]
            },
            "description": "Returns whether sharing is enabled plus the safe URL, expiry, and view counts — never the raw share token.\n\nScopes: shipments:read, shipments:share"
          },
          "response": []
        },
        {
          "name": "PUT Create or refresh a share link",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{accessToken}}"
              },
              {
                "key": "X-Frigolive-Account-ID",
                "value": "{{accountId}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/public/v1/shipments/:shipment_id/share/",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "shipments",
                ":shipment_id",
                "share"
              ],
              "query": [],
              "variable": [
                {
                  "key": "shipment_id",
                  "value": "42",
                  "description": "Tenant-scoped resource id."
                }
              ]
            },
            "description": "Creates or refreshes the single Frigolive share record with an expiry and a view limit.\n\nScopes: shipments:share",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"expires_in_hours\": 48,\n  \"max_views\": 100\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "DELETE Revoke the share link",
          "request": {
            "method": "DELETE",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{accessToken}}"
              },
              {
                "key": "X-Frigolive-Account-ID",
                "value": "{{accountId}}"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/public/v1/shipments/:shipment_id/share/",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "shipments",
                ":shipment_id",
                "share"
              ],
              "query": [],
              "variable": [
                {
                  "key": "shipment_id",
                  "value": "42",
                  "description": "Tenant-scoped resource id."
                }
              ]
            },
            "description": "Invalidates the existing external tracking link immediately.\n\nScopes: shipments:share"
          },
          "response": []
        },
        {
          "name": "GET Get shipment tracking data",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{accessToken}}"
              },
              {
                "key": "X-Frigolive-Account-ID",
                "value": "{{accountId}}"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/public/v1/shipments/:shipment_id/tracking/?page=1&page_size=50",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "shipments",
                ":shipment_id",
                "tracking"
              ],
              "query": [
                {
                  "key": "page",
                  "value": "1",
                  "description": "One-based page number.",
                  "disabled": true
                },
                {
                  "key": "page_size",
                  "value": "50",
                  "description": "Page size between 1 and 100.",
                  "disabled": true
                }
              ],
              "variable": [
                {
                  "key": "shipment_id",
                  "value": "42",
                  "description": "Tenant-scoped resource id."
                }
              ]
            },
            "description": "Returns tenant-scoped telemetry of the attached devices, limited to the shipment time window.\n\nScopes: shipments:tracking:read"
          },
          "response": []
        }
      ]
    },
    {
      "name": "Alarms",
      "description": "Read tenant-scoped alarm records and manage their resolution status.",
      "item": [
        {
          "name": "GET List alarms",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{accessToken}}"
              },
              {
                "key": "X-Frigolive-Account-ID",
                "value": "{{accountId}}"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/public/v1/alarms/?page=1&page_size=50&resolved=&severity=&device_id=&shipment_id=",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "alarms"
              ],
              "query": [
                {
                  "key": "page",
                  "value": "1",
                  "description": "One-based page number.",
                  "disabled": true
                },
                {
                  "key": "page_size",
                  "value": "50",
                  "description": "Page size between 1 and 100.",
                  "disabled": true
                },
                {
                  "key": "resolved",
                  "value": "",
                  "description": "Resolution filter.",
                  "disabled": true
                },
                {
                  "key": "severity",
                  "value": "",
                  "description": "Severity filter.",
                  "disabled": true
                },
                {
                  "key": "device_id",
                  "value": "",
                  "description": "Device filter.",
                  "disabled": true
                },
                {
                  "key": "shipment_id",
                  "value": "",
                  "description": "Shipment filter.",
                  "disabled": true
                }
              ],
              "variable": []
            },
            "description": "Returns tenant-scoped alarm records filtered by resolution, severity, device, and shipment.\n\nScopes: alarms:read"
          },
          "response": []
        },
        {
          "name": "GET Get alarm detail",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{accessToken}}"
              },
              {
                "key": "X-Frigolive-Account-ID",
                "value": "{{accountId}}"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/public/v1/alarms/:alarm_id/",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "alarms",
                ":alarm_id"
              ],
              "query": [],
              "variable": [
                {
                  "key": "alarm_id",
                  "value": "a6532895-026f-4dad-9f89-432a33e93bc0",
                  "description": "Tenant-scoped resource id."
                }
              ]
            },
            "description": "Fetches the alarm only inside the selected tenant.\n\nScopes: alarms:read"
          },
          "response": []
        },
        {
          "name": "PATCH Update the alarm resolution status",
          "request": {
            "method": "PATCH",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{accessToken}}"
              },
              {
                "key": "X-Frigolive-Account-ID",
                "value": "{{accountId}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/public/v1/alarms/:alarm_id/",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "alarms",
                ":alarm_id"
              ],
              "query": [],
              "variable": [
                {
                  "key": "alarm_id",
                  "value": "a6532895-026f-4dad-9f89-432a33e93bc0",
                  "description": "Tenant-scoped resource id."
                }
              ]
            },
            "description": "Accepts only the resolved field and never writes the service account into the human resolved_by field.\n\nScopes: alarms:write",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"resolved\": true\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        }
      ]
    },
    {
      "name": "Reports",
      "description": "List and securely download the report archive generated in Frigolive.",
      "item": [
        {
          "name": "GET List the report archive",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{accessToken}}"
              },
              {
                "key": "X-Frigolive-Account-ID",
                "value": "{{accountId}}"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/public/v1/reports/?page=1&page_size=50&type=",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "reports"
              ],
              "query": [
                {
                  "key": "page",
                  "value": "1",
                  "description": "One-based page number.",
                  "disabled": true
                },
                {
                  "key": "page_size",
                  "value": "50",
                  "description": "Page size between 1 and 100.",
                  "disabled": true
                },
                {
                  "key": "type",
                  "value": "",
                  "description": "Report type filter.",
                  "disabled": true
                }
              ],
              "variable": []
            },
            "description": "Lists device and shipment reports already generated in Frigolive.\n\nScopes: reports:read"
          },
          "response": []
        },
        {
          "name": "GET Get a report record",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{accessToken}}"
              },
              {
                "key": "X-Frigolive-Account-ID",
                "value": "{{accountId}}"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/public/v1/reports/:report_id/",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "reports",
                ":report_id"
              ],
              "query": [],
              "variable": [
                {
                  "key": "report_id",
                  "value": "42",
                  "description": "Tenant-scoped resource id."
                }
              ]
            },
            "description": "Returns the file metadata within the tenant.\n\nScopes: reports:read"
          },
          "response": []
        },
        {
          "name": "GET Download the report file",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{accessToken}}"
              },
              {
                "key": "X-Frigolive-Account-ID",
                "value": "{{accountId}}"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/public/v1/reports/:report_id/download/",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "reports",
                ":report_id",
                "download"
              ],
              "query": [],
              "variable": [
                {
                  "key": "report_id",
                  "value": "42",
                  "description": "Tenant-scoped resource id."
                }
              ]
            },
            "description": "Streams the file as an attachment after authorization and tenant checks.\n\nScopes: reports:read"
          },
          "response": []
        }
      ]
    },
    {
      "name": "Users & Invitations",
      "description": "Manage customer users and invitations without touching platform administrators.",
      "item": [
        {
          "name": "GET List customer users",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{accessToken}}"
              },
              {
                "key": "X-Frigolive-Account-ID",
                "value": "{{accountId}}"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/public/v1/users/?page=1&page_size=50&active=&search=",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "users"
              ],
              "query": [
                {
                  "key": "page",
                  "value": "1",
                  "description": "One-based page number.",
                  "disabled": true
                },
                {
                  "key": "page_size",
                  "value": "50",
                  "description": "Page size between 1 and 100.",
                  "disabled": true
                },
                {
                  "key": "active",
                  "value": "",
                  "description": "Active filter.",
                  "disabled": true
                },
                {
                  "key": "search",
                  "value": "",
                  "description": "Search by name, username, or email.",
                  "disabled": true
                }
              ],
              "variable": []
            },
            "description": "Lists users of the selected tenant, excluding platform staff and superuser records.\n\nScopes: users:read"
          },
          "response": []
        },
        {
          "name": "GET Get user detail",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{accessToken}}"
              },
              {
                "key": "X-Frigolive-Account-ID",
                "value": "{{accountId}}"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/public/v1/users/:user_id/",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "users",
                ":user_id"
              ],
              "query": [],
              "variable": [
                {
                  "key": "user_id",
                  "value": "42",
                  "description": "Tenant-scoped resource id."
                }
              ]
            },
            "description": "Fetches a customer user inside the tenant, never a platform user.\n\nScopes: users:read"
          },
          "response": []
        },
        {
          "name": "PATCH Update a customer user",
          "request": {
            "method": "PATCH",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{accessToken}}"
              },
              {
                "key": "X-Frigolive-Account-ID",
                "value": "{{accountId}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/public/v1/users/:user_id/",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "users",
                ":user_id"
              ],
              "query": [],
              "variable": [
                {
                  "key": "user_id",
                  "value": "42",
                  "description": "Tenant-scoped resource id."
                }
              ]
            },
            "description": "Updates the profile and an assignable role; it can neither grant nor change COMPANY_ADMIN.\n\nScopes: users:write\n- Company administrators and platform users cannot be modified through the Public API.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"first_name\": \"Jamie\",\n  \"role\": \"VIEWER\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "DELETE Deactivate a customer user",
          "request": {
            "method": "DELETE",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{accessToken}}"
              },
              {
                "key": "X-Frigolive-Account-ID",
                "value": "{{accountId}}"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/public/v1/users/:user_id/",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "users",
                ":user_id"
              ],
              "query": [],
              "variable": [
                {
                  "key": "user_id",
                  "value": "42",
                  "description": "Tenant-scoped resource id."
                }
              ]
            },
            "description": "Deactivates a regular customer user and leaves company administrators untouched.\n\nScopes: users:write"
          },
          "response": []
        },
        {
          "name": "GET List company roles",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{accessToken}}"
              },
              {
                "key": "X-Frigolive-Account-ID",
                "value": "{{accountId}}"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/public/v1/roles/",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "roles"
              ],
              "query": [],
              "variable": []
            },
            "description": "Returns the tenant roles that can be shown in your user interface.\n\nScopes: users:read"
          },
          "response": []
        },
        {
          "name": "GET List user invitations",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{accessToken}}"
              },
              {
                "key": "X-Frigolive-Account-ID",
                "value": "{{accountId}}"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/public/v1/user-invitations/",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "user-invitations"
              ],
              "query": [],
              "variable": []
            },
            "description": "Returns pending, accepted, and expired invitations without exposing the token.\n\nScopes: users:read"
          },
          "response": []
        },
        {
          "name": "POST Send a secure user invitation",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{accessToken}}"
              },
              {
                "key": "X-Frigolive-Account-ID",
                "value": "{{accountId}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/public/v1/user-invitations/",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "user-invitations"
              ],
              "query": [],
              "variable": []
            },
            "description": "Starts the Frigolive-hosted password creation flow by email, without returning the invitation token.\n\nScopes: users:invite\n- X-Frigolive-Account-ID is required when the credential is assigned to more than one company; every resource is additionally checked against tenant ownership.\n- This create request requires a unique Idempotency-Key header of 8-128 characters. Retrying with the same key and body will not produce a duplicate record.\n- The COMPANY_ADMIN role cannot be granted through a Public API invitation.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"email\": \"new-user@example.com\",\n  \"role\": \"OPERATOR\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "DELETE Revoke a pending invitation",
          "request": {
            "method": "DELETE",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{accessToken}}"
              },
              {
                "key": "X-Frigolive-Account-ID",
                "value": "{{accountId}}"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/public/v1/user-invitations/:invitation_id/",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "public",
                "v1",
                "user-invitations",
                ":invitation_id"
              ],
              "query": [],
              "variable": [
                {
                  "key": "invitation_id",
                  "value": "a6532895-026f-4dad-9f89-432a33e93bc0",
                  "description": "Tenant-scoped resource id."
                }
              ]
            },
            "description": "Revokes an invitation that has not been accepted yet, within the tenant.\n\nScopes: users:invite"
          },
          "response": []
        }
      ]
    }
  ]
}