{
  "item": [
    {
      "id": "993f46c2-e779-40de-92af-e5b9a44b5646",
      "name": "Partner API",
      "description": {
        "content": "",
        "type": "text/plain"
      },
      "item": [
        {
          "id": "f0383615-15e1-4272-b4be-74a68460e2f2",
          "name": "List partner API keys",
          "request": {
            "name": "List partner API keys",
            "description": {
              "content": "Lists every key under the caller's partner account. Includes metadata only — the api_key itself and the rotation_secret are never returned. Use prefix + last_4 to recognize keys.\n\nActive keys (revoked_at IS NULL, not expired) sort first.",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "v1",
                "partner",
                "account",
                "keys"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [],
              "variable": []
            },
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "GET",
            "auth": null
          },
          "response": [
            {
              "id": "7235f34b-a0e4-4358-a44b-425c80f8020c",
              "name": "List of keys",
              "originalRequest": {
                "url": {
                  "path": [
                    "v1",
                    "partner",
                    "account",
                    "keys"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "disabled": false,
                    "description": "(Required) ",
                    "key": "X-API-Key",
                    "value": "<string>"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"keys\": [\n    {\n      \"id\": \"d11bb815-ab7b-6310-23a7-9afd8891982e\",\n      \"label\": \"string\",\n      \"prefix\": \"sk_x\",\n      \"last_4\": \"xxxx\",\n      \"rotation_secret_prefix\": \"rs_x\",\n      \"rotation_secret_last_4\": \"xxxx\",\n      \"expires_at\": \"1958-07-15T23:52:24.946Z\",\n      \"last_used_at\": \"1987-09-10T12:40:45.252Z\",\n      \"revoked_at\": \"1968-10-18T23:32:34.372Z\",\n      \"revoked_reason\": \"string\",\n      \"created_at\": \"1989-07-13T15:13:53.162Z\",\n      \"active\": true\n    },\n    {\n      \"id\": \"f59bc869-7c63-c92c-ae42-d3b544cab353\",\n      \"label\": \"string\",\n      \"prefix\": \"sk_x\",\n      \"last_4\": \"xxxx\",\n      \"rotation_secret_prefix\": \"rs_x\",\n      \"rotation_secret_last_4\": \"xxxx\",\n      \"expires_at\": \"1968-05-06T15:51:28.891Z\",\n      \"last_used_at\": \"1969-02-19T22:48:11.683Z\",\n      \"revoked_at\": \"1970-12-23T23:15:34.298Z\",\n      \"revoked_reason\": \"string\",\n      \"created_at\": \"2023-01-02T19:00:40.078Z\",\n      \"active\": false\n    }\n  ]\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "729fbe7d-6485-4189-8d74-db3763a2a059",
              "name": "Missing or invalid X-API-Key",
              "originalRequest": {
                "url": {
                  "path": [
                    "v1",
                    "partner",
                    "account",
                    "keys"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "disabled": false,
                    "description": "(Required) ",
                    "key": "X-API-Key",
                    "value": "<string>"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "Unauthorized",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "text/plain"
                }
              ],
              "body": "",
              "cookie": [],
              "_postman_previewlanguage": "text"
            }
          ],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        },
        {
          "id": "f4fd94e5-d67f-4b6f-85a0-9ea84f0dcb2d",
          "name": "Create a new partner API key",
          "request": {
            "name": "Create a new partner API key",
            "description": {
              "content": "Mints a new api_key + rotation_secret under the caller's account. The plaintext credentials are returned ONCE in the response body — they are never shown again. Save them now.",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "v1",
                "partner",
                "account",
                "keys"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [],
              "variable": []
            },
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "POST",
            "auth": null,
            "body": {
              "mode": "raw",
              "raw": "{\n  \"label\": \"<string>\",\n  \"expires_at\": \"<dateTime>\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "id": "79a597ca-9a87-408d-b602-8c9deec8cd4e",
              "name": "Key created. Save credentials NOW — they will not be shown again.",
              "originalRequest": {
                "url": {
                  "path": [
                    "v1",
                    "partner",
                    "account",
                    "keys"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "disabled": false,
                    "description": "(Required) ",
                    "key": "X-API-Key",
                    "value": "<string>"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"label\": \"prod-ingest\",\n  \"expires_at\": \"<dateTime>\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Created",
              "code": 201,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"id\": \"427dce00-27ef-ebdd-bf56-33fca14c97fd\",\n  \"api_key\": \"sk_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n  \"rotation_secret\": \"rs_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n  \"label\": \"string\",\n  \"prefix\": \"string\",\n  \"last_4\": \"string\",\n  \"expires_at\": \"2020-12-20T07:08:46.127Z\",\n  \"created_at\": \"1967-03-17T18:34:32.511Z\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "224b82e7-6ebe-49c4-8918-3bfd3eb0cf62",
              "name": "Validation error (missing label, bad expires_at)",
              "originalRequest": {
                "url": {
                  "path": [
                    "v1",
                    "partner",
                    "account",
                    "keys"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "disabled": false,
                    "description": "(Required) ",
                    "key": "X-API-Key",
                    "value": "<string>"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"label\": \"prod-ingest\",\n  \"expires_at\": \"<dateTime>\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Bad Request",
              "code": 400,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "text/plain"
                }
              ],
              "body": "",
              "cookie": [],
              "_postman_previewlanguage": "text"
            },
            {
              "id": "605bc301-da9e-40c8-821b-de55d0a13139",
              "name": "Missing or invalid X-API-Key",
              "originalRequest": {
                "url": {
                  "path": [
                    "v1",
                    "partner",
                    "account",
                    "keys"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "disabled": false,
                    "description": "(Required) ",
                    "key": "X-API-Key",
                    "value": "<string>"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"label\": \"prod-ingest\",\n  \"expires_at\": \"<dateTime>\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Unauthorized",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "text/plain"
                }
              ],
              "body": "",
              "cookie": [],
              "_postman_previewlanguage": "text"
            },
            {
              "id": "38105001-d054-4f40-929e-7722c28f1a7b",
              "name": "A key with the given label already exists in this account",
              "originalRequest": {
                "url": {
                  "path": [
                    "v1",
                    "partner",
                    "account",
                    "keys"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "disabled": false,
                    "description": "(Required) ",
                    "key": "X-API-Key",
                    "value": "<string>"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"label\": \"prod-ingest\",\n  \"expires_at\": \"<dateTime>\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Conflict",
              "code": 409,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "text/plain"
                }
              ],
              "body": "",
              "cookie": [],
              "_postman_previewlanguage": "text"
            }
          ],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        },
        {
          "id": "b6ceab25-a245-4bb2-8403-d2fce097139f",
          "name": "Revoke (soft-delete) a partner API key",
          "request": {
            "name": "Revoke (soft-delete) a partner API key",
            "description": {
              "content": "Sets revoked_at on the key. The key row is kept for audit; auth lookups now reject it. The associated 4h grace row (if any) is cascaded away.\n\nYou cannot revoke the key you are currently authenticated with — rotate it or call from a different key.",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "v1",
                "partner",
                "account",
                "keys",
                ":key_id"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [],
              "variable": [
                {
                  "disabled": false,
                  "type": "any",
                  "value": "<uuid>",
                  "key": "key_id",
                  "description": "(Required) "
                }
              ]
            },
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "DELETE",
            "auth": null,
            "body": {
              "mode": "raw",
              "raw": "{\n  \"reason\": \"<string>\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "id": "7ee813cf-fb33-47b0-a875-4b2d1ecabad2",
              "name": "Revoked",
              "originalRequest": {
                "url": {
                  "path": [
                    "v1",
                    "partner",
                    "account",
                    "keys",
                    ":key_id"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": [
                    {
                      "disabled": false,
                      "type": "any",
                      "value": "<uuid>",
                      "key": "key_id",
                      "description": "(Required) "
                    }
                  ]
                },
                "header": [
                  {
                    "disabled": false,
                    "description": "(Required) ",
                    "key": "X-API-Key",
                    "value": "<string>"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "DELETE",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"reason\": \"<string>\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"id\": \"1ae2a8ef-38ef-adc1-87fe-3f14c024ef32\",\n  \"revoked_at\": \"1987-06-04T09:17:06.674Z\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "bb2dbff2-f76e-4962-b57c-3fd242503a8a",
              "name": "Cannot revoke the current authenticating key",
              "originalRequest": {
                "url": {
                  "path": [
                    "v1",
                    "partner",
                    "account",
                    "keys",
                    ":key_id"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": [
                    {
                      "disabled": false,
                      "type": "any",
                      "value": "<uuid>",
                      "key": "key_id",
                      "description": "(Required) "
                    }
                  ]
                },
                "header": [
                  {
                    "disabled": false,
                    "description": "(Required) ",
                    "key": "X-API-Key",
                    "value": "<string>"
                  }
                ],
                "method": "DELETE",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"reason\": \"<string>\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Bad Request",
              "code": 400,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "text/plain"
                }
              ],
              "body": "",
              "cookie": [],
              "_postman_previewlanguage": "text"
            },
            {
              "id": "ebefd184-4f51-40d9-b744-05d1c5758d09",
              "name": "Missing or invalid X-API-Key",
              "originalRequest": {
                "url": {
                  "path": [
                    "v1",
                    "partner",
                    "account",
                    "keys",
                    ":key_id"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": [
                    {
                      "disabled": false,
                      "type": "any",
                      "value": "<uuid>",
                      "key": "key_id",
                      "description": "(Required) "
                    }
                  ]
                },
                "header": [
                  {
                    "disabled": false,
                    "description": "(Required) ",
                    "key": "X-API-Key",
                    "value": "<string>"
                  }
                ],
                "method": "DELETE",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"reason\": \"<string>\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Unauthorized",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "text/plain"
                }
              ],
              "body": "",
              "cookie": [],
              "_postman_previewlanguage": "text"
            },
            {
              "id": "c325be4a-797d-4e1a-abec-42b040643b19",
              "name": "Key not found or already revoked",
              "originalRequest": {
                "url": {
                  "path": [
                    "v1",
                    "partner",
                    "account",
                    "keys",
                    ":key_id"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": [
                    {
                      "disabled": false,
                      "type": "any",
                      "value": "<uuid>",
                      "key": "key_id",
                      "description": "(Required) "
                    }
                  ]
                },
                "header": [
                  {
                    "disabled": false,
                    "description": "(Required) ",
                    "key": "X-API-Key",
                    "value": "<string>"
                  }
                ],
                "method": "DELETE",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"reason\": \"<string>\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Not Found",
              "code": 404,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "text/plain"
                }
              ],
              "body": "",
              "cookie": [],
              "_postman_previewlanguage": "text"
            }
          ],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        },
        {
          "id": "bb8e9e7e-834b-422c-b868-e534da9a071f",
          "name": "Rotate a partner API key (M2M, self-rotate)",
          "request": {
            "name": "Rotate a partner API key (M2M, self-rotate)",
            "description": {
              "content": "Mints a new api_key + rotation_secret on the SAME key row.\n\nAuth: defense in depth — caller must present BOTH the current key (X-API-Key, must match the key referenced by :key_id) AND the current rotation secret (X-Rotation-Secret, must match the same key's rotation_secret_hash).\n\nSelf-rotate only: you cannot rotate a key other than the one you're authenticating with. To \"rotate someone else's key\", DELETE it and POST a new one (two calls).\n\nThe old key remains valid for 4 hours after rotation. A rotation during the grace window REPLACES the prior grace entry.\n\nReminder slots are reset and rotation_due_at is advanced by the configured cadence (if any).",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "v1",
                "partner",
                "account",
                "keys",
                ":key_id",
                "rotate"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [],
              "variable": [
                {
                  "disabled": false,
                  "type": "any",
                  "value": "<uuid>",
                  "key": "key_id",
                  "description": "(Required) "
                }
              ]
            },
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "X-Rotation-Secret",
                "value": "{{rotationSecret}}",
                "type": "text",
                "description": "Per-key rotation secret, required alongside X-API-Key on this request."
              }
            ],
            "method": "POST",
            "auth": null,
            "body": {
              "mode": "raw",
              "raw": "<object>",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "id": "31d44757-4950-48ee-9adb-d9ef00faa0c6",
              "name": "New credentials issued. Save them now — they will not be shown again.",
              "originalRequest": {
                "url": {
                  "path": [
                    "v1",
                    "partner",
                    "account",
                    "keys",
                    ":key_id",
                    "rotate"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": [
                    {
                      "disabled": false,
                      "type": "any",
                      "value": "<uuid>",
                      "key": "key_id",
                      "description": "(Required) "
                    }
                  ]
                },
                "header": [
                  {
                    "disabled": false,
                    "description": "(Required) ",
                    "key": "X-API-Key",
                    "value": "<string>"
                  },
                  {
                    "disabled": false,
                    "description": "(Required) ",
                    "key": "X-Rotation-Secret",
                    "value": "<string>"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "<object>",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"id\": \"98aaf95c-906f-bd99-ea7a-c2680c7e5a7a\",\n  \"api_key\": \"sk_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n  \"rotation_secret\": \"rs_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n  \"old_key_grace_until\": \"2003-01-10T14:35:59.333Z\",\n  \"rotation_due_at\": \"1976-01-05T19:03:37.521Z\",\n  \"expires_at\": \"2001-03-10T05:08:29.099Z\",\n  \"expires_interval_days\": 100\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "a77e54ab-b9a2-4596-80e4-4f103e34e4c3",
              "name": "Missing key_id",
              "originalRequest": {
                "url": {
                  "path": [
                    "v1",
                    "partner",
                    "account",
                    "keys",
                    ":key_id",
                    "rotate"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": [
                    {
                      "disabled": false,
                      "type": "any",
                      "value": "<uuid>",
                      "key": "key_id",
                      "description": "(Required) "
                    }
                  ]
                },
                "header": [
                  {
                    "disabled": false,
                    "description": "(Required) ",
                    "key": "X-API-Key",
                    "value": "<string>"
                  },
                  {
                    "disabled": false,
                    "description": "(Required) ",
                    "key": "X-Rotation-Secret",
                    "value": "<string>"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "<object>",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Bad Request",
              "code": 400,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "text/plain"
                }
              ],
              "body": "",
              "cookie": [],
              "_postman_previewlanguage": "text"
            },
            {
              "id": "b44a610c-8623-4325-926a-88b9a9b2bddc",
              "name": "Missing or invalid X-API-Key + X-Rotation-Secret combination, or key_id does not match the authenticating key",
              "originalRequest": {
                "url": {
                  "path": [
                    "v1",
                    "partner",
                    "account",
                    "keys",
                    ":key_id",
                    "rotate"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": [
                    {
                      "disabled": false,
                      "type": "any",
                      "value": "<uuid>",
                      "key": "key_id",
                      "description": "(Required) "
                    }
                  ]
                },
                "header": [
                  {
                    "disabled": false,
                    "description": "(Required) ",
                    "key": "X-API-Key",
                    "value": "<string>"
                  },
                  {
                    "disabled": false,
                    "description": "(Required) ",
                    "key": "X-Rotation-Secret",
                    "value": "<string>"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "<object>",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Unauthorized",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "text/plain"
                }
              ],
              "body": "",
              "cookie": [],
              "_postman_previewlanguage": "text"
            }
          ],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        },
        {
          "id": "f29b19c9-2cc1-47e3-b48c-a0b434586029",
          "name": "Submit e-invoice file (partner)",
          "request": {
            "name": "Submit e-invoice file (partner)",
            "description": {
              "content": "Upload one or more structured e-invoice data files (XML, EDI, CSV, JSON, TXT) — optionally together with the supporting attachments that belong to them, such as the human-readable PDF. Each data file is queued for format identification and mapping against the global and customer file formats configured for this tenant; the resulting invoices appear exactly as they would from any other channel.\n\nUse this endpoint when you already emit a standard e-invoicing document (UBL, CII, Factur-X / ZUGFeRD, XRechnung, EDIFACT, or an agreed CSV layout). Use `POST /partner/invoices` instead when you want to submit invoice data as JSON.\n\n**Request is `multipart/form-data`** — inline base64 is not accepted here. Limits: 25 files per request, 50 MB per file.\n\nFiles are classified as `data` (the e-invoice document to be mapped) or `attachment` (supporting files linked to the resulting invoice). Classification is inferred from the file extension — `.xml`, `.edi`, `.csv`, `.json` and `.txt` are treated as `data`, everything else as `attachment`. Send the `file_kinds` field to override that per file.\n\nResponds **202 Accepted**: the files are stored and queued. Mapping happens asynchronously, so no invoice token is available yet — reconcile later using your own document references.",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "v1",
                "partner",
                "inbound-files"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [],
              "variable": []
            },
            "header": [
              {
                "key": "Content-Type",
                "value": "multipart/form-data"
              },
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "POST",
            "auth": null,
            "body": {
              "mode": "formdata",
              "formdata": [
                {
                  "key": "files",
                  "type": "file",
                  "contentType": "application/xml, application/edi-x12, text/csv, application/json, application/pdf",
                  "description": "(Required) The files to upload. Send the e-invoice document itself plus any supporting attachments belonging to it. At least one file is required.",
                  "src": []
                },
                {
                  "key": "file_kinds",
                  "value": "[\"<string>\",\"<string>\"]",
                  "type": "text",
                  "description": "Optional. Parallel array to `files` — one entry per uploaded file, in the same order, overriding the extension-based classification. Omit it entirely to let Nuntiq infer the kind from each filename."
                },
                {
                  "key": "upload_batch_id",
                  "value": "<uuid>",
                  "type": "text",
                  "description": "Optional. Groups the files in this request into one batch so the attachments are linked to the invoices extracted from the data file. Generated for you when omitted, and returned in the response."
                },
                {
                  "key": "receiving_inbox",
                  "value": "<email>",
                  "type": "text",
                  "description": "Optional. Routes the resulting invoices to a specific receiving inbox. Falls back to the customer default when omitted or unmatched."
                }
              ]
            }
          },
          "response": [
            {
              "id": "4930cf45-0100-4442-ad7e-e7c9f277dcf5",
              "name": "Files accepted and queued for mapping.",
              "originalRequest": {
                "url": {
                  "path": [
                    "v1",
                    "partner",
                    "inbound-files"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "disabled": false,
                    "description": "(Required) Supplier API key issued by the customer.",
                    "key": "X-API-Key",
                    "value": "<string>"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "formdata",
                  "formdata": [
                    {
                      "description": {
                        "content": "(Required) The files to upload. Send the e-invoice document itself plus any supporting attachments belonging to it. At least one file is required.",
                        "type": "text/plain"
                      },
                      "key": "files",
                      "value": "[\"<binary>\",\"<binary>\"]",
                      "type": "text",
                      "contentType": "application/xml, application/edi-x12, text/csv, application/json, application/pdf"
                    },
                    {
                      "description": {
                        "content": "Optional. Parallel array to `files` — one entry per uploaded file, in the same order, overriding the extension-based classification. Omit it entirely to let Nuntiq infer the kind from each filename.",
                        "type": "text/plain"
                      },
                      "key": "file_kinds",
                      "value": "[\"data\",\"attachment\"]",
                      "type": "text"
                    },
                    {
                      "description": {
                        "content": "Optional. Groups the files in this request into one batch so the attachments are linked to the invoices extracted from the data file. Generated for you when omitted, and returned in the response.",
                        "type": "text/plain"
                      },
                      "key": "upload_batch_id",
                      "value": "9f1c4d2e-6b3a-4f88-9c21-1a7d5e0b4c33",
                      "type": "text"
                    },
                    {
                      "description": {
                        "content": "Optional. Routes the resulting invoices to a specific receiving inbox. Falls back to the customer default when omitted or unmatched.",
                        "type": "text/plain"
                      },
                      "key": "receiving_inbox",
                      "value": "invoices@acme.apreceiving.com",
                      "type": "text"
                    }
                  ]
                }
              },
              "status": "Accepted",
              "code": 202,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"success\": true,\n  \"data\": {\n    \"upload_batch_id\": \"9f1c4d2e-6b3a-4f88-9c21-1a7d5e0b4c33\",\n    \"files\": [\n      {\n        \"filename\": \"invoice-ubl.xml\",\n        \"file_kind\": \"data\",\n        \"size_bytes\": 18244,\n        \"content_type\": \"application/xml\"\n      },\n      {\n        \"filename\": \"invoice.pdf\",\n        \"file_kind\": \"attachment\",\n        \"size_bytes\": 90210,\n        \"content_type\": \"application/pdf\"\n      }\n    ],\n    \"data_files_enqueued\": 1\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "3e8d5001-ce73-4990-8358-8e96f566b31a",
              "name": "No files provided, invalid upload_batch_id, or upload error (per-file size / count limits exceeded).",
              "originalRequest": {
                "url": {
                  "path": [
                    "v1",
                    "partner",
                    "inbound-files"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "disabled": false,
                    "description": "(Required) Supplier API key issued by the customer.",
                    "key": "X-API-Key",
                    "value": "<string>"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "formdata",
                  "formdata": [
                    {
                      "description": {
                        "content": "(Required) The files to upload. Send the e-invoice document itself plus any supporting attachments belonging to it. At least one file is required.",
                        "type": "text/plain"
                      },
                      "key": "files",
                      "value": "[\"<binary>\",\"<binary>\"]",
                      "type": "text",
                      "contentType": "application/xml, application/edi-x12, text/csv, application/json, application/pdf"
                    },
                    {
                      "description": {
                        "content": "Optional. Parallel array to `files` — one entry per uploaded file, in the same order, overriding the extension-based classification. Omit it entirely to let Nuntiq infer the kind from each filename.",
                        "type": "text/plain"
                      },
                      "key": "file_kinds",
                      "value": "[\"data\",\"attachment\"]",
                      "type": "text"
                    },
                    {
                      "description": {
                        "content": "Optional. Groups the files in this request into one batch so the attachments are linked to the invoices extracted from the data file. Generated for you when omitted, and returned in the response.",
                        "type": "text/plain"
                      },
                      "key": "upload_batch_id",
                      "value": "9f1c4d2e-6b3a-4f88-9c21-1a7d5e0b4c33",
                      "type": "text"
                    },
                    {
                      "description": {
                        "content": "Optional. Routes the resulting invoices to a specific receiving inbox. Falls back to the customer default when omitted or unmatched.",
                        "type": "text/plain"
                      },
                      "key": "receiving_inbox",
                      "value": "invoices@acme.apreceiving.com",
                      "type": "text"
                    }
                  ]
                }
              },
              "status": "Bad Request",
              "code": 400,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "text/plain"
                }
              ],
              "body": "",
              "cookie": [],
              "_postman_previewlanguage": "text"
            },
            {
              "id": "3575b415-9585-4dca-a4f5-2b2b629f7846",
              "name": "Missing/invalid X-API-Key",
              "originalRequest": {
                "url": {
                  "path": [
                    "v1",
                    "partner",
                    "inbound-files"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "disabled": false,
                    "description": "(Required) Supplier API key issued by the customer.",
                    "key": "X-API-Key",
                    "value": "<string>"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "formdata",
                  "formdata": [
                    {
                      "description": {
                        "content": "(Required) The files to upload. Send the e-invoice document itself plus any supporting attachments belonging to it. At least one file is required.",
                        "type": "text/plain"
                      },
                      "key": "files",
                      "value": "[\"<binary>\",\"<binary>\"]",
                      "type": "text",
                      "contentType": "application/xml, application/edi-x12, text/csv, application/json, application/pdf"
                    },
                    {
                      "description": {
                        "content": "Optional. Parallel array to `files` — one entry per uploaded file, in the same order, overriding the extension-based classification. Omit it entirely to let Nuntiq infer the kind from each filename.",
                        "type": "text/plain"
                      },
                      "key": "file_kinds",
                      "value": "[\"data\",\"attachment\"]",
                      "type": "text"
                    },
                    {
                      "description": {
                        "content": "Optional. Groups the files in this request into one batch so the attachments are linked to the invoices extracted from the data file. Generated for you when omitted, and returned in the response.",
                        "type": "text/plain"
                      },
                      "key": "upload_batch_id",
                      "value": "9f1c4d2e-6b3a-4f88-9c21-1a7d5e0b4c33",
                      "type": "text"
                    },
                    {
                      "description": {
                        "content": "Optional. Routes the resulting invoices to a specific receiving inbox. Falls back to the customer default when omitted or unmatched.",
                        "type": "text/plain"
                      },
                      "key": "receiving_inbox",
                      "value": "invoices@acme.apreceiving.com",
                      "type": "text"
                    }
                  ]
                }
              },
              "status": "Unauthorized",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "text/plain"
                }
              ],
              "body": "",
              "cookie": [],
              "_postman_previewlanguage": "text"
            },
            {
              "id": "5df7f672-7b26-4012-9f84-bee29e4ca557",
              "name": "API user lacks SUBMIT_SUPPLIER_INVOICE permission",
              "originalRequest": {
                "url": {
                  "path": [
                    "v1",
                    "partner",
                    "inbound-files"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "disabled": false,
                    "description": "(Required) Supplier API key issued by the customer.",
                    "key": "X-API-Key",
                    "value": "<string>"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "formdata",
                  "formdata": [
                    {
                      "description": {
                        "content": "(Required) The files to upload. Send the e-invoice document itself plus any supporting attachments belonging to it. At least one file is required.",
                        "type": "text/plain"
                      },
                      "key": "files",
                      "value": "[\"<binary>\",\"<binary>\"]",
                      "type": "text",
                      "contentType": "application/xml, application/edi-x12, text/csv, application/json, application/pdf"
                    },
                    {
                      "description": {
                        "content": "Optional. Parallel array to `files` — one entry per uploaded file, in the same order, overriding the extension-based classification. Omit it entirely to let Nuntiq infer the kind from each filename.",
                        "type": "text/plain"
                      },
                      "key": "file_kinds",
                      "value": "[\"data\",\"attachment\"]",
                      "type": "text"
                    },
                    {
                      "description": {
                        "content": "Optional. Groups the files in this request into one batch so the attachments are linked to the invoices extracted from the data file. Generated for you when omitted, and returned in the response.",
                        "type": "text/plain"
                      },
                      "key": "upload_batch_id",
                      "value": "9f1c4d2e-6b3a-4f88-9c21-1a7d5e0b4c33",
                      "type": "text"
                    },
                    {
                      "description": {
                        "content": "Optional. Routes the resulting invoices to a specific receiving inbox. Falls back to the customer default when omitted or unmatched.",
                        "type": "text/plain"
                      },
                      "key": "receiving_inbox",
                      "value": "invoices@acme.apreceiving.com",
                      "type": "text"
                    }
                  ]
                }
              },
              "status": "Forbidden",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "text/plain"
                }
              ],
              "body": "",
              "cookie": [],
              "_postman_previewlanguage": "text"
            }
          ],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        },
        {
          "id": "028fedbd-7cb9-4e69-b323-a0aee3f33cd5",
          "name": "Submit invoice (partner)",
          "request": {
            "name": "Submit invoice (partner)",
            "description": {
              "content": "Partner-facing invoice submission endpoint. Auth: X-API-Key header. Workflow is always full_enrichment. Attachments must be inline base64. Routing resolves in this order: (1) receiving_inbox direct match, (2) external_identifier lookup, (3) customer default inbox. If neither routing field matches but a default is configured, the request still succeeds and returns a Warning header. Supports Idempotency-Key for safe retries.",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "v1",
                "partner",
                "invoices"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [],
              "variable": []
            },
            "header": [
              {
                "disabled": false,
                "description": "Optional client-supplied unique key (max 255 chars). Repeats within 24h return the original invoice_token.",
                "key": "Idempotency-Key",
                "value": "<string>"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "POST",
            "auth": null,
            "body": {
              "mode": "raw",
              "raw": "{\n  \"invoice\": {\n    \"header\": {\n      \"invoice_number\": \"<string>\",\n      \"document_type\": \"<string>\",\n      \"original_invoice_number\": \"<string>\",\n      \"invoice_date\": \"<date>\",\n      \"due_date\": \"<date>\",\n      \"delivery_date\": \"<date>\",\n      \"order_number_1\": \"<string>\",\n      \"order_number_2\": \"<string>\",\n      \"contract_number\": \"<string>\",\n      \"delivery_note\": \"<string>\",\n      \"reference_number\": \"<string>\",\n      \"account_number\": \"<string>\",\n      \"net_amount\": \"<number>\",\n      \"tax_amount\": \"<number>\",\n      \"gross_amount\": \"<number>\",\n      \"currency_code\": \"<string>\",\n      \"supplier_name\": \"<string>\",\n      \"supplier_tax_id\": \"<string>\",\n      \"supplier_contact\": \"<string>\",\n      \"customer_name\": \"<string>\",\n      \"customer_tax_id\": \"<string>\",\n      \"customer_contact\": \"<string>\",\n      \"bank_account\": \"<string>\",\n      \"bank_name\": \"<string>\",\n      \"payment_method\": \"<string>\",\n      \"payment_terms\": \"<string>\",\n      \"custom_text_1\": \"<string>\",\n      \"custom_text_2\": \"<string>\",\n      \"custom_text_3\": \"<string>\",\n      \"custom_text_4\": \"<string>\",\n      \"custom_text_5\": \"<string>\",\n      \"custom_text_6\": \"<string>\",\n      \"custom_text_7\": \"<string>\",\n      \"custom_text_8\": \"<string>\",\n      \"custom_text_9\": \"<string>\",\n      \"custom_text_10\": \"<string>\",\n      \"custom_text_11\": \"<string>\",\n      \"custom_text_12\": \"<string>\",\n      \"custom_text_13\": \"<string>\",\n      \"custom_text_14\": \"<string>\",\n      \"custom_text_15\": \"<string>\",\n      \"custom_text_16\": \"<string>\",\n      \"custom_text_17\": \"<string>\",\n      \"custom_text_18\": \"<string>\",\n      \"custom_text_19\": \"<string>\",\n      \"custom_text_20\": \"<string>\",\n      \"custom_text_21\": \"<string>\",\n      \"custom_text_22\": \"<string>\",\n      \"custom_text_23\": \"<string>\",\n      \"custom_text_24\": \"<string>\",\n      \"custom_text_25\": \"<string>\",\n      \"custom_number_1\": \"<number>\",\n      \"custom_number_2\": \"<number>\",\n      \"custom_number_3\": \"<number>\",\n      \"custom_number_4\": \"<number>\",\n      \"custom_number_5\": \"<number>\",\n      \"custom_number_6\": \"<number>\",\n      \"custom_number_7\": \"<number>\",\n      \"custom_number_8\": \"<number>\",\n      \"custom_number_9\": \"<number>\",\n      \"custom_number_10\": \"<number>\",\n      \"custom_number_11\": \"<number>\",\n      \"custom_number_12\": \"<number>\",\n      \"custom_number_13\": \"<number>\",\n      \"custom_number_14\": \"<number>\",\n      \"custom_number_15\": \"<number>\",\n      \"custom_date_1\": \"<date>\",\n      \"custom_date_2\": \"<date>\",\n      \"custom_date_3\": \"<date>\",\n      \"custom_date_4\": \"<date>\",\n      \"custom_date_5\": \"<date>\",\n      \"custom_date_6\": \"<date>\",\n      \"custom_date_7\": \"<date>\",\n      \"custom_date_8\": \"<date>\",\n      \"custom_date_9\": \"<date>\",\n      \"custom_date_10\": \"<date>\",\n      \"custom_date_11\": \"<date>\",\n      \"custom_date_12\": \"<date>\",\n      \"custom_date_13\": \"<date>\",\n      \"custom_date_14\": \"<date>\",\n      \"custom_date_15\": \"<date>\",\n      \"ext_reference_1\": \"<string>\",\n      \"ext_reference_2\": \"<string>\",\n      \"ext_reference_3\": \"<string>\",\n      \"ext_reference_4\": \"<string>\",\n      \"ext_reference_5\": \"<string>\",\n      \"identifier_field_1\": \"<string>\",\n      \"identifier_field_2\": \"<string>\",\n      \"identifier_field_3\": \"<string>\",\n      \"identifier_field_4\": \"<string>\",\n      \"identifier_field_5\": \"<string>\"\n    },\n    \"lines\": [\n      {\n        \"invoice_line_number\": \"<integer>\",\n        \"product_code_1\": \"<string>\",\n        \"product_name\": \"<string>\",\n        \"product_code_2\": \"<string>\",\n        \"quantity\": \"<number>\",\n        \"unit_price\": \"<number>\",\n        \"unit_of_measure\": \"<string>\",\n        \"net_amount\": \"<number>\",\n        \"tax_amount\": \"<number>\",\n        \"tax_rate\": \"<number>\",\n        \"gross_amount\": \"<number>\",\n        \"order_number_1\": \"<string>\",\n        \"order_number_2\": \"<string>\",\n        \"delivery_date\": \"<date>\",\n        \"delivery_note\": \"<string>\",\n        \"custom_text_1\": \"<string>\",\n        \"custom_text_2\": \"<string>\",\n        \"custom_text_3\": \"<string>\",\n        \"custom_text_4\": \"<string>\",\n        \"custom_text_5\": \"<string>\",\n        \"custom_text_6\": \"<string>\",\n        \"custom_text_7\": \"<string>\",\n        \"custom_text_8\": \"<string>\",\n        \"custom_text_9\": \"<string>\",\n        \"custom_text_10\": \"<string>\",\n        \"custom_text_11\": \"<string>\",\n        \"custom_text_12\": \"<string>\",\n        \"custom_text_13\": \"<string>\",\n        \"custom_text_14\": \"<string>\",\n        \"custom_text_15\": \"<string>\",\n        \"custom_number_1\": \"<number>\",\n        \"custom_number_2\": \"<number>\",\n        \"custom_number_3\": \"<number>\",\n        \"custom_number_4\": \"<number>\",\n        \"custom_number_5\": \"<number>\",\n        \"custom_number_6\": \"<number>\",\n        \"custom_number_7\": \"<number>\",\n        \"custom_number_8\": \"<number>\",\n        \"custom_number_9\": \"<number>\",\n        \"custom_number_10\": \"<number>\",\n        \"custom_date_1\": \"<date>\",\n        \"custom_date_2\": \"<date>\",\n        \"custom_date_3\": \"<date>\",\n        \"custom_date_4\": \"<date>\",\n        \"custom_date_5\": \"<date>\",\n        \"custom_date_6\": \"<date>\",\n        \"custom_date_7\": \"<date>\",\n        \"custom_date_8\": \"<date>\",\n        \"custom_date_9\": \"<date>\",\n        \"custom_date_10\": \"<date>\"\n      },\n      {\n        \"invoice_line_number\": \"<integer>\",\n        \"product_code_1\": \"<string>\",\n        \"product_name\": \"<string>\",\n        \"product_code_2\": \"<string>\",\n        \"quantity\": \"<number>\",\n        \"unit_price\": \"<number>\",\n        \"unit_of_measure\": \"<string>\",\n        \"net_amount\": \"<number>\",\n        \"tax_amount\": \"<number>\",\n        \"tax_rate\": \"<number>\",\n        \"gross_amount\": \"<number>\",\n        \"order_number_1\": \"<string>\",\n        \"order_number_2\": \"<string>\",\n        \"delivery_date\": \"<date>\",\n        \"delivery_note\": \"<string>\",\n        \"custom_text_1\": \"<string>\",\n        \"custom_text_2\": \"<string>\",\n        \"custom_text_3\": \"<string>\",\n        \"custom_text_4\": \"<string>\",\n        \"custom_text_5\": \"<string>\",\n        \"custom_text_6\": \"<string>\",\n        \"custom_text_7\": \"<string>\",\n        \"custom_text_8\": \"<string>\",\n        \"custom_text_9\": \"<string>\",\n        \"custom_text_10\": \"<string>\",\n        \"custom_text_11\": \"<string>\",\n        \"custom_text_12\": \"<string>\",\n        \"custom_text_13\": \"<string>\",\n        \"custom_text_14\": \"<string>\",\n        \"custom_text_15\": \"<string>\",\n        \"custom_number_1\": \"<number>\",\n        \"custom_number_2\": \"<number>\",\n        \"custom_number_3\": \"<number>\",\n        \"custom_number_4\": \"<number>\",\n        \"custom_number_5\": \"<number>\",\n        \"custom_number_6\": \"<number>\",\n        \"custom_number_7\": \"<number>\",\n        \"custom_number_8\": \"<number>\",\n        \"custom_number_9\": \"<number>\",\n        \"custom_number_10\": \"<number>\",\n        \"custom_date_1\": \"<date>\",\n        \"custom_date_2\": \"<date>\",\n        \"custom_date_3\": \"<date>\",\n        \"custom_date_4\": \"<date>\",\n        \"custom_date_5\": \"<date>\",\n        \"custom_date_6\": \"<date>\",\n        \"custom_date_7\": \"<date>\",\n        \"custom_date_8\": \"<date>\",\n        \"custom_date_9\": \"<date>\",\n        \"custom_date_10\": \"<date>\"\n      }\n    ],\n    \"addresses\": [\n      {\n        \"address_type\": \"<string>\",\n        \"address_name\": \"<string>\",\n        \"street\": \"<string>\",\n        \"city\": \"<string>\",\n        \"state\": \"<string>\",\n        \"postal_code\": \"<string>\",\n        \"country\": \"<string>\"\n      },\n      {\n        \"address_type\": \"<string>\",\n        \"address_name\": \"<string>\",\n        \"street\": \"<string>\",\n        \"city\": \"<string>\",\n        \"state\": \"<string>\",\n        \"postal_code\": \"<string>\",\n        \"country\": \"<string>\"\n      }\n    ],\n    \"taxes\": [\n      {\n        \"tax_name\": \"<string>\",\n        \"tax_rate\": \"<number>\",\n        \"tax_base_amount\": \"<number>\",\n        \"tax_amount\": \"<number>\",\n        \"tax_description\": \"<string>\"\n      },\n      {\n        \"tax_name\": \"<string>\",\n        \"tax_rate\": \"<number>\",\n        \"tax_base_amount\": \"<number>\",\n        \"tax_amount\": \"<number>\",\n        \"tax_description\": \"<string>\"\n      }\n    ],\n    \"charges\": [\n      {\n        \"charge_name\": \"<string>\",\n        \"charge_amount\": \"<number>\"\n      },\n      {\n        \"charge_name\": \"<string>\",\n        \"charge_amount\": \"<number>\"\n      }\n    ],\n    \"discounts\": [\n      {\n        \"discount_description\": \"<string>\",\n        \"discount_rate\": \"<number>\",\n        \"discount_amount\": \"<number>\",\n        \"discount_due_date\": \"<date>\",\n        \"due_date_basis\": \"<date>\",\n        \"due_date_period_value\": \"<integer>\",\n        \"due_date_period_measure\": \"<string>\"\n      },\n      {\n        \"discount_description\": \"<string>\",\n        \"discount_rate\": \"<number>\",\n        \"discount_amount\": \"<number>\",\n        \"discount_due_date\": \"<date>\",\n        \"due_date_basis\": \"<date>\",\n        \"due_date_period_value\": \"<integer>\",\n        \"due_date_period_measure\": \"<string>\"\n      }\n    ]\n  },\n  \"receiving_inbox\": \"<email>\",\n  \"external_identifier\": \"<string>\",\n  \"attachments\": [\n    {\n      \"filename\": \"<string>\",\n      \"content\": \"<byte>\",\n      \"type\": \"<string>\",\n      \"content_type\": \"<string>\"\n    },\n    {\n      \"filename\": \"<string>\",\n      \"content\": \"<byte>\",\n      \"type\": \"<string>\",\n      \"content_type\": \"<string>\"\n    }\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "id": "6027bc23-3039-438e-a766-f3978f58cb4e",
              "name": "Invoice accepted",
              "originalRequest": {
                "url": {
                  "path": [
                    "v1",
                    "partner",
                    "invoices"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "disabled": false,
                    "description": "(Required) Supplier API key issued by the customer.",
                    "key": "X-API-Key",
                    "value": "<string>"
                  },
                  {
                    "disabled": false,
                    "description": "Optional client-supplied unique key (max 255 chars). Repeats within 24h return the original invoice_token.",
                    "key": "Idempotency-Key",
                    "value": "<string>"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"receiving_inbox\": \"invoices@acme.apreceiving.com\",\n  \"external_identifier\": \"ACME-001\",\n  \"attachments\": [\n    {\n      \"filename\": \"invoice.pdf\",\n      \"content\": \"JVBERi0xLjQKJeLjz9MKMSAwIG9iago8PC9UeXBlL0NhdGFsb2c+PgplbmRvYmoKJSVFT0Y=\",\n      \"content_type\": \"application/pdf\",\n      \"type\": \"IMAGE\"\n    }\n  ],\n  \"invoice\": {\n    \"header\": {\n      \"invoice_number\": \"INV-2024-001\",\n      \"document_type\": \"INVOICE\",\n      \"invoice_date\": \"2024-01-15\",\n      \"due_date\": \"2024-02-15\",\n      \"delivery_date\": \"2024-01-10\",\n      \"order_number_1\": \"PO-12345\",\n      \"reference_number\": \"REF-12345\",\n      \"net_amount\": 1000,\n      \"tax_amount\": 100,\n      \"gross_amount\": 1100,\n      \"currency_code\": \"USD\",\n      \"supplier_name\": \"Acme Corp\",\n      \"supplier_tax_id\": \"TAX-123456\",\n      \"customer_name\": \"Customer LLC\",\n      \"customer_tax_id\": \"TAX-789012\",\n      \"bank_account\": \"1234567890\",\n      \"bank_name\": \"First National Bank\",\n      \"payment_method\": \"WIRE\",\n      \"payment_terms\": \"Net 30\",\n      \"custom_text_1\": \"Cost Center A\",\n      \"custom_number_1\": 42,\n      \"custom_date_1\": \"2024-01-20\",\n      \"ext_reference_1\": \"EXT-REF-1\",\n      \"identifier_field_1\": \"ID-1\"\n    },\n    \"lines\": [\n      {\n        \"invoice_line_number\": 1,\n        \"product_code_1\": \"PROD-001\",\n        \"product_name\": \"Widget\",\n        \"quantity\": 10,\n        \"unit_price\": 25.5,\n        \"unit_of_measure\": \"EA\",\n        \"net_amount\": 255,\n        \"tax_amount\": 25.5,\n        \"tax_rate\": 10,\n        \"gross_amount\": 280.5,\n        \"order_number_1\": \"PO-12345\",\n        \"delivery_date\": \"2024-01-10\"\n      }\n    ],\n    \"addresses\": [\n      {\n        \"address_type\": \"BILLTO\",\n        \"address_name\": \"Headquarters\",\n        \"street\": \"123 Main St\",\n        \"city\": \"New York\",\n        \"state\": \"NY\",\n        \"postal_code\": \"10001\",\n        \"country\": \"USA\"\n      },\n      {\n        \"address_type\": \"SUPPLIER\",\n        \"address_name\": \"Acme HQ\",\n        \"street\": \"456 Vendor Rd\",\n        \"city\": \"Boston\",\n        \"state\": \"MA\",\n        \"postal_code\": \"02101\",\n        \"country\": \"USA\"\n      }\n    ],\n    \"taxes\": [\n      {\n        \"tax_name\": \"Sales Tax\",\n        \"tax_rate\": 10,\n        \"tax_base_amount\": 1000,\n        \"tax_amount\": 100\n      }\n    ],\n    \"charges\": [\n      {\n        \"charge_name\": \"Shipping\",\n        \"charge_amount\": 15\n      }\n    ],\n    \"discounts\": [\n      {\n        \"discount_description\": \"2/10 Net 30\",\n        \"discount_rate\": 2,\n        \"discount_amount\": 20,\n        \"discount_due_date\": \"2024-01-25\"\n      }\n    ]\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "disabled": false,
                  "description": "Present only when an unknown receiving_inbox / external_identifier was silently replaced with the customer default.",
                  "key": "Warning",
                  "value": "string"
                },
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"success\": true,\n  \"data\": {\n    \"invoice_token\": \"750e8400-e29b-41d4-a716-446655440002\",\n    \"external_identifier\": \"ACME-001\"\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "442a5d60-1391-43f5-bbbd-837ac1fe8e5b",
              "name": "Validation error (bad payload, attachment shape, or decode failure)",
              "originalRequest": {
                "url": {
                  "path": [
                    "v1",
                    "partner",
                    "invoices"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "disabled": false,
                    "description": "(Required) Supplier API key issued by the customer.",
                    "key": "X-API-Key",
                    "value": "<string>"
                  },
                  {
                    "disabled": false,
                    "description": "Optional client-supplied unique key (max 255 chars). Repeats within 24h return the original invoice_token.",
                    "key": "Idempotency-Key",
                    "value": "<string>"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"receiving_inbox\": \"invoices@acme.apreceiving.com\",\n  \"external_identifier\": \"ACME-001\",\n  \"attachments\": [\n    {\n      \"filename\": \"invoice.pdf\",\n      \"content\": \"JVBERi0xLjQKJeLjz9MKMSAwIG9iago8PC9UeXBlL0NhdGFsb2c+PgplbmRvYmoKJSVFT0Y=\",\n      \"content_type\": \"application/pdf\",\n      \"type\": \"IMAGE\"\n    }\n  ],\n  \"invoice\": {\n    \"header\": {\n      \"invoice_number\": \"INV-2024-001\",\n      \"document_type\": \"INVOICE\",\n      \"invoice_date\": \"2024-01-15\",\n      \"due_date\": \"2024-02-15\",\n      \"delivery_date\": \"2024-01-10\",\n      \"order_number_1\": \"PO-12345\",\n      \"reference_number\": \"REF-12345\",\n      \"net_amount\": 1000,\n      \"tax_amount\": 100,\n      \"gross_amount\": 1100,\n      \"currency_code\": \"USD\",\n      \"supplier_name\": \"Acme Corp\",\n      \"supplier_tax_id\": \"TAX-123456\",\n      \"customer_name\": \"Customer LLC\",\n      \"customer_tax_id\": \"TAX-789012\",\n      \"bank_account\": \"1234567890\",\n      \"bank_name\": \"First National Bank\",\n      \"payment_method\": \"WIRE\",\n      \"payment_terms\": \"Net 30\",\n      \"custom_text_1\": \"Cost Center A\",\n      \"custom_number_1\": 42,\n      \"custom_date_1\": \"2024-01-20\",\n      \"ext_reference_1\": \"EXT-REF-1\",\n      \"identifier_field_1\": \"ID-1\"\n    },\n    \"lines\": [\n      {\n        \"invoice_line_number\": 1,\n        \"product_code_1\": \"PROD-001\",\n        \"product_name\": \"Widget\",\n        \"quantity\": 10,\n        \"unit_price\": 25.5,\n        \"unit_of_measure\": \"EA\",\n        \"net_amount\": 255,\n        \"tax_amount\": 25.5,\n        \"tax_rate\": 10,\n        \"gross_amount\": 280.5,\n        \"order_number_1\": \"PO-12345\",\n        \"delivery_date\": \"2024-01-10\"\n      }\n    ],\n    \"addresses\": [\n      {\n        \"address_type\": \"BILLTO\",\n        \"address_name\": \"Headquarters\",\n        \"street\": \"123 Main St\",\n        \"city\": \"New York\",\n        \"state\": \"NY\",\n        \"postal_code\": \"10001\",\n        \"country\": \"USA\"\n      },\n      {\n        \"address_type\": \"SUPPLIER\",\n        \"address_name\": \"Acme HQ\",\n        \"street\": \"456 Vendor Rd\",\n        \"city\": \"Boston\",\n        \"state\": \"MA\",\n        \"postal_code\": \"02101\",\n        \"country\": \"USA\"\n      }\n    ],\n    \"taxes\": [\n      {\n        \"tax_name\": \"Sales Tax\",\n        \"tax_rate\": 10,\n        \"tax_base_amount\": 1000,\n        \"tax_amount\": 100\n      }\n    ],\n    \"charges\": [\n      {\n        \"charge_name\": \"Shipping\",\n        \"charge_amount\": 15\n      }\n    ],\n    \"discounts\": [\n      {\n        \"discount_description\": \"2/10 Net 30\",\n        \"discount_rate\": 2,\n        \"discount_amount\": 20,\n        \"discount_due_date\": \"2024-01-25\"\n      }\n    ]\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Bad Request",
              "code": 400,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "text/plain"
                }
              ],
              "body": "",
              "cookie": [],
              "_postman_previewlanguage": "text"
            },
            {
              "id": "85050059-8388-4c5a-b8fb-38537aa45d54",
              "name": "Missing/invalid X-API-Key",
              "originalRequest": {
                "url": {
                  "path": [
                    "v1",
                    "partner",
                    "invoices"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "disabled": false,
                    "description": "(Required) Supplier API key issued by the customer.",
                    "key": "X-API-Key",
                    "value": "<string>"
                  },
                  {
                    "disabled": false,
                    "description": "Optional client-supplied unique key (max 255 chars). Repeats within 24h return the original invoice_token.",
                    "key": "Idempotency-Key",
                    "value": "<string>"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"receiving_inbox\": \"invoices@acme.apreceiving.com\",\n  \"external_identifier\": \"ACME-001\",\n  \"attachments\": [\n    {\n      \"filename\": \"invoice.pdf\",\n      \"content\": \"JVBERi0xLjQKJeLjz9MKMSAwIG9iago8PC9UeXBlL0NhdGFsb2c+PgplbmRvYmoKJSVFT0Y=\",\n      \"content_type\": \"application/pdf\",\n      \"type\": \"IMAGE\"\n    }\n  ],\n  \"invoice\": {\n    \"header\": {\n      \"invoice_number\": \"INV-2024-001\",\n      \"document_type\": \"INVOICE\",\n      \"invoice_date\": \"2024-01-15\",\n      \"due_date\": \"2024-02-15\",\n      \"delivery_date\": \"2024-01-10\",\n      \"order_number_1\": \"PO-12345\",\n      \"reference_number\": \"REF-12345\",\n      \"net_amount\": 1000,\n      \"tax_amount\": 100,\n      \"gross_amount\": 1100,\n      \"currency_code\": \"USD\",\n      \"supplier_name\": \"Acme Corp\",\n      \"supplier_tax_id\": \"TAX-123456\",\n      \"customer_name\": \"Customer LLC\",\n      \"customer_tax_id\": \"TAX-789012\",\n      \"bank_account\": \"1234567890\",\n      \"bank_name\": \"First National Bank\",\n      \"payment_method\": \"WIRE\",\n      \"payment_terms\": \"Net 30\",\n      \"custom_text_1\": \"Cost Center A\",\n      \"custom_number_1\": 42,\n      \"custom_date_1\": \"2024-01-20\",\n      \"ext_reference_1\": \"EXT-REF-1\",\n      \"identifier_field_1\": \"ID-1\"\n    },\n    \"lines\": [\n      {\n        \"invoice_line_number\": 1,\n        \"product_code_1\": \"PROD-001\",\n        \"product_name\": \"Widget\",\n        \"quantity\": 10,\n        \"unit_price\": 25.5,\n        \"unit_of_measure\": \"EA\",\n        \"net_amount\": 255,\n        \"tax_amount\": 25.5,\n        \"tax_rate\": 10,\n        \"gross_amount\": 280.5,\n        \"order_number_1\": \"PO-12345\",\n        \"delivery_date\": \"2024-01-10\"\n      }\n    ],\n    \"addresses\": [\n      {\n        \"address_type\": \"BILLTO\",\n        \"address_name\": \"Headquarters\",\n        \"street\": \"123 Main St\",\n        \"city\": \"New York\",\n        \"state\": \"NY\",\n        \"postal_code\": \"10001\",\n        \"country\": \"USA\"\n      },\n      {\n        \"address_type\": \"SUPPLIER\",\n        \"address_name\": \"Acme HQ\",\n        \"street\": \"456 Vendor Rd\",\n        \"city\": \"Boston\",\n        \"state\": \"MA\",\n        \"postal_code\": \"02101\",\n        \"country\": \"USA\"\n      }\n    ],\n    \"taxes\": [\n      {\n        \"tax_name\": \"Sales Tax\",\n        \"tax_rate\": 10,\n        \"tax_base_amount\": 1000,\n        \"tax_amount\": 100\n      }\n    ],\n    \"charges\": [\n      {\n        \"charge_name\": \"Shipping\",\n        \"charge_amount\": 15\n      }\n    ],\n    \"discounts\": [\n      {\n        \"discount_description\": \"2/10 Net 30\",\n        \"discount_rate\": 2,\n        \"discount_amount\": 20,\n        \"discount_due_date\": \"2024-01-25\"\n      }\n    ]\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Unauthorized",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "text/plain"
                }
              ],
              "body": "",
              "cookie": [],
              "_postman_previewlanguage": "text"
            },
            {
              "id": "53acbb19-8913-4d2e-85e5-9614ae548766",
              "name": "API user lacks SUBMIT_SUPPLIER_INVOICE permission",
              "originalRequest": {
                "url": {
                  "path": [
                    "v1",
                    "partner",
                    "invoices"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "disabled": false,
                    "description": "(Required) Supplier API key issued by the customer.",
                    "key": "X-API-Key",
                    "value": "<string>"
                  },
                  {
                    "disabled": false,
                    "description": "Optional client-supplied unique key (max 255 chars). Repeats within 24h return the original invoice_token.",
                    "key": "Idempotency-Key",
                    "value": "<string>"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"receiving_inbox\": \"invoices@acme.apreceiving.com\",\n  \"external_identifier\": \"ACME-001\",\n  \"attachments\": [\n    {\n      \"filename\": \"invoice.pdf\",\n      \"content\": \"JVBERi0xLjQKJeLjz9MKMSAwIG9iago8PC9UeXBlL0NhdGFsb2c+PgplbmRvYmoKJSVFT0Y=\",\n      \"content_type\": \"application/pdf\",\n      \"type\": \"IMAGE\"\n    }\n  ],\n  \"invoice\": {\n    \"header\": {\n      \"invoice_number\": \"INV-2024-001\",\n      \"document_type\": \"INVOICE\",\n      \"invoice_date\": \"2024-01-15\",\n      \"due_date\": \"2024-02-15\",\n      \"delivery_date\": \"2024-01-10\",\n      \"order_number_1\": \"PO-12345\",\n      \"reference_number\": \"REF-12345\",\n      \"net_amount\": 1000,\n      \"tax_amount\": 100,\n      \"gross_amount\": 1100,\n      \"currency_code\": \"USD\",\n      \"supplier_name\": \"Acme Corp\",\n      \"supplier_tax_id\": \"TAX-123456\",\n      \"customer_name\": \"Customer LLC\",\n      \"customer_tax_id\": \"TAX-789012\",\n      \"bank_account\": \"1234567890\",\n      \"bank_name\": \"First National Bank\",\n      \"payment_method\": \"WIRE\",\n      \"payment_terms\": \"Net 30\",\n      \"custom_text_1\": \"Cost Center A\",\n      \"custom_number_1\": 42,\n      \"custom_date_1\": \"2024-01-20\",\n      \"ext_reference_1\": \"EXT-REF-1\",\n      \"identifier_field_1\": \"ID-1\"\n    },\n    \"lines\": [\n      {\n        \"invoice_line_number\": 1,\n        \"product_code_1\": \"PROD-001\",\n        \"product_name\": \"Widget\",\n        \"quantity\": 10,\n        \"unit_price\": 25.5,\n        \"unit_of_measure\": \"EA\",\n        \"net_amount\": 255,\n        \"tax_amount\": 25.5,\n        \"tax_rate\": 10,\n        \"gross_amount\": 280.5,\n        \"order_number_1\": \"PO-12345\",\n        \"delivery_date\": \"2024-01-10\"\n      }\n    ],\n    \"addresses\": [\n      {\n        \"address_type\": \"BILLTO\",\n        \"address_name\": \"Headquarters\",\n        \"street\": \"123 Main St\",\n        \"city\": \"New York\",\n        \"state\": \"NY\",\n        \"postal_code\": \"10001\",\n        \"country\": \"USA\"\n      },\n      {\n        \"address_type\": \"SUPPLIER\",\n        \"address_name\": \"Acme HQ\",\n        \"street\": \"456 Vendor Rd\",\n        \"city\": \"Boston\",\n        \"state\": \"MA\",\n        \"postal_code\": \"02101\",\n        \"country\": \"USA\"\n      }\n    ],\n    \"taxes\": [\n      {\n        \"tax_name\": \"Sales Tax\",\n        \"tax_rate\": 10,\n        \"tax_base_amount\": 1000,\n        \"tax_amount\": 100\n      }\n    ],\n    \"charges\": [\n      {\n        \"charge_name\": \"Shipping\",\n        \"charge_amount\": 15\n      }\n    ],\n    \"discounts\": [\n      {\n        \"discount_description\": \"2/10 Net 30\",\n        \"discount_rate\": 2,\n        \"discount_amount\": 20,\n        \"discount_due_date\": \"2024-01-25\"\n      }\n    ]\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Forbidden",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "text/plain"
                }
              ],
              "body": "",
              "cookie": [],
              "_postman_previewlanguage": "text"
            }
          ],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        }
      ],
      "event": []
    },
    {
      "id": "6eb357ff-ea70-4ff7-83b9-b03de6cb4d14",
      "name": "Supplier Access",
      "description": {
        "content": "",
        "type": "text/plain"
      },
      "item": [
        {
          "id": "d96ad1ee-7b04-4d85-84ee-1af77327452e",
          "name": "Request a regen invitation by email",
          "request": {
            "name": "Request a regen invitation by email",
            "description": {
              "content": "Sends a magic-link invitation email to the address on file for any partner account registered to it. Used when the partner lands on the regen page without a token (e.g. lost their invitation link).\n\nAnti-enumeration: returns the same vague success whether or not the email matches any account. Per-IP rate limited.",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "v1",
                "partner",
                "supplier-access",
                "request"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [],
              "variable": []
            },
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "POST",
            "auth": {
              "type": "noauth"
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"email\": \"<email>\",\n  \"customer_url_name\": \"<string>\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "id": "9d5ee2c9-655c-470a-b394-c45331fedc13",
              "name": "Vague success (same shape regardless of whether the email matched).",
              "originalRequest": {
                "url": {
                  "path": [
                    "v1",
                    "partner",
                    "supplier-access",
                    "request"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"email\": \"integrations@acme.example\",\n  \"customer_url_name\": \"acme\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"success\": true,\n  \"data\": {\n    \"message\": \"If this email is registered, an invitation has been sent.\"\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "7007e439-701b-4256-a6e9-a82f60e0063a",
              "name": "Rate limit exceeded.",
              "originalRequest": {
                "url": {
                  "path": [
                    "v1",
                    "partner",
                    "supplier-access",
                    "request"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"email\": \"integrations@acme.example\",\n  \"customer_url_name\": \"acme\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Too Many Requests",
              "code": 429,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "text/plain"
                }
              ],
              "body": "",
              "cookie": [],
              "_postman_previewlanguage": "text"
            }
          ],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        },
        {
          "id": "6b4fb50d-6b20-4d12-b596-7e86206016af",
          "name": "Request the 6-digit verification code",
          "request": {
            "name": "Request the 6-digit verification code",
            "description": {
              "content": "Called after the partner clicks the magic link in their invitation email and lands on the regen page. Mints a fresh 6-digit code, stores its hash on the session, and emails the code to the address on file.\n\nThe invitation email contains the magic link only; this endpoint triggers the second email so a partner who never visits the page does not receive an unsolicited code.",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "v1",
                "partner",
                "supplier-access",
                "request-code"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [],
              "variable": []
            },
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "POST",
            "auth": {
              "type": "noauth"
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"token\": \"<string>\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "id": "e75fc38d-0c62-432b-ad31-4f0c8ecf3db6",
              "name": "Code minted + emailed.",
              "originalRequest": {
                "url": {
                  "path": [
                    "v1",
                    "partner",
                    "supplier-access",
                    "request-code"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"token\": \"mt_AbCdEf...\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"success\": true,\n  \"data\": {\n    \"message\": \"A verification code has been sent to the email on file.\",\n    \"sent_to_hint\": \"i***s@acme.example\"\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "6902e942-fe89-4077-9f75-cd183d4c3f79",
              "name": "Missing token.",
              "originalRequest": {
                "url": {
                  "path": [
                    "v1",
                    "partner",
                    "supplier-access",
                    "request-code"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"token\": \"mt_AbCdEf...\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Bad Request",
              "code": 400,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "text/plain"
                }
              ],
              "body": "",
              "cookie": [],
              "_postman_previewlanguage": "text"
            },
            {
              "id": "067de964-fb34-451d-8799-623f66168ada",
              "name": "Invalid or expired magic token.",
              "originalRequest": {
                "url": {
                  "path": [
                    "v1",
                    "partner",
                    "supplier-access",
                    "request-code"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"token\": \"mt_AbCdEf...\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Unauthorized",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "text/plain"
                }
              ],
              "body": "",
              "cookie": [],
              "_postman_previewlanguage": "text"
            },
            {
              "id": "ee8323f1-510c-4763-9a4a-0c40b330417a",
              "name": "Session already used or invitation expired.",
              "originalRequest": {
                "url": {
                  "path": [
                    "v1",
                    "partner",
                    "supplier-access",
                    "request-code"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"token\": \"mt_AbCdEf...\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Gone",
              "code": 410,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "text/plain"
                }
              ],
              "body": "",
              "cookie": [],
              "_postman_previewlanguage": "text"
            },
            {
              "id": "fccc720a-e112-44b8-813f-ca9db8af1058",
              "name": "Session locked after 5 failed verification attempts.",
              "originalRequest": {
                "url": {
                  "path": [
                    "v1",
                    "partner",
                    "supplier-access",
                    "request-code"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"token\": \"mt_AbCdEf...\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Locked (WebDAV) (RFC 4918)",
              "code": 423,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "text/plain"
                }
              ],
              "body": "",
              "cookie": [],
              "_postman_previewlanguage": "text"
            },
            {
              "id": "76925213-b268-42f1-b8b7-000890f10db3",
              "name": "Rate limit exceeded.",
              "originalRequest": {
                "url": {
                  "path": [
                    "v1",
                    "partner",
                    "supplier-access",
                    "request-code"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"token\": \"mt_AbCdEf...\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Too Many Requests",
              "code": 429,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "text/plain"
                }
              ],
              "body": "",
              "cookie": [],
              "_postman_previewlanguage": "text"
            }
          ],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        },
        {
          "id": "2faa8641-8dfd-4f5b-a0e0-9ba8e6de21b8",
          "name": "Validate the magic token + code",
          "request": {
            "name": "Validate the magic token + code",
            "description": {
              "content": "Exchanges the magic token and the 6-digit code for a short-lived claim_token used by /mint. Increments the per-session attempt counter on miss; 5 misses lock the session.",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "v1",
                "partner",
                "supplier-access",
                "validate"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [],
              "variable": []
            },
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "POST",
            "auth": {
              "type": "noauth"
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"token\": \"<string>\",\n  \"code\": \"<string>\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "id": "523e2a5c-22d5-4e7a-bd3f-56b0fbc3d7f2",
              "name": "Validated. Use the returned claim_token at /mint.",
              "originalRequest": {
                "url": {
                  "path": [
                    "v1",
                    "partner",
                    "supplier-access",
                    "validate"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"token\": \"mt_AbCdEf...\",\n  \"code\": \"482917\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"success\": true,\n  \"data\": {\n    \"claim_token\": \"ct_XyZ...\",\n    \"account_id\": \"d19c2099-b75e-277b-598b-82d24bac7f1f\",\n    \"account_name\": \"string\",\n    \"email\": \"jZb5abXpDq8sp@c.elw\",\n    \"expires_at\": \"1953-02-20T21:50:00.700Z\"\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "1de7d236-9dd7-49f4-9953-69cfdbed2543",
              "name": "Missing token or code.",
              "originalRequest": {
                "url": {
                  "path": [
                    "v1",
                    "partner",
                    "supplier-access",
                    "validate"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"token\": \"mt_AbCdEf...\",\n  \"code\": \"482917\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Bad Request",
              "code": 400,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "text/plain"
                }
              ],
              "body": "",
              "cookie": [],
              "_postman_previewlanguage": "text"
            },
            {
              "id": "babc896b-b7ed-4b3a-a19f-d2f087f88152",
              "name": "Bad code (attempt counter incremented).",
              "originalRequest": {
                "url": {
                  "path": [
                    "v1",
                    "partner",
                    "supplier-access",
                    "validate"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"token\": \"mt_AbCdEf...\",\n  \"code\": \"482917\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Unauthorized",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "text/plain"
                }
              ],
              "body": "",
              "cookie": [],
              "_postman_previewlanguage": "text"
            },
            {
              "id": "a07a8365-9b01-4ffc-9b35-1e379cde4e73",
              "name": "Session expired or already used.",
              "originalRequest": {
                "url": {
                  "path": [
                    "v1",
                    "partner",
                    "supplier-access",
                    "validate"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"token\": \"mt_AbCdEf...\",\n  \"code\": \"482917\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Gone",
              "code": 410,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "text/plain"
                }
              ],
              "body": "",
              "cookie": [],
              "_postman_previewlanguage": "text"
            },
            {
              "id": "b22af09d-201e-42cc-b080-50af5b65a9d5",
              "name": "Session locked after 5 failed attempts.",
              "originalRequest": {
                "url": {
                  "path": [
                    "v1",
                    "partner",
                    "supplier-access",
                    "validate"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"token\": \"mt_AbCdEf...\",\n  \"code\": \"482917\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Locked (WebDAV) (RFC 4918)",
              "code": 423,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "text/plain"
                }
              ],
              "body": "",
              "cookie": [],
              "_postman_previewlanguage": "text"
            },
            {
              "id": "0c24b5f2-b1c5-4e01-b566-64ee6bc28388",
              "name": "Rate limit exceeded.",
              "originalRequest": {
                "url": {
                  "path": [
                    "v1",
                    "partner",
                    "supplier-access",
                    "validate"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"token\": \"mt_AbCdEf...\",\n  \"code\": \"482917\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Too Many Requests",
              "code": 429,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "text/plain"
                }
              ],
              "body": "",
              "cookie": [],
              "_postman_previewlanguage": "text"
            }
          ],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        },
        {
          "id": "c3106a4c-83af-4000-9430-1b869051098d",
          "name": "Claim (mint) a new API key",
          "request": {
            "name": "Claim (mint) a new API key",
            "description": {
              "content": "Issues a new api_key + rotation_secret under the partner account bound to the regen session. The plaintext credentials are returned ONCE in the response body and never shown again. A partner_key_issued notification fires to every notification email on the account (no key in the body).\n\n`expires_interval_days` selects the key lifetime: omit for the default (90 days / 3 months), pass one of {30,90,180,365}, or null for never. Rotations later default to the same interval unless overridden.",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "v1",
                "partner",
                "supplier-access",
                "mint"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [],
              "variable": []
            },
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "POST",
            "auth": {
              "type": "noauth"
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"claim_token\": \"<string>\",\n  \"label\": \"<string>\",\n  \"expires_interval_days\": \"<integer>\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "id": "33b42268-a20a-485d-ae69-e79c072f2ded",
              "name": "Key issued. Save credentials NOW — they will not be shown again.",
              "originalRequest": {
                "url": {
                  "path": [
                    "v1",
                    "partner",
                    "supplier-access",
                    "mint"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"claim_token\": \"ct_XyZ...\",\n  \"label\": \"prod-ingest\",\n  \"expires_interval_days\": 90\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Created",
              "code": 201,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"success\": true,\n  \"data\": {\n    \"id\": \"01d28d61-758c-a820-4d6d-4ae97ac7024e\",\n    \"api_key\": \"sk_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n    \"rotation_secret\": \"rs_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n    \"label\": \"string\",\n    \"prefix\": \"sk_x\",\n    \"last_4\": \"xxxx\",\n    \"created_at\": \"1960-09-05T05:51:46.521Z\",\n    \"expires_at\": \"1954-08-27T10:27:21.036Z\",\n    \"expires_interval_days\": 90\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "46c88446-69a6-4268-aadc-b6366d564e5b",
              "name": "Validation error (missing fields, bad label length, bad interval).",
              "originalRequest": {
                "url": {
                  "path": [
                    "v1",
                    "partner",
                    "supplier-access",
                    "mint"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"claim_token\": \"ct_XyZ...\",\n  \"label\": \"prod-ingest\",\n  \"expires_interval_days\": 90\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Bad Request",
              "code": 400,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "text/plain"
                }
              ],
              "body": "",
              "cookie": [],
              "_postman_previewlanguage": "text"
            },
            {
              "id": "57a7db72-ade8-4b78-9ca5-613e11628422",
              "name": "Invalid or expired claim_token.",
              "originalRequest": {
                "url": {
                  "path": [
                    "v1",
                    "partner",
                    "supplier-access",
                    "mint"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"claim_token\": \"ct_XyZ...\",\n  \"label\": \"prod-ingest\",\n  \"expires_interval_days\": 90\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Unauthorized",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "text/plain"
                }
              ],
              "body": "",
              "cookie": [],
              "_postman_previewlanguage": "text"
            },
            {
              "id": "8799a0c0-fd29-4e32-bdda-b203da0ea484",
              "name": "A key with the given label already exists in this account.",
              "originalRequest": {
                "url": {
                  "path": [
                    "v1",
                    "partner",
                    "supplier-access",
                    "mint"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"claim_token\": \"ct_XyZ...\",\n  \"label\": \"prod-ingest\",\n  \"expires_interval_days\": 90\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Conflict",
              "code": 409,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "text/plain"
                }
              ],
              "body": "",
              "cookie": [],
              "_postman_previewlanguage": "text"
            },
            {
              "id": "6a03c5b1-4169-4e3c-bddc-ea676aa70f70",
              "name": "Session used or account no longer active.",
              "originalRequest": {
                "url": {
                  "path": [
                    "v1",
                    "partner",
                    "supplier-access",
                    "mint"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"claim_token\": \"ct_XyZ...\",\n  \"label\": \"prod-ingest\",\n  \"expires_interval_days\": 90\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Gone",
              "code": 410,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "text/plain"
                }
              ],
              "body": "",
              "cookie": [],
              "_postman_previewlanguage": "text"
            },
            {
              "id": "f5d34204-828d-4e44-a9b2-ea83ae5f95ee",
              "name": "Rate limit exceeded.",
              "originalRequest": {
                "url": {
                  "path": [
                    "v1",
                    "partner",
                    "supplier-access",
                    "mint"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"claim_token\": \"ct_XyZ...\",\n  \"label\": \"prod-ingest\",\n  \"expires_interval_days\": 90\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Too Many Requests",
              "code": 429,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "text/plain"
                }
              ],
              "body": "",
              "cookie": [],
              "_postman_previewlanguage": "text"
            }
          ],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        },
        {
          "id": "b8e8a1cd-3b07-4402-b133-9232c3e602b4",
          "name": "Read email preferences (token-authed)",
          "request": {
            "name": "Read email preferences (token-authed)",
            "description": {
              "content": "Returns the per-recipient email opt-out toggles for the (account, email) pair identified by the unsubscribe token. The token comes from the manage-preferences link in any reminder email.",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "v1",
                "partner",
                "supplier-access",
                "email-preferences"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [
                {
                  "disabled": false,
                  "key": "token",
                  "value": "<string>",
                  "description": "(Required) Opaque unsubscribe_token (one per (account, email))."
                }
              ],
              "variable": []
            },
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "GET",
            "auth": {
              "type": "noauth"
            }
          },
          "response": [
            {
              "id": "8a6cf83a-3dfb-4e04-88e2-ee4dc1d806f5",
              "name": "Current preferences for this recipient.",
              "originalRequest": {
                "url": {
                  "path": [
                    "v1",
                    "partner",
                    "supplier-access",
                    "email-preferences"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [
                    {
                      "key": "token",
                      "value": "<string>"
                    }
                  ],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"success\": true,\n  \"data\": {\n    \"email\": \"1SKfUYJdLsc3L@wOPe.co\",\n    \"account_name\": \"string\",\n    \"customer_name\": \"string\",\n    \"preferences\": {\n      \"reminder_advance\": false,\n      \"reminder_imminent\": true,\n      \"reminder_expired\": true,\n      \"key_issued\": true\n    }\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "ae225e7d-d661-43b9-a81a-44580db1e134",
              "name": "Missing token.",
              "originalRequest": {
                "url": {
                  "path": [
                    "v1",
                    "partner",
                    "supplier-access",
                    "email-preferences"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [
                    {
                      "key": "token",
                      "value": "<string>"
                    }
                  ],
                  "variable": []
                },
                "method": "GET",
                "body": {}
              },
              "status": "Bad Request",
              "code": 400,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "text/plain"
                }
              ],
              "body": "",
              "cookie": [],
              "_postman_previewlanguage": "text"
            },
            {
              "id": "8fc2a635-8da7-4e2a-a0f2-57057187b2af",
              "name": "Token does not match any preferences row.",
              "originalRequest": {
                "url": {
                  "path": [
                    "v1",
                    "partner",
                    "supplier-access",
                    "email-preferences"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [
                    {
                      "key": "token",
                      "value": "<string>"
                    }
                  ],
                  "variable": []
                },
                "method": "GET",
                "body": {}
              },
              "status": "Not Found",
              "code": 404,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "text/plain"
                }
              ],
              "body": "",
              "cookie": [],
              "_postman_previewlanguage": "text"
            },
            {
              "id": "40e7bba8-a96b-46e4-a6d0-a2418a2312fc",
              "name": "Rate limit exceeded.",
              "originalRequest": {
                "url": {
                  "path": [
                    "v1",
                    "partner",
                    "supplier-access",
                    "email-preferences"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [
                    {
                      "key": "token",
                      "value": "<string>"
                    }
                  ],
                  "variable": []
                },
                "method": "GET",
                "body": {}
              },
              "status": "Too Many Requests",
              "code": 429,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "text/plain"
                }
              ],
              "body": "",
              "cookie": [],
              "_postman_previewlanguage": "text"
            }
          ],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        },
        {
          "id": "62174cab-0c0d-4caf-8256-c45fa28a8f13",
          "name": "Update email preferences (token-authed)",
          "request": {
            "name": "Update email preferences (token-authed)",
            "description": {
              "content": "Partial update — only the fields included in `preferences` are changed. Unknown keys are ignored. The token authenticates the request (no API key, no login).",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "v1",
                "partner",
                "supplier-access",
                "email-preferences"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [],
              "variable": []
            },
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "POST",
            "auth": {
              "type": "noauth"
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"token\": \"<string>\",\n  \"preferences\": {\n    \"reminder_advance\": \"<boolean>\",\n    \"reminder_imminent\": \"<boolean>\",\n    \"reminder_expired\": \"<boolean>\",\n    \"key_issued\": \"<boolean>\"\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "id": "072b6e97-1642-4d02-ad39-b642d06cabff",
              "name": "Saved. Returns the full updated preference set.",
              "originalRequest": {
                "url": {
                  "path": [
                    "v1",
                    "partner",
                    "supplier-access",
                    "email-preferences"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"token\": \"<string>\",\n  \"preferences\": {\n    \"reminder_imminent\": false\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"success\": true,\n  \"data\": {\n    \"preferences\": {\n      \"reminder_advance\": false,\n      \"reminder_imminent\": true,\n      \"reminder_expired\": false,\n      \"key_issued\": false\n    }\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "71d9c6ac-6c78-4988-926b-444f09680965",
              "name": "Missing token / preferences object, or a value is not a boolean.",
              "originalRequest": {
                "url": {
                  "path": [
                    "v1",
                    "partner",
                    "supplier-access",
                    "email-preferences"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"token\": \"<string>\",\n  \"preferences\": {\n    \"reminder_imminent\": false\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Bad Request",
              "code": 400,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "text/plain"
                }
              ],
              "body": "",
              "cookie": [],
              "_postman_previewlanguage": "text"
            },
            {
              "id": "f79b33a9-2c23-484b-b0ff-c7a799dd9cab",
              "name": "Token does not match any preferences row.",
              "originalRequest": {
                "url": {
                  "path": [
                    "v1",
                    "partner",
                    "supplier-access",
                    "email-preferences"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"token\": \"<string>\",\n  \"preferences\": {\n    \"reminder_imminent\": false\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Not Found",
              "code": 404,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "text/plain"
                }
              ],
              "body": "",
              "cookie": [],
              "_postman_previewlanguage": "text"
            },
            {
              "id": "94db4f1e-e87a-4431-a78b-ac8e15943d03",
              "name": "Rate limit exceeded.",
              "originalRequest": {
                "url": {
                  "path": [
                    "v1",
                    "partner",
                    "supplier-access",
                    "email-preferences"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"token\": \"<string>\",\n  \"preferences\": {\n    \"reminder_imminent\": false\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Too Many Requests",
              "code": 429,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "text/plain"
                }
              ],
              "body": "",
              "cookie": [],
              "_postman_previewlanguage": "text"
            }
          ],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        }
      ],
      "event": []
    }
  ],
  "event": [],
  "variable": [
    {
      "key": "baseUrl",
      "value": "https://dev-api.apreceiving.com/api",
      "type": "string",
      "description": "API host + /api base path. Swap to https://test-api.apreceiving.com/api or https://api.apreceiving.com/api."
    },
    {
      "key": "apiKey",
      "value": "",
      "type": "string",
      "description": "Your partner API key. Sent as X-API-Key on Partner API requests."
    },
    {
      "key": "rotationSecret",
      "value": "",
      "type": "string",
      "description": "Per-key rotation secret. Only needed by the M2M self-rotate request (X-Rotation-Secret)."
    }
  ],
  "auth": {
    "type": "apikey",
    "apikey": [
      {
        "key": "key",
        "value": "X-API-Key",
        "type": "string"
      },
      {
        "key": "value",
        "value": "{{apiKey}}",
        "type": "string"
      },
      {
        "key": "in",
        "value": "header",
        "type": "string"
      }
    ]
  },
  "info": {
    "_postman_id": "da9c0504-986a-4e7c-bea7-9011020779d1",
    "name": "Nuntiq Supplier / Partner API",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json",
    "description": "Partner / supplier integration surface for a Nuntiq tenant.\n\nTwo groups:\n- **Partner API** — authenticated with your partner key in `X-API-Key`. Submit invoices as JSON, submit structured e-invoice files (UBL / CII / Factur-X / EDIFACT / CSV) as multipart, and manage your own keys.\n- **Supplier Access** — the public key-claim and email-preference flow. These need no API key.\n\nFill in the `apiKey` variable and it is inherited by every Partner API request. The self-rotate request additionally needs `rotationSecret`.\n\nThe `baseUrl` variable defaults to the development host. Point it at test-api / api when you are ready."
  }
}
