{
  "openapi": "3.0.3",
  "info": {
    "title": "Lexoh API Reference",
    "description": "HTTP operations for Lexoh site operations, access control, video, commercial workflows and finance. Availability depends on your installed server version and enabled services.\n\n## Authentication\n\nSign in with `POST /v1/auth/login`, then send the returned session in the `SessionID` header. The `session` cookie and `Authorization: Bearer SESSION_TOKEN` are also accepted by session-based handlers. If MFA is enabled, validate it before using protected operations. Endpoint permissions still apply.\n\n## Request conventions\n\nUse the method shown for each operation: many reads use POST, while creation commonly uses PUT. JSON field names, media types and parameters are case-sensitive. Read both the HTTP status and the response body. Some older handlers return HTTP 500 for authentication or permission failures.\n\n## Contract coverage\n\nRequest and response schemas are included where available. An operation without a schema is not an indication that it accepts an empty request. Contact Lexoh for the contract for your installed version when details are not specified.",
    "version": "2.0.0",
    "contact": {
      "name": "Lexoh Inc.",
      "url": "https://lexoh.com"
    }
  },
  "servers": [
    {
      "url": "https://your-lexoh-server.app.lexoh.com:3000/",
      "description": "Your assigned Lexoh HTTPS server"
    }
  ],
  "tags": [
    {
      "name": "Authentication",
      "description": "Sign-in, sessions and multi-factor authentication."
    },
    {
      "name": "Single Sign-On",
      "description": "Identity providers, OAuth callbacks and SAML sessions."
    },
    {
      "name": "Access Cards",
      "description": "Access credentials, lifecycle, delivery and prepaid credit movements."
    },
    {
      "name": "Entitlement Banks",
      "description": "Shared entitlements, access assignments, credits, consumption and history."
    },
    {
      "name": "Devices",
      "description": "Device records, configuration, telemetry and lane commands."
    },
    {
      "name": "Network Agents",
      "description": "Network state, diagnostics, telemetry and command history."
    },
    {
      "name": "Cameras & Evidence",
      "description": "Camera configuration, events, snapshots, video clips and evidence."
    },
    {
      "name": "Sites",
      "description": "Physical sites, equipment summaries and operational features."
    },
    {
      "name": "Zones",
      "description": "Zone configuration, capacity and availability."
    },
    {
      "name": "Entries & Exits",
      "description": "Passage records, filters, reports and snow-entry measurements."
    },
    {
      "name": "Vehicles",
      "description": "Vehicles, operational profiles and versioned load profiles."
    },
    {
      "name": "Customers",
      "description": "Customer profiles, notes, documents and relationship workspaces."
    },
    {
      "name": "Companies",
      "description": "Company records and selector options."
    },
    {
      "name": "Contacts",
      "description": "Customer and supplier contacts, activity and duplicate handling."
    },
    {
      "name": "CRM Follow-Ups",
      "description": "Follow-up activities, assignments and outcomes."
    },
    {
      "name": "Suppliers",
      "description": "Supplier records, reminders and email activity."
    },
    {
      "name": "Users",
      "description": "User profiles, invitations, MFA and notifications."
    },
    {
      "name": "Roles & Permissions",
      "description": "Roles and account permissions."
    },
    {
      "name": "Parking Pricing",
      "description": "Parking rates, rules and fee calculation."
    },
    {
      "name": "Promotions & Vouchers",
      "description": "Promotions, voucher codes and customer delivery."
    },
    {
      "name": "Transactions",
      "description": "Payment records, refunds, receipts and exports."
    },
    {
      "name": "Payment Processors",
      "description": "Payment processor configuration and availability."
    },
    {
      "name": "Customer Portal",
      "description": "Customer-facing invoice, payment and receipt operations."
    },
    {
      "name": "Sales & Purchasing",
      "description": "Quotes, invoices, credits, fulfillment, payments and recurring documents."
    },
    {
      "name": "Products & Inventory",
      "description": "Products, kits, prices, stock locations and inventory movements."
    },
    {
      "name": "Accounting",
      "description": "Accounts, journals, periods, taxes and financial reports."
    },
    {
      "name": "Banking & Reconciliation",
      "description": "Bank connections, imports, payment workflows and reconciliation."
    },
    {
      "name": "Payroll",
      "description": "Employees, payroll runs, paystubs, remittances and EFT files."
    },
    {
      "name": "Measured Pricing & Snow Billing",
      "description": "Exact measured pricing, billing previews, immutable documents and U4 outbox state."
    },
    {
      "name": "AI & Conversations",
      "description": "AI requests, streaming, route-backed agents, conversations and usage."
    },
    {
      "name": "MCP & OAuth",
      "description": "Model Context Protocol transports, discovery and authorization."
    },
    {
      "name": "Analytics",
      "description": "Revenue, traffic, comparisons and activity breakdowns."
    },
    {
      "name": "Dashboards",
      "description": "Aggregated operations, device, incident, revenue and site views."
    },
    {
      "name": "Statistics",
      "description": "Occupancy, entries, exits, devices and financial summaries."
    },
    {
      "name": "Alerts",
      "description": "System alerts and exports."
    },
    {
      "name": "Events",
      "description": "Event records and customer-facing operational activity."
    },
    {
      "name": "Audit & History",
      "description": "Entity changes, field-level history and audit records."
    },
    {
      "name": "Incidents",
      "description": "Incident queues, commands, workspaces and evidence."
    },
    {
      "name": "Projects & Work Orders",
      "description": "Projects, teams, tasks, work orders, time and billing."
    },
    {
      "name": "Automated Tasks",
      "description": "Scheduled actions, simulations, execution and run history."
    },
    {
      "name": "Schedules",
      "description": "Time windows and access schedules."
    },
    {
      "name": "Holidays",
      "description": "Holiday rules and calendar exceptions."
    },
    {
      "name": "Tags",
      "description": "Record labels and selector options."
    },
    {
      "name": "Reports & Exports",
      "description": "Reports, PDF generation and durable export jobs."
    },
    {
      "name": "Documents",
      "description": "Document metadata, uploads and downloads."
    },
    {
      "name": "Email & SMS",
      "description": "Delivery queues, logs and messaging summaries."
    },
    {
      "name": "Configuration",
      "description": "System configuration and mail testing."
    },
    {
      "name": "Search",
      "description": "Cross-entity search and index maintenance."
    },
    {
      "name": "EV Charging",
      "description": "Charging availability, session start, status and stop."
    },
    {
      "name": "QR Codes",
      "description": "QR image generation."
    },
    {
      "name": "Health & Version",
      "description": "Server health, dependency readiness and API version."
    }
  ],
  "paths": {
    "/": {
      "get": {
        "operationId": "root",
        "summary": "Server root health check",
        "tags": [
          "Health & Version"
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessResponse"
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\nNo additional role permission for this operation. The stated authentication requirements still apply.\n\nReturns a simple JSON indicating the server process is running. Use /health/live or /health/ready for Kubernetes probes.",
        "security": [],
        "x-lexoh-permissions": {
          "status": "no-role-permission",
          "required": [],
          "conditional": [],
          "description": {
            "en": "No additional role permission for this operation. The stated authentication requirements still apply.",
            "fr": "Aucune permission de rôle supplémentaire pour cette opération. Les exigences d’authentification indiquées restent applicables."
          }
        }
      }
    },
    "/.well-known/oauth-authorization-server": {
      "get": {
        "operationId": "get_\\.well-known_oauth-authorization-server",
        "summary": "Mcp Authorization Server Metadata",
        "tags": [
          "MCP & OAuth"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version."
      }
    },
    "/.well-known/oauth-protected-resource": {
      "get": {
        "operationId": "get_\\.well-known_oauth-protected-resource",
        "summary": "MCP OAuth discovery",
        "tags": [
          "MCP & OAuth"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nOAuth metadata endpoints used by remote MCP clients to discover token issuance and protected-resource details.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/.well-known/oauth-protected-resource/v1/mcp": {
      "get": {
        "operationId": "get_\\.well-known_oauth-protected-resource_v1_mcp",
        "summary": "Mcp Protected Resource Metadata",
        "tags": [
          "MCP & OAuth"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version."
      }
    },
    "/health/live": {
      "get": {
        "operationId": "healthLive",
        "summary": "Kubernetes liveness probe",
        "tags": [
          "Health & Version"
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessResponse"
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\nNo additional role permission for this operation. The stated authentication requirements still apply.\n\nReturns 200 with {\"alive\": true} if the server process is running. Used by Kubernetes to determine if the pod should be restarted.",
        "security": [],
        "x-lexoh-permissions": {
          "status": "no-role-permission",
          "required": [],
          "conditional": [],
          "description": {
            "en": "No additional role permission for this operation. The stated authentication requirements still apply.",
            "fr": "Aucune permission de rôle supplémentaire pour cette opération. Les exigences d’authentification indiquées restent applicables."
          }
        }
      }
    },
    "/health/ready": {
      "get": {
        "operationId": "healthReady",
        "summary": "Kubernetes readiness probe",
        "tags": [
          "Health & Version"
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessResponse"
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\nNo additional role permission for this operation. The stated authentication requirements still apply.\n\nChecks both PostgreSQL and Redis connectivity. Returns 200 when both are reachable, 503 otherwise. Response includes individual status for each dependency.",
        "security": [],
        "x-lexoh-permissions": {
          "status": "no-role-permission",
          "required": [],
          "conditional": [],
          "description": {
            "en": "No additional role permission for this operation. The stated authentication requirements still apply.",
            "fr": "Aucune permission de rôle supplémentaire pour cette opération. Les exigences d’authentification indiquées restent applicables."
          }
        }
      }
    },
    "/oauth/authorize": {
      "get": {
        "operationId": "get_oauth_authorize",
        "summary": "Mcp O Auth Authorize",
        "tags": [
          "MCP & OAuth"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version."
      }
    },
    "/oauth/token": {
      "post": {
        "operationId": "post_oauth_token",
        "summary": "Mcp O Auth Token",
        "tags": [
          "MCP & OAuth"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1": {
      "get": {
        "operationId": "v1Root",
        "summary": "API version check",
        "tags": [
          "Health & Version"
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessResponse"
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\nNo additional role permission for this operation. The stated authentication requirements still apply.\n\nReturns a Hello World message confirming the v1 API is available.",
        "security": [],
        "x-lexoh-permissions": {
          "status": "no-role-permission",
          "required": [],
          "conditional": [],
          "description": {
            "en": "No additional role permission for this operation. The stated authentication requirements still apply.",
            "fr": "Aucune permission de rôle supplémentaire pour cette opération. Les exigences d’authentification indiquées restent applicables."
          }
        }
      }
    },
    "/v1/access": {
      "post": {
        "operationId": "getAccessCard",
        "summary": "Retrieve a single access card",
        "tags": [
          "Access Cards"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "id"
                ],
                "properties": {
                  "id": {
                    "type": "integer",
                    "description": "The access card UUID to retrieve"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "access_card": {
                      "$ref": "#/components/schemas/AccessCard"
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_view_access_cards` **or** `can_view_guests`\n\nThe following checks depend on the action, filters or requested resource; they are not all required for every request:\n\n- `can_view_access_cards`\n- `can_view_guests`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nFetches a single access card by its ID. Returns full card details including linked zone, schedule, customer, and user information.",
        "x-lexoh-permissions": {
          "status": "conditional",
          "required": [
            {
              "any": [
                {
                  "permission": "can_view_access_cards"
                },
                {
                  "permission": "can_view_guests"
                }
              ]
            }
          ],
          "conditional": [
            {
              "checked": [
                "can_view_access_cards"
              ]
            },
            {
              "checked": [
                "can_view_guests"
              ]
            }
          ],
          "description": {
            "en": "- `can_view_access_cards` **or** `can_view_guests`\n\nThe following checks depend on the action, filters or requested resource; they are not all required for every request:\n\n- `can_view_access_cards`\n- `can_view_guests`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_access_cards` **ou** `can_view_guests`\n\nLes vérifications suivantes dépendent de l’action, des filtres ou de la ressource demandée; elles ne sont pas toutes requises pour chaque requête :\n\n- `can_view_access_cards`\n- `can_view_guests`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "put": {
        "operationId": "createAccessCard",
        "summary": "Create a new access card",
        "tags": [
          "Access Cards"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "type",
                  "status",
                  "validation_date",
                  "expiration_date"
                ],
                "properties": {
                  "username": {
                    "type": "string"
                  },
                  "customer_id": {
                    "type": "integer"
                  },
                  "user_id": {
                    "type": "integer"
                  },
                  "parent_access_id": {
                    "type": "integer"
                  },
                  "vehicle_id": {
                    "type": "integer"
                  },
                  "type": {
                    "type": "string"
                  },
                  "status": {
                    "type": "boolean"
                  },
                  "max_entrance": {
                    "type": "integer"
                  },
                  "zones": {
                    "type": "array",
                    "items": {
                      "type": "integer"
                    }
                  },
                  "validation_date": {
                    "type": "string"
                  },
                  "expiration_date": {
                    "type": "string"
                  },
                  "between_hours_start": {
                    "type": "string"
                  },
                  "between_hours_end": {
                    "type": "string"
                  },
                  "allow_monday": {
                    "type": "boolean"
                  },
                  "allow_tuesday": {
                    "type": "boolean"
                  },
                  "allow_wednesday": {
                    "type": "boolean"
                  },
                  "allow_thursday": {
                    "type": "boolean"
                  },
                  "allow_friday": {
                    "type": "boolean"
                  },
                  "allow_saturday": {
                    "type": "boolean"
                  },
                  "allow_sunday": {
                    "type": "boolean"
                  },
                  "one_time_only": {
                    "type": "boolean"
                  },
                  "locale": {
                    "type": "string"
                  },
                  "number_of_access": {
                    "type": "integer"
                  },
                  "cancel_others": {
                    "type": "boolean"
                  },
                  "creation_device_id": {
                    "type": "integer"
                  },
                  "has_subscription": {
                    "type": "boolean"
                  },
                  "limits": {
                    "type": "string"
                  },
                  "bad_cycles": {
                    "type": "integer"
                  },
                  "tags": {
                    "type": "array",
                    "items": {
                      "type": "integer"
                    }
                  },
                  "license_plate": {
                    "type": "string"
                  },
                  "customer": {
                    "type": "object",
                    "properties": {
                      "email": {
                        "type": "string"
                      },
                      "name": {
                        "type": "string"
                      },
                      "description": {
                        "type": "string"
                      },
                      "status": {
                        "type": "boolean"
                      },
                      "locale": {
                        "type": "string"
                      },
                      "license_plates": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "address": {
                        "type": "string"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "access_card": {
                      "$ref": "#/components/schemas/AccessCard"
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_add_access_cards` **or** `can_add_guests`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nCreates a new access card and optionally links it to a customer, zone, and schedule.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "any": [
                {
                  "permission": "can_add_access_cards"
                },
                {
                  "permission": "can_add_guests"
                }
              ]
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_add_access_cards` **or** `can_add_guests`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_add_access_cards` **ou** `can_add_guests`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "patch": {
        "operationId": "updateAccessCard",
        "summary": "Update an access card",
        "tags": [
          "Access Cards"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "id"
                ],
                "properties": {
                  "id": {
                    "type": "integer",
                    "description": "The access card UUID to update"
                  },
                  "status": {
                    "type": "boolean"
                  },
                  "max_entrance": {
                    "type": "integer"
                  },
                  "zones": {
                    "type": "array",
                    "items": {
                      "type": "integer"
                    }
                  },
                  "validation_date": {
                    "type": "string"
                  },
                  "expiration_date": {
                    "type": "string"
                  },
                  "locale": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "access_card": {
                      "$ref": "#/components/schemas/AccessCard"
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_edit_access_cards` **or** `can_edit_guests`\n\nThe following checks depend on the action, filters or requested resource; they are not all required for every request:\n\n- `can_edit_access_cards`\n- `can_edit_guests`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nUpdates the fields of an existing access card identified by its ID.",
        "x-lexoh-permissions": {
          "status": "conditional",
          "required": [
            {
              "any": [
                {
                  "permission": "can_edit_access_cards"
                },
                {
                  "permission": "can_edit_guests"
                }
              ]
            }
          ],
          "conditional": [
            {
              "checked": [
                "can_edit_access_cards"
              ]
            },
            {
              "checked": [
                "can_edit_guests"
              ]
            }
          ],
          "description": {
            "en": "- `can_edit_access_cards` **or** `can_edit_guests`\n\nThe following checks depend on the action, filters or requested resource; they are not all required for every request:\n\n- `can_edit_access_cards`\n- `can_edit_guests`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_access_cards` **ou** `can_edit_guests`\n\nLes vérifications suivantes dépendent de l’action, des filtres ou de la ressource demandée; elles ne sont pas toutes requises pour chaque requête :\n\n- `can_edit_access_cards`\n- `can_edit_guests`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "delete": {
        "operationId": "deleteAccessCard",
        "summary": "Delete an access card",
        "tags": [
          "Access Cards"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "id"
                ],
                "properties": {
                  "id": {
                    "type": "integer",
                    "description": "The access card UUID to delete"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessResponse"
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_delete_access_cards` **or** `can_delete_guests`\n\nThe following checks depend on the action, filters or requested resource; they are not all required for every request:\n\n- `can_delete_guests`\n- `can_delete_access_cards`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nPermanently deletes an access card. This cannot be undone.",
        "x-lexoh-permissions": {
          "status": "conditional",
          "required": [
            {
              "any": [
                {
                  "permission": "can_delete_access_cards"
                },
                {
                  "permission": "can_delete_guests"
                }
              ]
            }
          ],
          "conditional": [
            {
              "checked": [
                "can_delete_guests"
              ]
            },
            {
              "checked": [
                "can_delete_access_cards"
              ]
            }
          ],
          "description": {
            "en": "- `can_delete_access_cards` **or** `can_delete_guests`\n\nThe following checks depend on the action, filters or requested resource; they are not all required for every request:\n\n- `can_delete_guests`\n- `can_delete_access_cards`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_delete_access_cards` **ou** `can_delete_guests`\n\nLes vérifications suivantes dépendent de l’action, des filtres ou de la ressource demandée; elles ne sont pas toutes requises pour chaque requête :\n\n- `can_delete_guests`\n- `can_delete_access_cards`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/access/credit/adjustment": {
      "post": {
        "operationId": "commitAccessCreditAdjustment",
        "summary": "Commit a prepaid access-credit adjustment",
        "tags": [
          "Access Cards"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "access_id",
                  "expected_credit_version",
                  "expected_balance"
                ],
                "properties": {
                  "access_id": {
                    "oneOf": [
                      {
                        "type": "integer",
                        "format": "int64",
                        "minimum": 1
                      },
                      {
                        "type": "string",
                        "pattern": "^[1-9][0-9]*$"
                      }
                    ]
                  },
                  "movement_type": {
                    "type": "string",
                    "enum": [
                      "adjustment"
                    ]
                  },
                  "expected_credit_version": {
                    "oneOf": [
                      {
                        "type": "integer",
                        "format": "int64",
                        "minimum": 0
                      },
                      {
                        "type": "string",
                        "pattern": "^(0|[1-9][0-9]*)$"
                      }
                    ]
                  },
                  "expected_balance": {
                    "type": "string",
                    "pattern": "^-?(0|[1-9][0-9]*)(\\.[0-9]{1,6})?$"
                  },
                  "quantity": {
                    "type": "string",
                    "pattern": "^(0\\.(?=[0-9]{1,6}$)(?=[0-9]*[1-9])[0-9]{1,6}|[1-9][0-9]*(\\.[0-9]{1,6})?)$"
                  },
                  "unit_id": {
                    "oneOf": [
                      {
                        "type": "integer",
                        "format": "int64",
                        "minimum": 1
                      },
                      {
                        "type": "string",
                        "pattern": "^[1-9][0-9]*$"
                      }
                    ]
                  },
                  "entry_id": {
                    "oneOf": [
                      {
                        "type": "integer",
                        "format": "int64",
                        "minimum": 1
                      },
                      {
                        "type": "string",
                        "pattern": "^[1-9][0-9]*$"
                      }
                    ]
                  },
                  "commercial_document_line_id": {
                    "oneOf": [
                      {
                        "type": "integer",
                        "format": "int64",
                        "minimum": 1
                      },
                      {
                        "type": "string",
                        "pattern": "^[1-9][0-9]*$"
                      }
                    ]
                  },
                  "direction": {
                    "type": "string",
                    "enum": [
                      "credit",
                      "debit"
                    ]
                  },
                  "reverses_movement_id": {
                    "oneOf": [
                      {
                        "type": "integer",
                        "format": "int64",
                        "minimum": 1
                      },
                      {
                        "type": "string",
                        "pattern": "^[1-9][0-9]*$"
                      }
                    ]
                  },
                  "policy_snapshot": {
                    "type": "object",
                    "additionalProperties": true
                  },
                  "occurred_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "reason": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 1000
                  },
                  "idempotency_key": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                "oneOf": [
                  {
                    "required": [
                      "quantity",
                      "unit_id",
                      "direction",
                      "reason"
                    ],
                    "properties": {
                      "movement_type": {
                        "type": "string",
                        "enum": [
                          "adjustment"
                        ]
                      }
                    }
                  }
                ],
                "description": "Commit requires idempotency_key either in this body or in the Idempotency-Key header."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful prepaid credit response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SnowAccessCreditCommitResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid fields, decimal, reason, direction, or idempotency key"
          },
          "404": {
            "description": "Access, source, or reversed movement not found"
          },
          "409": {
            "description": "Projection, source, reversal, version, balance, or idempotency conflict"
          },
          "422": {
            "description": "Prepaid policy, unit, source, linkage, balance, or capacity violation"
          },
          "503": {
            "description": "Database unavailable"
          }
        },
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "UUID; required here or as idempotency_key in the JSON body.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version."
      }
    },
    "/v1/access/credit/commit": {
      "post": {
        "operationId": "commitAccessCreditMovement",
        "summary": "Commit a prepaid access-credit movement",
        "tags": [
          "Access Cards"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "access_id",
                  "expected_credit_version",
                  "expected_balance",
                  "movement_type"
                ],
                "properties": {
                  "access_id": {
                    "oneOf": [
                      {
                        "type": "integer",
                        "format": "int64",
                        "minimum": 1
                      },
                      {
                        "type": "string",
                        "pattern": "^[1-9][0-9]*$"
                      }
                    ]
                  },
                  "movement_type": {
                    "type": "string",
                    "enum": [
                      "purchase",
                      "consume",
                      "refund",
                      "adjustment",
                      "reversal"
                    ]
                  },
                  "expected_credit_version": {
                    "oneOf": [
                      {
                        "type": "integer",
                        "format": "int64",
                        "minimum": 0
                      },
                      {
                        "type": "string",
                        "pattern": "^(0|[1-9][0-9]*)$"
                      }
                    ]
                  },
                  "expected_balance": {
                    "type": "string",
                    "pattern": "^-?(0|[1-9][0-9]*)(\\.[0-9]{1,6})?$"
                  },
                  "quantity": {
                    "type": "string",
                    "pattern": "^(0\\.(?=[0-9]{1,6}$)(?=[0-9]*[1-9])[0-9]{1,6}|[1-9][0-9]*(\\.[0-9]{1,6})?)$"
                  },
                  "unit_id": {
                    "oneOf": [
                      {
                        "type": "integer",
                        "format": "int64",
                        "minimum": 1
                      },
                      {
                        "type": "string",
                        "pattern": "^[1-9][0-9]*$"
                      }
                    ]
                  },
                  "entry_id": {
                    "oneOf": [
                      {
                        "type": "integer",
                        "format": "int64",
                        "minimum": 1
                      },
                      {
                        "type": "string",
                        "pattern": "^[1-9][0-9]*$"
                      }
                    ]
                  },
                  "commercial_document_line_id": {
                    "oneOf": [
                      {
                        "type": "integer",
                        "format": "int64",
                        "minimum": 1
                      },
                      {
                        "type": "string",
                        "pattern": "^[1-9][0-9]*$"
                      }
                    ]
                  },
                  "direction": {
                    "type": "string",
                    "enum": [
                      "credit",
                      "debit"
                    ]
                  },
                  "reverses_movement_id": {
                    "oneOf": [
                      {
                        "type": "integer",
                        "format": "int64",
                        "minimum": 1
                      },
                      {
                        "type": "string",
                        "pattern": "^[1-9][0-9]*$"
                      }
                    ]
                  },
                  "policy_snapshot": {
                    "type": "object",
                    "additionalProperties": true
                  },
                  "occurred_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "reason": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 1000
                  },
                  "idempotency_key": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                "oneOf": [
                  {
                    "required": [
                      "movement_type",
                      "quantity",
                      "unit_id",
                      "commercial_document_line_id"
                    ],
                    "properties": {
                      "movement_type": {
                        "type": "string",
                        "enum": [
                          "purchase"
                        ]
                      }
                    }
                  },
                  {
                    "required": [
                      "movement_type",
                      "quantity",
                      "unit_id",
                      "entry_id"
                    ],
                    "properties": {
                      "movement_type": {
                        "type": "string",
                        "enum": [
                          "consume"
                        ]
                      }
                    }
                  },
                  {
                    "required": [
                      "movement_type",
                      "quantity",
                      "unit_id",
                      "commercial_document_line_id"
                    ],
                    "properties": {
                      "movement_type": {
                        "type": "string",
                        "enum": [
                          "refund"
                        ]
                      }
                    }
                  },
                  {
                    "required": [
                      "movement_type",
                      "quantity",
                      "unit_id",
                      "direction",
                      "reason"
                    ],
                    "properties": {
                      "movement_type": {
                        "type": "string",
                        "enum": [
                          "adjustment"
                        ]
                      }
                    }
                  },
                  {
                    "required": [
                      "movement_type",
                      "reverses_movement_id",
                      "reason"
                    ],
                    "properties": {
                      "movement_type": {
                        "type": "string",
                        "enum": [
                          "reversal"
                        ]
                      }
                    }
                  }
                ],
                "description": "Commit requires idempotency_key either in this body or in the Idempotency-Key header."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful prepaid credit response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SnowAccessCreditCommitResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid fields, decimal, reason, direction, or idempotency key"
          },
          "404": {
            "description": "Access, source, or reversed movement not found"
          },
          "409": {
            "description": "Projection, source, reversal, version, balance, or idempotency conflict"
          },
          "422": {
            "description": "Prepaid policy, unit, source, linkage, balance, or capacity violation"
          },
          "503": {
            "description": "Database unavailable"
          }
        },
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "UUID; required here or as idempotency_key in the JSON body.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nIdempotently appends one movement and advances the Access credit projection in one transaction.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/access/credit/consume": {
      "post": {
        "operationId": "commitAccessCreditConsume",
        "summary": "Commit a prepaid access-credit consume",
        "tags": [
          "Access Cards"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "access_id",
                  "expected_credit_version",
                  "expected_balance"
                ],
                "properties": {
                  "access_id": {
                    "oneOf": [
                      {
                        "type": "integer",
                        "format": "int64",
                        "minimum": 1
                      },
                      {
                        "type": "string",
                        "pattern": "^[1-9][0-9]*$"
                      }
                    ]
                  },
                  "movement_type": {
                    "type": "string",
                    "enum": [
                      "consume"
                    ]
                  },
                  "expected_credit_version": {
                    "oneOf": [
                      {
                        "type": "integer",
                        "format": "int64",
                        "minimum": 0
                      },
                      {
                        "type": "string",
                        "pattern": "^(0|[1-9][0-9]*)$"
                      }
                    ]
                  },
                  "expected_balance": {
                    "type": "string",
                    "pattern": "^-?(0|[1-9][0-9]*)(\\.[0-9]{1,6})?$"
                  },
                  "quantity": {
                    "type": "string",
                    "pattern": "^(0\\.(?=[0-9]{1,6}$)(?=[0-9]*[1-9])[0-9]{1,6}|[1-9][0-9]*(\\.[0-9]{1,6})?)$"
                  },
                  "unit_id": {
                    "oneOf": [
                      {
                        "type": "integer",
                        "format": "int64",
                        "minimum": 1
                      },
                      {
                        "type": "string",
                        "pattern": "^[1-9][0-9]*$"
                      }
                    ]
                  },
                  "entry_id": {
                    "oneOf": [
                      {
                        "type": "integer",
                        "format": "int64",
                        "minimum": 1
                      },
                      {
                        "type": "string",
                        "pattern": "^[1-9][0-9]*$"
                      }
                    ]
                  },
                  "commercial_document_line_id": {
                    "oneOf": [
                      {
                        "type": "integer",
                        "format": "int64",
                        "minimum": 1
                      },
                      {
                        "type": "string",
                        "pattern": "^[1-9][0-9]*$"
                      }
                    ]
                  },
                  "direction": {
                    "type": "string",
                    "enum": [
                      "credit",
                      "debit"
                    ]
                  },
                  "reverses_movement_id": {
                    "oneOf": [
                      {
                        "type": "integer",
                        "format": "int64",
                        "minimum": 1
                      },
                      {
                        "type": "string",
                        "pattern": "^[1-9][0-9]*$"
                      }
                    ]
                  },
                  "policy_snapshot": {
                    "type": "object",
                    "additionalProperties": true
                  },
                  "occurred_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "reason": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 1000
                  },
                  "idempotency_key": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                "oneOf": [
                  {
                    "required": [
                      "quantity",
                      "unit_id",
                      "entry_id"
                    ],
                    "properties": {
                      "movement_type": {
                        "type": "string",
                        "enum": [
                          "consume"
                        ]
                      }
                    }
                  }
                ],
                "description": "Commit requires idempotency_key either in this body or in the Idempotency-Key header."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful prepaid credit response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SnowAccessCreditCommitResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid fields, decimal, reason, direction, or idempotency key"
          },
          "404": {
            "description": "Access, source, or reversed movement not found"
          },
          "409": {
            "description": "Projection, source, reversal, version, balance, or idempotency conflict"
          },
          "422": {
            "description": "Prepaid policy, unit, source, linkage, balance, or capacity violation"
          },
          "503": {
            "description": "Database unavailable"
          }
        },
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "UUID; required here or as idempotency_key in the JSON body.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version."
      }
    },
    "/v1/access/credit/history": {
      "post": {
        "operationId": "getAccessCreditHistory",
        "summary": "Retrieve prepaid access-credit history",
        "tags": [
          "Access Cards"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "access_id"
                ],
                "properties": {
                  "access_id": {
                    "oneOf": [
                      {
                        "type": "integer",
                        "format": "int64",
                        "minimum": 1
                      },
                      {
                        "type": "string",
                        "pattern": "^[1-9][0-9]*$"
                      }
                    ]
                  },
                  "cursor_sequence": {
                    "oneOf": [
                      {
                        "type": "integer",
                        "format": "int64",
                        "minimum": 0
                      },
                      {
                        "type": "string",
                        "pattern": "^(0|[1-9][0-9]*)$"
                      }
                    ]
                  },
                  "page_limit": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 100
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful prepaid credit response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SnowAccessCreditHistoryResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid fields, decimal, reason, direction, or idempotency key"
          },
          "404": {
            "description": "Access, source, or reversed movement not found"
          },
          "409": {
            "description": "Projection, source, reversal, version, balance, or idempotency conflict"
          },
          "422": {
            "description": "Prepaid policy, unit, source, linkage, balance, or capacity violation"
          },
          "503": {
            "description": "Database unavailable"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns the append-only movement chain and current exact credit projection.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/access/credit/preview": {
      "post": {
        "operationId": "previewAccessCreditMovement",
        "summary": "Preview a prepaid access-credit movement",
        "tags": [
          "Access Cards"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "access_id",
                  "expected_credit_version",
                  "expected_balance",
                  "movement_type"
                ],
                "properties": {
                  "access_id": {
                    "oneOf": [
                      {
                        "type": "integer",
                        "format": "int64",
                        "minimum": 1
                      },
                      {
                        "type": "string",
                        "pattern": "^[1-9][0-9]*$"
                      }
                    ]
                  },
                  "movement_type": {
                    "type": "string",
                    "enum": [
                      "purchase",
                      "consume",
                      "refund",
                      "adjustment",
                      "reversal"
                    ]
                  },
                  "expected_credit_version": {
                    "oneOf": [
                      {
                        "type": "integer",
                        "format": "int64",
                        "minimum": 0
                      },
                      {
                        "type": "string",
                        "pattern": "^(0|[1-9][0-9]*)$"
                      }
                    ]
                  },
                  "expected_balance": {
                    "type": "string",
                    "pattern": "^-?(0|[1-9][0-9]*)(\\.[0-9]{1,6})?$"
                  },
                  "quantity": {
                    "type": "string",
                    "pattern": "^(0\\.(?=[0-9]{1,6}$)(?=[0-9]*[1-9])[0-9]{1,6}|[1-9][0-9]*(\\.[0-9]{1,6})?)$"
                  },
                  "unit_id": {
                    "oneOf": [
                      {
                        "type": "integer",
                        "format": "int64",
                        "minimum": 1
                      },
                      {
                        "type": "string",
                        "pattern": "^[1-9][0-9]*$"
                      }
                    ]
                  },
                  "entry_id": {
                    "oneOf": [
                      {
                        "type": "integer",
                        "format": "int64",
                        "minimum": 1
                      },
                      {
                        "type": "string",
                        "pattern": "^[1-9][0-9]*$"
                      }
                    ]
                  },
                  "commercial_document_line_id": {
                    "oneOf": [
                      {
                        "type": "integer",
                        "format": "int64",
                        "minimum": 1
                      },
                      {
                        "type": "string",
                        "pattern": "^[1-9][0-9]*$"
                      }
                    ]
                  },
                  "direction": {
                    "type": "string",
                    "enum": [
                      "credit",
                      "debit"
                    ]
                  },
                  "reverses_movement_id": {
                    "oneOf": [
                      {
                        "type": "integer",
                        "format": "int64",
                        "minimum": 1
                      },
                      {
                        "type": "string",
                        "pattern": "^[1-9][0-9]*$"
                      }
                    ]
                  },
                  "policy_snapshot": {
                    "type": "object",
                    "additionalProperties": true
                  },
                  "occurred_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "reason": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 1000
                  },
                  "idempotency_key": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                "oneOf": [
                  {
                    "required": [
                      "movement_type",
                      "quantity",
                      "unit_id",
                      "commercial_document_line_id"
                    ],
                    "properties": {
                      "movement_type": {
                        "type": "string",
                        "enum": [
                          "purchase"
                        ]
                      }
                    }
                  },
                  {
                    "required": [
                      "movement_type",
                      "quantity",
                      "unit_id",
                      "entry_id"
                    ],
                    "properties": {
                      "movement_type": {
                        "type": "string",
                        "enum": [
                          "consume"
                        ]
                      }
                    }
                  },
                  {
                    "required": [
                      "movement_type",
                      "quantity",
                      "unit_id",
                      "commercial_document_line_id"
                    ],
                    "properties": {
                      "movement_type": {
                        "type": "string",
                        "enum": [
                          "refund"
                        ]
                      }
                    }
                  },
                  {
                    "required": [
                      "movement_type",
                      "quantity",
                      "unit_id",
                      "direction",
                      "reason"
                    ],
                    "properties": {
                      "movement_type": {
                        "type": "string",
                        "enum": [
                          "adjustment"
                        ]
                      }
                    }
                  },
                  {
                    "required": [
                      "movement_type",
                      "reverses_movement_id",
                      "reason"
                    ],
                    "properties": {
                      "movement_type": {
                        "type": "string",
                        "enum": [
                          "reversal"
                        ]
                      }
                    }
                  }
                ],
                "description": "Preview never writes a movement."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful prepaid credit response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SnowAccessCreditPreviewResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid fields, decimal, reason, direction, or idempotency key"
          },
          "404": {
            "description": "Access, source, or reversed movement not found"
          },
          "409": {
            "description": "Projection, source, reversal, version, balance, or idempotency conflict"
          },
          "422": {
            "description": "Prepaid policy, unit, source, linkage, balance, or capacity violation"
          },
          "503": {
            "description": "Database unavailable"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nValidates purchase, consume, refund, adjustment, or reversal against the exact projected balance without writing.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/access/credit/purchase": {
      "post": {
        "operationId": "commitAccessCreditPurchase",
        "summary": "Commit a prepaid access-credit purchase",
        "tags": [
          "Access Cards"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "access_id",
                  "expected_credit_version",
                  "expected_balance"
                ],
                "properties": {
                  "access_id": {
                    "oneOf": [
                      {
                        "type": "integer",
                        "format": "int64",
                        "minimum": 1
                      },
                      {
                        "type": "string",
                        "pattern": "^[1-9][0-9]*$"
                      }
                    ]
                  },
                  "movement_type": {
                    "type": "string",
                    "enum": [
                      "purchase"
                    ]
                  },
                  "expected_credit_version": {
                    "oneOf": [
                      {
                        "type": "integer",
                        "format": "int64",
                        "minimum": 0
                      },
                      {
                        "type": "string",
                        "pattern": "^(0|[1-9][0-9]*)$"
                      }
                    ]
                  },
                  "expected_balance": {
                    "type": "string",
                    "pattern": "^-?(0|[1-9][0-9]*)(\\.[0-9]{1,6})?$"
                  },
                  "quantity": {
                    "type": "string",
                    "pattern": "^(0\\.(?=[0-9]{1,6}$)(?=[0-9]*[1-9])[0-9]{1,6}|[1-9][0-9]*(\\.[0-9]{1,6})?)$"
                  },
                  "unit_id": {
                    "oneOf": [
                      {
                        "type": "integer",
                        "format": "int64",
                        "minimum": 1
                      },
                      {
                        "type": "string",
                        "pattern": "^[1-9][0-9]*$"
                      }
                    ]
                  },
                  "entry_id": {
                    "oneOf": [
                      {
                        "type": "integer",
                        "format": "int64",
                        "minimum": 1
                      },
                      {
                        "type": "string",
                        "pattern": "^[1-9][0-9]*$"
                      }
                    ]
                  },
                  "commercial_document_line_id": {
                    "oneOf": [
                      {
                        "type": "integer",
                        "format": "int64",
                        "minimum": 1
                      },
                      {
                        "type": "string",
                        "pattern": "^[1-9][0-9]*$"
                      }
                    ]
                  },
                  "direction": {
                    "type": "string",
                    "enum": [
                      "credit",
                      "debit"
                    ]
                  },
                  "reverses_movement_id": {
                    "oneOf": [
                      {
                        "type": "integer",
                        "format": "int64",
                        "minimum": 1
                      },
                      {
                        "type": "string",
                        "pattern": "^[1-9][0-9]*$"
                      }
                    ]
                  },
                  "policy_snapshot": {
                    "type": "object",
                    "additionalProperties": true
                  },
                  "occurred_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "reason": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 1000
                  },
                  "idempotency_key": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                "oneOf": [
                  {
                    "required": [
                      "quantity",
                      "unit_id",
                      "commercial_document_line_id"
                    ],
                    "properties": {
                      "movement_type": {
                        "type": "string",
                        "enum": [
                          "purchase"
                        ]
                      }
                    }
                  }
                ],
                "description": "Commit requires idempotency_key either in this body or in the Idempotency-Key header."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful prepaid credit response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SnowAccessCreditCommitResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid fields, decimal, reason, direction, or idempotency key"
          },
          "404": {
            "description": "Access, source, or reversed movement not found"
          },
          "409": {
            "description": "Projection, source, reversal, version, balance, or idempotency conflict"
          },
          "422": {
            "description": "Prepaid policy, unit, source, linkage, balance, or capacity violation"
          },
          "503": {
            "description": "Database unavailable"
          }
        },
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "UUID; required here or as idempotency_key in the JSON body.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version."
      }
    },
    "/v1/access/credit/refund": {
      "post": {
        "operationId": "commitAccessCreditRefund",
        "summary": "Commit a prepaid access-credit refund",
        "tags": [
          "Access Cards"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "access_id",
                  "expected_credit_version",
                  "expected_balance"
                ],
                "properties": {
                  "access_id": {
                    "oneOf": [
                      {
                        "type": "integer",
                        "format": "int64",
                        "minimum": 1
                      },
                      {
                        "type": "string",
                        "pattern": "^[1-9][0-9]*$"
                      }
                    ]
                  },
                  "movement_type": {
                    "type": "string",
                    "enum": [
                      "refund"
                    ]
                  },
                  "expected_credit_version": {
                    "oneOf": [
                      {
                        "type": "integer",
                        "format": "int64",
                        "minimum": 0
                      },
                      {
                        "type": "string",
                        "pattern": "^(0|[1-9][0-9]*)$"
                      }
                    ]
                  },
                  "expected_balance": {
                    "type": "string",
                    "pattern": "^-?(0|[1-9][0-9]*)(\\.[0-9]{1,6})?$"
                  },
                  "quantity": {
                    "type": "string",
                    "pattern": "^(0\\.(?=[0-9]{1,6}$)(?=[0-9]*[1-9])[0-9]{1,6}|[1-9][0-9]*(\\.[0-9]{1,6})?)$"
                  },
                  "unit_id": {
                    "oneOf": [
                      {
                        "type": "integer",
                        "format": "int64",
                        "minimum": 1
                      },
                      {
                        "type": "string",
                        "pattern": "^[1-9][0-9]*$"
                      }
                    ]
                  },
                  "entry_id": {
                    "oneOf": [
                      {
                        "type": "integer",
                        "format": "int64",
                        "minimum": 1
                      },
                      {
                        "type": "string",
                        "pattern": "^[1-9][0-9]*$"
                      }
                    ]
                  },
                  "commercial_document_line_id": {
                    "oneOf": [
                      {
                        "type": "integer",
                        "format": "int64",
                        "minimum": 1
                      },
                      {
                        "type": "string",
                        "pattern": "^[1-9][0-9]*$"
                      }
                    ]
                  },
                  "direction": {
                    "type": "string",
                    "enum": [
                      "credit",
                      "debit"
                    ]
                  },
                  "reverses_movement_id": {
                    "oneOf": [
                      {
                        "type": "integer",
                        "format": "int64",
                        "minimum": 1
                      },
                      {
                        "type": "string",
                        "pattern": "^[1-9][0-9]*$"
                      }
                    ]
                  },
                  "policy_snapshot": {
                    "type": "object",
                    "additionalProperties": true
                  },
                  "occurred_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "reason": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 1000
                  },
                  "idempotency_key": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                "oneOf": [
                  {
                    "required": [
                      "quantity",
                      "unit_id",
                      "commercial_document_line_id"
                    ],
                    "properties": {
                      "movement_type": {
                        "type": "string",
                        "enum": [
                          "refund"
                        ]
                      }
                    }
                  }
                ],
                "description": "Commit requires idempotency_key either in this body or in the Idempotency-Key header."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful prepaid credit response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SnowAccessCreditCommitResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid fields, decimal, reason, direction, or idempotency key"
          },
          "404": {
            "description": "Access, source, or reversed movement not found"
          },
          "409": {
            "description": "Projection, source, reversal, version, balance, or idempotency conflict"
          },
          "422": {
            "description": "Prepaid policy, unit, source, linkage, balance, or capacity violation"
          },
          "503": {
            "description": "Database unavailable"
          }
        },
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "UUID; required here or as idempotency_key in the JSON body.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version."
      }
    },
    "/v1/access/credit/reversal": {
      "post": {
        "operationId": "commitAccessCreditReversal",
        "summary": "Commit a prepaid access-credit reversal",
        "tags": [
          "Access Cards"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "access_id",
                  "expected_credit_version",
                  "expected_balance"
                ],
                "properties": {
                  "access_id": {
                    "oneOf": [
                      {
                        "type": "integer",
                        "format": "int64",
                        "minimum": 1
                      },
                      {
                        "type": "string",
                        "pattern": "^[1-9][0-9]*$"
                      }
                    ]
                  },
                  "movement_type": {
                    "type": "string",
                    "enum": [
                      "reversal"
                    ]
                  },
                  "expected_credit_version": {
                    "oneOf": [
                      {
                        "type": "integer",
                        "format": "int64",
                        "minimum": 0
                      },
                      {
                        "type": "string",
                        "pattern": "^(0|[1-9][0-9]*)$"
                      }
                    ]
                  },
                  "expected_balance": {
                    "type": "string",
                    "pattern": "^-?(0|[1-9][0-9]*)(\\.[0-9]{1,6})?$"
                  },
                  "quantity": {
                    "type": "string",
                    "pattern": "^(0\\.(?=[0-9]{1,6}$)(?=[0-9]*[1-9])[0-9]{1,6}|[1-9][0-9]*(\\.[0-9]{1,6})?)$"
                  },
                  "unit_id": {
                    "oneOf": [
                      {
                        "type": "integer",
                        "format": "int64",
                        "minimum": 1
                      },
                      {
                        "type": "string",
                        "pattern": "^[1-9][0-9]*$"
                      }
                    ]
                  },
                  "entry_id": {
                    "oneOf": [
                      {
                        "type": "integer",
                        "format": "int64",
                        "minimum": 1
                      },
                      {
                        "type": "string",
                        "pattern": "^[1-9][0-9]*$"
                      }
                    ]
                  },
                  "commercial_document_line_id": {
                    "oneOf": [
                      {
                        "type": "integer",
                        "format": "int64",
                        "minimum": 1
                      },
                      {
                        "type": "string",
                        "pattern": "^[1-9][0-9]*$"
                      }
                    ]
                  },
                  "direction": {
                    "type": "string",
                    "enum": [
                      "credit",
                      "debit"
                    ]
                  },
                  "reverses_movement_id": {
                    "oneOf": [
                      {
                        "type": "integer",
                        "format": "int64",
                        "minimum": 1
                      },
                      {
                        "type": "string",
                        "pattern": "^[1-9][0-9]*$"
                      }
                    ]
                  },
                  "policy_snapshot": {
                    "type": "object",
                    "additionalProperties": true
                  },
                  "occurred_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "reason": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 1000
                  },
                  "idempotency_key": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                "oneOf": [
                  {
                    "required": [
                      "reverses_movement_id",
                      "reason"
                    ],
                    "properties": {
                      "movement_type": {
                        "type": "string",
                        "enum": [
                          "reversal"
                        ]
                      }
                    }
                  }
                ],
                "description": "Commit requires idempotency_key either in this body or in the Idempotency-Key header."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful prepaid credit response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SnowAccessCreditCommitResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid fields, decimal, reason, direction, or idempotency key"
          },
          "404": {
            "description": "Access, source, or reversed movement not found"
          },
          "409": {
            "description": "Projection, source, reversal, version, balance, or idempotency conflict"
          },
          "422": {
            "description": "Prepaid policy, unit, source, linkage, balance, or capacity violation"
          },
          "503": {
            "description": "Database unavailable"
          }
        },
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "UUID; required here or as idempotency_key in the JSON body.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version."
      }
    },
    "/v1/access/device": {
      "post": {
        "operationId": "sendAccessCardDevice",
        "summary": "Send access card to device",
        "tags": [
          "Access Cards"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "id"
                ],
                "properties": {
                  "id": {
                    "type": "integer",
                    "description": "The access card UUID"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessResponse"
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\nAll of the following rules are required:\n\n- `can_view_access_cards` **or** `can_view_guests`\n- `can_control_devices`\n\nThe following checks depend on the action, filters or requested resource; they are not all required for every request:\n\n- `can_view_access_cards`\n- `can_view_guests`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nPushes the access card configuration to a physical gate device.",
        "x-lexoh-permissions": {
          "status": "conditional",
          "required": [
            {
              "any": [
                {
                  "permission": "can_view_access_cards"
                },
                {
                  "permission": "can_view_guests"
                }
              ]
            },
            {
              "permission": "can_control_devices"
            }
          ],
          "conditional": [
            {
              "checked": [
                "can_view_access_cards"
              ]
            },
            {
              "checked": [
                "can_view_guests"
              ]
            }
          ],
          "description": {
            "en": "All of the following rules are required:\n\n- `can_view_access_cards` **or** `can_view_guests`\n- `can_control_devices`\n\nThe following checks depend on the action, filters or requested resource; they are not all required for every request:\n\n- `can_view_access_cards`\n- `can_view_guests`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Toutes les règles suivantes sont requises :\n\n- `can_view_access_cards` **ou** `can_view_guests`\n- `can_control_devices`\n\nLes vérifications suivantes dépendent de l’action, des filtres ou de la ressource demandée; elles ne sont pas toutes requises pour chaque requête :\n\n- `can_view_access_cards`\n- `can_view_guests`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/access/email": {
      "post": {
        "operationId": "sendAccessCardEmail",
        "summary": "Send access card via email",
        "tags": [
          "Access Cards"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "integer",
                    "description": "The access card UUID"
                  },
                  "to": {
                    "type": "string"
                  },
                  "name": {
                    "type": "string"
                  },
                  "subject": {
                    "type": "string"
                  },
                  "title": {
                    "type": "string"
                  },
                  "message": {
                    "type": "string"
                  },
                  "outro": {
                    "type": "string"
                  },
                  "zones": {
                    "type": "string"
                  },
                  "locale": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessResponse"
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nSends the access card details to the customer's email address.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/access/excel": {
      "post": {
        "operationId": "exportAccessExcel",
        "summary": "Download access cards as Excel",
        "tags": [
          "Access Cards"
        ],
        "responses": {
          "200": {
            "description": "Excel file",
            "content": {
              "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_view_access_cards` **or** `can_view_guests`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nGenerates and returns an .xlsx spreadsheet of access cards matching the filter criteria.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "any": [
                {
                  "permission": "can_view_access_cards"
                },
                {
                  "permission": "can_view_guests"
                }
              ]
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_access_cards` **or** `can_view_guests`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_access_cards` **ou** `can_view_guests`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/access/instruments/list": {
      "post": {
        "operationId": "listAccessInstruments",
        "summary": "List access instruments for snow operations",
        "tags": [
          "Access Cards"
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "search": {
                    "type": "string",
                    "maxLength": 200
                  },
                  "cursor_id": {
                    "type": "integer",
                    "minimum": 0
                  },
                  "page_limit": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 100
                  },
                  "page": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 10000
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Paged access instruments",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "success",
                    "instruments",
                    "count",
                    "page",
                    "next_cursor"
                  ],
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "instruments": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/AccessCard"
                      }
                    },
                    "count": {
                      "type": "integer",
                      "format": "int64"
                    },
                    "page": {
                      "type": "integer"
                    },
                    "next_cursor": {
                      "type": "integer",
                      "nullable": true
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid search or cursor"
          },
          "401": {
            "description": "Authentication required or invalid session"
          },
          "403": {
            "description": "Access-instrument permission denied"
          },
          "500": {
            "description": "Access-instrument query failed"
          }
        },
        "x-content-type-header-enforced": false,
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_access_cards"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_access_cards`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_access_cards`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        },
        "description": "### Required permissions\n\n- `can_view_access_cards`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version."
      }
    },
    "/v1/access/lifecycle": {
      "patch": {
        "operationId": "patch_v1_access_lifecycle",
        "summary": "Update Lifecycle",
        "tags": [
          "Access Cards"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_edit_access_cards`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_access_cards"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_access_cards`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_access_cards`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/access/list": {
      "post": {
        "operationId": "listAccessCards",
        "summary": "List access cards",
        "tags": [
          "Access Cards"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "page": {
                    "type": "integer",
                    "minimum": 1,
                    "description": "Page number (1-based)"
                  },
                  "page_limit": {
                    "type": "integer"
                  },
                  "search": {
                    "type": "string"
                  },
                  "customer_id": {
                    "type": "integer"
                  },
                  "user_id": {
                    "type": "integer"
                  },
                  "parent_access_id": {
                    "type": "integer"
                  },
                  "status": {
                    "type": "integer"
                  },
                  "type": {
                    "type": "string"
                  },
                  "companies": {
                    "type": "array",
                    "items": {
                      "type": "integer"
                    }
                  },
                  "last_visit_start_date": {
                    "type": "string"
                  },
                  "last_visit_end_date": {
                    "type": "string"
                  },
                  "entry_start_date": {
                    "type": "string"
                  },
                  "entry_end_date": {
                    "type": "string"
                  },
                  "exit_start_date": {
                    "type": "string"
                  },
                  "exit_end_date": {
                    "type": "string"
                  },
                  "validation_start_date": {
                    "type": "string"
                  },
                  "validation_end_date": {
                    "type": "string"
                  },
                  "expiration_start_date": {
                    "type": "string"
                  },
                  "expiration_end_date": {
                    "type": "string"
                  },
                  "currently_inside": {
                    "type": "integer"
                  },
                  "last_visited_zones": {
                    "type": "array",
                    "items": {
                      "type": "integer"
                    }
                  },
                  "access_card_status": {
                    "type": "integer"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "count": {
                      "type": "integer"
                    },
                    "access_cards": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/AccessCard"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_view_access_cards` **or** `can_view_guests`\n\nThe following checks depend on the action, filters or requested resource; they are not all required for every request:\n\n- `can_view_guests`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns a paginated list of access cards. Supports filtering by zone, customer, schedule, and status.",
        "x-lexoh-permissions": {
          "status": "conditional",
          "required": [
            {
              "any": [
                {
                  "permission": "can_view_access_cards"
                },
                {
                  "permission": "can_view_guests"
                }
              ]
            }
          ],
          "conditional": [
            {
              "checked": [
                "can_view_guests"
              ]
            }
          ],
          "description": {
            "en": "- `can_view_access_cards` **or** `can_view_guests`\n\nThe following checks depend on the action, filters or requested resource; they are not all required for every request:\n\n- `can_view_guests`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_access_cards` **ou** `can_view_guests`\n\nLes vérifications suivantes dépendent de l’action, des filtres ou de la ressource demandée; elles ne sont pas toutes requises pour chaque requête :\n\n- `can_view_guests`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/access/sms": {
      "post": {
        "operationId": "sendAccessCardSms",
        "summary": "Send access card via SMS",
        "tags": [
          "Access Cards"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "integer",
                    "description": "The access card UUID"
                  },
                  "to": {
                    "type": "string"
                  },
                  "mms": {
                    "type": "boolean"
                  },
                  "message": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessResponse"
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nSends the access card details to the customer's phone number via SMS.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/access/username": {
      "post": {
        "operationId": "getAccessCardByUsername",
        "summary": "Retrieve access card by username",
        "tags": [
          "Access Cards"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "username"
                ],
                "properties": {
                  "username": {
                    "type": "string",
                    "description": "The username to search for"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "access_card": {
                      "$ref": "#/components/schemas/AccessCard"
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_view_access_cards` **or** `can_view_guests`\n\nThe following checks depend on the action, filters or requested resource; they are not all required for every request:\n\n- `can_view_access_cards`\n- `can_view_guests`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nLooks up an access card using the associated username instead of the card ID.",
        "x-lexoh-permissions": {
          "status": "conditional",
          "required": [
            {
              "any": [
                {
                  "permission": "can_view_access_cards"
                },
                {
                  "permission": "can_view_guests"
                }
              ]
            }
          ],
          "conditional": [
            {
              "checked": [
                "can_view_access_cards"
              ]
            },
            {
              "checked": [
                "can_view_guests"
              ]
            }
          ],
          "description": {
            "en": "- `can_view_access_cards` **or** `can_view_guests`\n\nThe following checks depend on the action, filters or requested resource; they are not all required for every request:\n\n- `can_view_access_cards`\n- `can_view_guests`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_access_cards` **ou** `can_view_guests`\n\nLes vérifications suivantes dépendent de l’action, des filtres ou de la ressource demandée; elles ne sont pas toutes requises pour chaque requête :\n\n- `can_view_access_cards`\n- `can_view_guests`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/account": {
      "post": {
        "operationId": "post_v1_account",
        "summary": "Retrieve Account",
        "tags": [
          "Accounting"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_chart_of_accounts`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_chart_of_accounts"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_chart_of_accounts`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_chart_of_accounts`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "put": {
        "operationId": "put_v1_account",
        "summary": "Create an account",
        "tags": [
          "Accounting"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_add_chart_of_accounts`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nAdds a basic account to the chart of accounts.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_add_chart_of_accounts"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_add_chart_of_accounts`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_add_chart_of_accounts`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "patch": {
        "operationId": "patch_v1_account",
        "summary": "Update an account",
        "tags": [
          "Accounting"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_edit_chart_of_accounts`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nUpdates a chart-of-accounts record.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_chart_of_accounts"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_chart_of_accounts`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_chart_of_accounts`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "delete": {
        "operationId": "delete_v1_account",
        "summary": "Delete an account",
        "tags": [
          "Accounting"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_delete_chart_of_accounts`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nDeletes an unused account, or deactivates it when it already has journal lines.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_delete_chart_of_accounts"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_delete_chart_of_accounts`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_delete_chart_of_accounts`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/account/filters": {
      "post": {
        "operationId": "post_v1_account_filters",
        "summary": "Retrieve an account",
        "tags": [
          "Accounting"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_chart_of_accounts`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nFetches one chart-of-accounts record.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_chart_of_accounts"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_chart_of_accounts`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_chart_of_accounts`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/account/list": {
      "post": {
        "operationId": "post_v1_account_list",
        "summary": "List accounts",
        "tags": [
          "Accounting"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_chart_of_accounts`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns a paginated chart of accounts.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_chart_of_accounts"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_chart_of_accounts`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_chart_of_accounts`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/accounting/default-account": {
      "patch": {
        "operationId": "patch_v1_accounting_default-account",
        "summary": "Update accounting default account",
        "tags": [
          "Accounting"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_edit_accounting_default_accounts`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nUpdates one configured posting account default.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_accounting_default_accounts"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_accounting_default_accounts`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_accounting_default_accounts`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/accounting/default-account/list": {
      "post": {
        "operationId": "post_v1_accounting_default-account_list",
        "summary": "List accounting default accounts",
        "tags": [
          "Accounting"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_accounting_default_accounts`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns configured posting account defaults for commercial, inventory, and payroll flows.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_accounting_default_accounts"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_accounting_default_accounts`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_accounting_default_accounts`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/accounting/period": {
      "post": {
        "operationId": "post_v1_accounting_period",
        "summary": "Retrieve an accounting period",
        "tags": [
          "Accounting"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_accounting_periods`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nFetches one accounting period.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_accounting_periods"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_accounting_periods`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_accounting_periods`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "put": {
        "operationId": "put_v1_accounting_period",
        "summary": "Create an accounting period",
        "tags": [
          "Accounting"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_add_accounting_periods`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nAdds an accounting period.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_add_accounting_periods"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_add_accounting_periods`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_add_accounting_periods`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "patch": {
        "operationId": "patch_v1_accounting_period",
        "summary": "Update an accounting period",
        "tags": [
          "Accounting"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_edit_accounting_periods`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nUpdates an open accounting period.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_accounting_periods"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_accounting_periods`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_accounting_periods`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/accounting/period/close": {
      "post": {
        "operationId": "post_v1_accounting_period_close",
        "summary": "Close an accounting period",
        "tags": [
          "Accounting"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_close_accounting_periods`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nCloses a period and stamps matching accounting pistes and lines with its period id.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_close_accounting_periods"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_close_accounting_periods`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_close_accounting_periods`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/accounting/period/list": {
      "post": {
        "operationId": "post_v1_accounting_period_list",
        "summary": "List accounting periods",
        "tags": [
          "Accounting"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_accounting_periods`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns paginated accounting periods.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_accounting_periods"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_accounting_periods`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_accounting_periods`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/accounting/period/reopen": {
      "post": {
        "operationId": "post_v1_accounting_period_reopen",
        "summary": "Reopen an accounting period",
        "tags": [
          "Accounting"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_close_accounting_periods`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReopens a period and clears its period stamps from accounting pistes and lines.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_close_accounting_periods"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_close_accounting_periods`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_close_accounting_periods`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/accounting/reconciliation/report": {
      "post": {
        "operationId": "post_v1_accounting_reconciliation_report",
        "summary": "Accounting reconciliation report",
        "tags": [
          "Accounting"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_accounting_reconciliation`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nLists bank/payment account transaction lines and reconciliation status.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_accounting_reconciliation"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_accounting_reconciliation`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_accounting_reconciliation`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/accounting/reconciliation/report/excel": {
      "post": {
        "operationId": "post_v1_accounting_reconciliation_report_excel",
        "summary": "Accounting reconciliation report Excel",
        "tags": [
          "Accounting"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_accounting_reconciliation`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nExports bank/payment account reconciliation lines to Excel.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_accounting_reconciliation"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_accounting_reconciliation`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_accounting_reconciliation`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/accounting/reconciliation/update": {
      "post": {
        "operationId": "post_v1_accounting_reconciliation_update",
        "summary": "Accounting reconciliation update",
        "tags": [
          "Accounting"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_edit_accounting_reconciliation`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nMarks transaction lines as reconciled or unreconciled.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_accounting_reconciliation"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_accounting_reconciliation`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_accounting_reconciliation`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/accounting/report": {
      "post": {
        "operationId": "post_v1_accounting_report",
        "summary": "Accounting report",
        "tags": [
          "Accounting"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_accounting_reports`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns the requested accounting report as JSON. Body includes report: general_ledger, trial_balance, balance_sheet, income_statement, tax_report, accounting_integrity, accounting_audit, or period_close_review.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_accounting_reports"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_accounting_reports`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_accounting_reports`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/accounting/report/balance-sheet": {
      "post": {
        "operationId": "post_v1_accounting_report_balance-sheet",
        "summary": "Balance sheet report",
        "tags": [
          "Accounting"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_accounting_reports`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns assets, liabilities, and equity as JSON.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_accounting_reports"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_accounting_reports`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_accounting_reports`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/accounting/report/excel": {
      "post": {
        "operationId": "post_v1_accounting_report_excel",
        "summary": "Accounting report Excel",
        "tags": [
          "Accounting"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_export_accounting_reports`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nExports one accounting report to XLSX. Body includes report: general_ledger, trial_balance, balance_sheet, income_statement, tax_report, accounting_integrity, accounting_audit, or period_close_review.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_export_accounting_reports"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_export_accounting_reports`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_export_accounting_reports`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/accounting/report/general-ledger": {
      "post": {
        "operationId": "post_v1_accounting_report_general-ledger",
        "summary": "General ledger report",
        "tags": [
          "Accounting"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_accounting_reports`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns journal line activity as JSON.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_accounting_reports"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_accounting_reports`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_accounting_reports`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/accounting/report/income-statement": {
      "post": {
        "operationId": "post_v1_accounting_report_income-statement",
        "summary": "Income statement report",
        "tags": [
          "Accounting"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_accounting_reports`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns revenue, expenses, and net income as JSON.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_accounting_reports"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_accounting_reports`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_accounting_reports`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/accounting/report/tax": {
      "post": {
        "operationId": "post_v1_accounting_report_tax",
        "summary": "Tax accounting report",
        "tags": [
          "Accounting"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_accounting_reports`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns tax amounts from persisted tax trace lines as JSON.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_accounting_reports"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_accounting_reports`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_accounting_reports`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/accounting/report/trial-balance": {
      "post": {
        "operationId": "post_v1_accounting_report_trial-balance",
        "summary": "Trial balance report",
        "tags": [
          "Accounting"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_accounting_reports`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns account debit and credit balances as JSON.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_accounting_reports"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_accounting_reports`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_accounting_reports`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/accounting/tax": {
      "post": {
        "operationId": "post_v1_accounting_tax",
        "summary": "Retrieve a tax",
        "tags": [
          "Accounting"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_taxes`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nFetches one tax definition.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_taxes"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_taxes`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_taxes`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "put": {
        "operationId": "put_v1_accounting_tax",
        "summary": "Create a tax",
        "tags": [
          "Accounting"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_add_taxes`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nAdds a percent or fixed tax definition.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_add_taxes"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_add_taxes`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_add_taxes`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "patch": {
        "operationId": "patch_v1_accounting_tax",
        "summary": "Update a tax",
        "tags": [
          "Accounting"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe following checks depend on the action, filters or requested resource; they are not all required for every request:\n\n- `can_delete_taxes`, `can_edit_taxes`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nUpdates a tax definition.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "conditional",
          "required": [],
          "conditional": [
            {
              "checked": [
                "can_delete_taxes",
                "can_edit_taxes"
              ]
            }
          ],
          "description": {
            "en": "The following checks depend on the action, filters or requested resource; they are not all required for every request:\n\n- `can_delete_taxes`, `can_edit_taxes`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les vérifications suivantes dépendent de l’action, des filtres ou de la ressource demandée; elles ne sont pas toutes requises pour chaque requête :\n\n- `can_delete_taxes`, `can_edit_taxes`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/accounting/tax/calculate": {
      "post": {
        "operationId": "post_v1_accounting_tax_calculate",
        "summary": "Calculate taxes",
        "tags": [
          "Accounting"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nCalculates tax lines and totals for a subtotal and tax rule.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/accounting/tax/list": {
      "post": {
        "operationId": "post_v1_accounting_tax_list",
        "summary": "List taxes",
        "tags": [
          "Accounting"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_taxes`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns taxes, optionally filtered by tax rule.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_taxes"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_taxes`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_taxes`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/accounting/tax/rule": {
      "post": {
        "operationId": "post_v1_accounting_tax_rule",
        "summary": "Retrieve a tax rule",
        "tags": [
          "Accounting"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_tax_rules`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nFetches a single tax rule.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_tax_rules"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_tax_rules`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_tax_rules`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "put": {
        "operationId": "put_v1_accounting_tax_rule",
        "summary": "Create a tax rule",
        "tags": [
          "Accounting"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_add_tax_rules`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nAdds a tax rule container.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_add_tax_rules"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_add_tax_rules`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_add_tax_rules`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "patch": {
        "operationId": "patch_v1_accounting_tax_rule",
        "summary": "Update a tax rule",
        "tags": [
          "Accounting"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe following checks depend on the action, filters or requested resource; they are not all required for every request:\n\n- `can_delete_tax_rules`, `can_edit_tax_rules`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nUpdates a tax rule.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "conditional",
          "required": [],
          "conditional": [
            {
              "checked": [
                "can_delete_tax_rules",
                "can_edit_tax_rules"
              ]
            }
          ],
          "description": {
            "en": "The following checks depend on the action, filters or requested resource; they are not all required for every request:\n\n- `can_delete_tax_rules`, `can_edit_tax_rules`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les vérifications suivantes dépendent de l’action, des filtres ou de la ressource demandée; elles ne sont pas toutes requises pour chaque requête :\n\n- `can_delete_tax_rules`, `can_edit_tax_rules`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/accounting/tax/rule/list": {
      "post": {
        "operationId": "post_v1_accounting_tax_rule_list",
        "summary": "List tax rules",
        "tags": [
          "Accounting"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_tax_rules`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns paginated tax rules.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_tax_rules"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_tax_rules`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_tax_rules`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/accounting/transaction": {
      "post": {
        "operationId": "post_v1_accounting_transaction",
        "summary": "Retrieve an accounting transaction piste",
        "tags": [
          "Accounting"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_accounting_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nFetches one accounting journal transaction with its debit and credit lines.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_accounting_transactions"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_accounting_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_accounting_transactions`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "put": {
        "operationId": "put_v1_accounting_transaction",
        "summary": "Create an accounting transaction piste",
        "tags": [
          "Accounting"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_add_accounting_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nCreates a balanced accounting journal entry with debit and credit lines.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_add_accounting_transactions"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_add_accounting_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_add_accounting_transactions`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/accounting/transaction/duplicate": {
      "post": {
        "operationId": "post_v1_accounting_transaction_duplicate",
        "summary": "Duplicate an accounting transaction piste",
        "tags": [
          "Accounting"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_reverse_accounting_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nCreates a new balanced journal entry from an existing transaction.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_reverse_accounting_transactions"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_reverse_accounting_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_reverse_accounting_transactions`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/accounting/transaction/list": {
      "post": {
        "operationId": "post_v1_accounting_transaction_list",
        "summary": "List accounting transaction pistes",
        "tags": [
          "Accounting"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_accounting_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns paginated accounting journal headers.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_accounting_transactions"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_accounting_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_accounting_transactions`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/accounting/transaction/pdf": {
      "post": {
        "operationId": "post_v1_accounting_transaction_pdf",
        "summary": "Print an accounting transaction piste",
        "tags": [
          "Accounting"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_accounting_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nGenerates a transaction PDF.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_accounting_transactions"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_accounting_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_accounting_transactions`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/accounting/transaction/reverse": {
      "post": {
        "operationId": "post_v1_accounting_transaction_reverse",
        "summary": "Reverse an accounting transaction piste",
        "tags": [
          "Accounting"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_reverse_accounting_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nCreates a reversing journal entry with debit and credit lines swapped.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_reverse_accounting_transactions"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_reverse_accounting_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_reverse_accounting_transactions`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/ai/agent": {
      "post": {
        "operationId": "aiAgentQuery",
        "summary": "Route-backed AI agent",
        "tags": [
          "AI & Conversations"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "question": {
                    "type": "string",
                    "description": "Natural language question or command."
                  },
                  "message": {
                    "type": "string",
                    "description": "Alias for question."
                  },
                  "locale": {
                    "type": "string",
                    "default": "en"
                  },
                  "session_id": {
                    "type": "integer",
                    "description": "Optional existing AI chat session ID."
                  },
                  "persist": {
                    "type": "boolean",
                    "description": "Create and persist to a chat session when session_id is not provided."
                  },
                  "create_session": {
                    "type": "boolean",
                    "description": "Alias for persist."
                  },
                  "confirmed": {
                    "type": "boolean",
                    "description": "Execute a previously selected risky tool when true."
                  },
                  "tool": {
                    "type": "string",
                    "description": "Confirmed tool name for deterministic replay."
                  },
                  "payload": {
                    "type": "object",
                    "description": "Confirmed tool payload."
                  },
                  "tool_calls": {
                    "type": "array",
                    "description": "Confirmed bounded sequence for deterministic replay.",
                    "items": {
                      "type": "object",
                      "properties": {
                        "tool": {
                          "type": "string"
                        },
                        "payload": {
                          "type": "object"
                        }
                      }
                    }
                  },
                  "confirm": {
                    "type": "object",
                    "description": "Confirmation object returned by a previous agent response."
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Agent response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "answer": {
                      "type": "string"
                    },
                    "selected": {
                      "type": "object"
                    },
                    "tool": {
                      "type": "object"
                    },
                    "tool_result": {
                      "type": "object"
                    },
                    "tool_sequence_result": {
                      "type": "object"
                    },
                    "tool_executed": {
                      "type": "boolean"
                    },
                    "requires_confirmation": {
                      "type": "boolean"
                    },
                    "confirm": {
                      "type": "object"
                    },
                    "session_id": {
                      "type": "integer"
                    },
                    "intent": {
                      "type": "string",
                      "description": "Detected request intent: knowledge, task, plan, or tool_or_answer."
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nUses AI to choose and call Lexoh service tools. All tools execute through existing route handlers and permissions.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/ai/agent/execute": {
      "post": {
        "operationId": "aiAgentExecuteTool",
        "summary": "Execute AI agent tool",
        "tags": [
          "AI & Conversations"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "tool": {
                    "type": "string"
                  },
                  "service": {
                    "type": "string"
                  },
                  "operation": {
                    "type": "string"
                  },
                  "payload": {
                    "type": "object"
                  },
                  "confirmed": {
                    "type": "boolean"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tool execution result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "requires_confirmation": {
                      "type": "boolean"
                    },
                    "tool": {
                      "type": "object"
                    },
                    "payload": {
                      "type": "object"
                    },
                    "response": {
                      "type": "object"
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nExecutes a specific route-backed service tool through existing permissions.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/ai/agent/stream": {
      "post": {
        "operationId": "aiAgentStream",
        "summary": "Route-backed AI agent streaming",
        "tags": [
          "AI & Conversations"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "question": {
                    "type": "string"
                  },
                  "message": {
                    "type": "string"
                  },
                  "locale": {
                    "type": "string",
                    "default": "en"
                  },
                  "session_id": {
                    "type": "integer"
                  },
                  "persist": {
                    "type": "boolean"
                  },
                  "create_session": {
                    "type": "boolean"
                  },
                  "confirmed": {
                    "type": "boolean"
                  },
                  "tool": {
                    "type": "string"
                  },
                  "payload": {
                    "type": "object"
                  },
                  "tool_calls": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "tool": {
                          "type": "string"
                        },
                        "payload": {
                          "type": "object"
                        }
                      }
                    }
                  },
                  "confirm": {
                    "type": "object"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Server-Sent Events stream. Emits status, context, tool_candidates, tool_selection, task_plan, selected_tool, confirmation_required, tool_result, tool_sequence_result, done, and error events.",
            "content": {
              "text/event-stream": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nStreams route-backed agent progress and final response with server-sent events.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/ai/agent/tools": {
      "post": {
        "operationId": "aiAgentTools",
        "summary": "List AI agent tools",
        "tags": [
          "AI & Conversations"
        ],
        "responses": {
          "200": {
            "description": "Agent tool catalog",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "count": {
                      "type": "integer"
                    },
                    "tools": {
                      "type": "array",
                      "items": {
                        "type": "object"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nLists all non-AI service tools available to the route-backed agent.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/ai/chat/message": {
      "post": {
        "operationId": "post_v1_ai_chat_message",
        "summary": "Send chat message",
        "tags": [
          "AI & Conversations"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe following checks depend on the action, filters or requested resource; they are not all required for every request:\n\n- `can_view_entries`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nSends a message within a chat session. Auto-creates session if none specified.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "conditional",
          "required": [],
          "conditional": [
            {
              "checked": [
                "can_view_entries"
              ]
            }
          ],
          "description": {
            "en": "The following checks depend on the action, filters or requested resource; they are not all required for every request:\n\n- `can_view_entries`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les vérifications suivantes dépendent de l’action, des filtres ou de la ressource demandée; elles ne sont pas toutes requises pour chaque requête :\n\n- `can_view_entries`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/ai/chat/sessions/create": {
      "post": {
        "operationId": "post_v1_ai_chat_sessions_create",
        "summary": "Create chat session",
        "tags": [
          "AI & Conversations"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nCreates a new AI chat session for the current user.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/ai/chat/sessions/delete": {
      "post": {
        "operationId": "post_v1_ai_chat_sessions_delete",
        "summary": "Delete chat session",
        "tags": [
          "AI & Conversations"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nPermanently deletes a chat session and all its messages.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/ai/chat/sessions/get": {
      "post": {
        "operationId": "post_v1_ai_chat_sessions_get",
        "summary": "Get chat session",
        "tags": [
          "AI & Conversations"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns a chat session with all its messages. Also restores in-memory conversation context.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/ai/chat/sessions/list": {
      "post": {
        "operationId": "post_v1_ai_chat_sessions_list",
        "summary": "List chat sessions",
        "tags": [
          "AI & Conversations"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns all AI chat sessions for the current user.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/ai/chat/sessions/update": {
      "post": {
        "operationId": "post_v1_ai_chat_sessions_update",
        "summary": "Update chat session",
        "tags": [
          "AI & Conversations"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRenames a chat session.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/ai/mcp": {
      "post": {
        "operationId": "post_v1_ai_mcp",
        "summary": "Mcp",
        "tags": [
          "MCP & OAuth"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "get": {
        "operationId": "get_v1_ai_mcp",
        "summary": "Mcp Sse",
        "tags": [
          "MCP & OAuth"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version."
      }
    },
    "/v1/ai/mcp/oauth/client": {
      "post": {
        "operationId": "post_v1_ai_mcp_oauth_client",
        "summary": "Mcp O Auth Client Create",
        "tags": [
          "MCP & OAuth"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "delete": {
        "operationId": "delete_v1_ai_mcp_oauth_client",
        "summary": "Mcp O Auth Client Revoke",
        "tags": [
          "MCP & OAuth"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/ai/mcp/oauth/client/list": {
      "get": {
        "operationId": "get_v1_ai_mcp_oauth_client_list",
        "summary": "Mcp O Auth Client List",
        "tags": [
          "MCP & OAuth"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version."
      }
    },
    "/v1/ai/mcp/sse": {
      "get": {
        "operationId": "get_v1_ai_mcp_sse",
        "summary": "Mcp Sse",
        "tags": [
          "MCP & OAuth"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version."
      }
    },
    "/v1/ai/mcp/token": {
      "post": {
        "operationId": "post_v1_ai_mcp_token",
        "summary": "MCP token management",
        "tags": [
          "MCP & OAuth"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nCreate (POST), revoke (DELETE), or list (GET) user MCP tokens for connecting external AI providers to the MCP server.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "delete": {
        "operationId": "delete_v1_ai_mcp_token",
        "summary": "Mcp Token Revoke",
        "tags": [
          "MCP & OAuth"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/ai/mcp/token/list": {
      "get": {
        "operationId": "get_v1_ai_mcp_token_list",
        "summary": "Mcp Token List",
        "tags": [
          "MCP & OAuth"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version."
      }
    },
    "/v1/ai/nlp": {
      "post": {
        "operationId": "aiNlpQuery",
        "summary": "NLP query",
        "tags": [
          "AI & Conversations"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "question"
                ],
                "properties": {
                  "question": {
                    "type": "string"
                  },
                  "locale": {
                    "type": "string",
                    "default": "en"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "AI response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "answer": {
                      "type": "string"
                    },
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object"
                      }
                    },
                    "chart_suggestion": {
                      "type": "string"
                    },
                    "follow_ups": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "insight": {
                      "type": "string"
                    },
                    "action_executed": {
                      "type": "boolean"
                    },
                    "action_dispatched": {
                      "type": "boolean",
                      "description": "True when a device command was sent to the WebSocket layer."
                    },
                    "delivery_confirmed": {
                      "type": "boolean",
                      "description": "Always false for fire-and-forget device commands unless a future device acknowledgement is added."
                    },
                    "event_logged": {
                      "type": "boolean",
                      "description": "True when the command event was written to the event log."
                    },
                    "event_id": {
                      "type": "integer",
                      "nullable": true
                    },
                    "action_type": {
                      "type": "string"
                    },
                    "action_device_id": {
                      "type": "integer"
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\nThe following checks depend on the action, filters or requested resource; they are not all required for every request:\n\n- `can_view_entries`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nSends a natural language query to the AI assistant and returns the complete response.",
        "x-lexoh-permissions": {
          "status": "conditional",
          "required": [],
          "conditional": [
            {
              "checked": [
                "can_view_entries"
              ]
            }
          ],
          "description": {
            "en": "The following checks depend on the action, filters or requested resource; they are not all required for every request:\n\n- `can_view_entries`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les vérifications suivantes dépendent de l’action, des filtres ou de la ressource demandée; elles ne sont pas toutes requises pour chaque requête :\n\n- `can_view_entries`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/ai/nlp/clear": {
      "post": {
        "operationId": "aiClearConversation",
        "summary": "Clear AI conversation",
        "tags": [
          "AI & Conversations"
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessResponse"
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nResets the current user's NLP conversation history to start a fresh session.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/ai/nlp/stream": {
      "post": {
        "operationId": "aiNlpStream",
        "summary": "NLP query (streaming)",
        "tags": [
          "AI & Conversations"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "question"
                ],
                "properties": {
                  "question": {
                    "type": "string"
                  },
                  "locale": {
                    "type": "string",
                    "default": "en"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Server-Sent Events stream",
            "content": {
              "text/event-stream": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\nThe following checks depend on the action, filters or requested resource; they are not all required for every request:\n\n- `can_view_entries`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nSends a natural language query to the AI assistant and streams the response in real-time using server-sent events.",
        "x-lexoh-permissions": {
          "status": "conditional",
          "required": [],
          "conditional": [
            {
              "checked": [
                "can_view_entries"
              ]
            }
          ],
          "description": {
            "en": "The following checks depend on the action, filters or requested resource; they are not all required for every request:\n\n- `can_view_entries`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les vérifications suivantes dépendent de l’action, des filtres ou de la ressource demandée; elles ne sont pas toutes requises pour chaque requête :\n\n- `can_view_entries`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/ai/usage": {
      "post": {
        "operationId": "post_v1_ai_usage",
        "summary": "AI Usage Summary",
        "tags": [
          "AI & Conversations"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe following checks depend on the action, filters or requested resource; they are not all required for every request:\n\n- `can_edit_users`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns aggregated AI usage statistics (per-model, per-user, per-day cost breakdown). Requires can_edit_users permission.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "conditional",
          "required": [],
          "conditional": [
            {
              "checked": [
                "can_edit_users"
              ]
            }
          ],
          "description": {
            "en": "The following checks depend on the action, filters or requested resource; they are not all required for every request:\n\n- `can_edit_users`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les vérifications suivantes dépendent de l’action, des filtres ou de la ressource demandée; elles ne sont pas toutes requises pour chaque requête :\n\n- `can_edit_users`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/ai/usage/logs": {
      "post": {
        "operationId": "post_v1_ai_usage_logs",
        "summary": "AI Usage Logs",
        "tags": [
          "AI & Conversations"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe following checks depend on the action, filters or requested resource; they are not all required for every request:\n\n- `can_edit_users`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns raw paginated AI usage logs. Requires can_edit_users permission.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "conditional",
          "required": [],
          "conditional": [
            {
              "checked": [
                "can_edit_users"
              ]
            }
          ],
          "description": {
            "en": "The following checks depend on the action, filters or requested resource; they are not all required for every request:\n\n- `can_edit_users`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les vérifications suivantes dépendent de l’action, des filtres ou de la ressource demandée; elles ne sont pas toutes requises pour chaque requête :\n\n- `can_edit_users`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/alert": {
      "post": {
        "operationId": "getAlert",
        "summary": "Retrieve a single alert",
        "tags": [
          "Alerts"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "id"
                ],
                "properties": {
                  "id": {
                    "type": "integer",
                    "description": "The alert UUID"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "alert": {
                      "$ref": "#/components/schemas/Alert"
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_view_alerts`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nFetches an alert record by ID, including severity, source device, and acknowledgement status.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_alerts"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_alerts`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_alerts`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/alert/excel": {
      "post": {
        "operationId": "exportAlertExcel",
        "summary": "Download alerts as Excel",
        "tags": [
          "Alerts"
        ],
        "responses": {
          "200": {
            "description": "Excel file",
            "content": {
              "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_view_alerts`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nGenerates an .xlsx spreadsheet of alerts matching the filter criteria.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_alerts"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_alerts`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_alerts`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/alert/list": {
      "post": {
        "operationId": "listAlerts",
        "summary": "List alerts",
        "tags": [
          "Alerts"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "page": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "page_limit": {
                    "type": "integer"
                  },
                  "search": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "count": {
                      "type": "integer"
                    },
                    "alerts": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Alert"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_view_alerts`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns a paginated list of system alerts. Supports filtering by severity, date range, and source device.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_alerts"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_alerts`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_alerts`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/analytics/day_of_week": {
      "post": {
        "operationId": "post_v1_analytics_day_of_week",
        "summary": "Analytics: day-of-week distribution",
        "tags": [
          "Analytics"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns entry counts by day of week (Monday=1 … Sunday=7).\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/analytics/entries": {
      "post": {
        "operationId": "post_v1_analytics_entries",
        "summary": "Analytics: entries grouped by period",
        "tags": [
          "Analytics"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns entry/exit counts and average duration grouped by period.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/analytics/payment_breakdown": {
      "post": {
        "operationId": "post_v1_analytics_payment_breakdown",
        "summary": "Analytics: payment method breakdown",
        "tags": [
          "Analytics"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns revenue and count grouped by card brand and payment type.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/analytics/peak_hours": {
      "post": {
        "operationId": "post_v1_analytics_peak_hours",
        "summary": "Analytics: peak hours",
        "tags": [
          "Analytics"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns entry counts by hour of day (0-23) to identify busiest times.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/analytics/revenue": {
      "post": {
        "operationId": "post_v1_analytics_revenue",
        "summary": "Analytics: revenue grouped by period",
        "tags": [
          "Analytics"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns total revenue and transaction counts grouped by hour/day/week/month/quarter/year.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/analytics/top_customers": {
      "post": {
        "operationId": "post_v1_analytics_top_customers",
        "summary": "Analytics: top customers",
        "tags": [
          "Analytics"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns top N customers ranked by total spend or visit count.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/analytics/top_zones": {
      "post": {
        "operationId": "post_v1_analytics_top_zones",
        "summary": "Analytics: top zones",
        "tags": [
          "Analytics"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns top N parking zones ranked by revenue, entry count, or avg duration.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/analytics/vs_prior": {
      "post": {
        "operationId": "post_v1_analytics_vs_prior",
        "summary": "Analytics: revenue vs prior period",
        "tags": [
          "Analytics"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nCompares current date range revenue/entries vs the immediately prior same-length period.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/audit/entity-types": {
      "post": {
        "operationId": "post_v1_audit_entity-types",
        "summary": "List audited entity types",
        "tags": [
          "Audit & History"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/audit/list": {
      "post": {
        "operationId": "post_v1_audit_list",
        "summary": "List audit entries",
        "tags": [
          "Audit & History"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns mutation-only create/update/delete activity with actor, source and redacted field-level diffs. Telemetry and status-only device updates are excluded by the audit service.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/auth/login": {
      "post": {
        "operationId": "authLogin",
        "summary": "Log in with credentials",
        "tags": [
          "Authentication"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "username",
                  "password"
                ],
                "properties": {
                  "username": {
                    "type": "string"
                  },
                  "password": {
                    "type": "string",
                    "format": "password",
                    "writeOnly": true
                  }
                }
              },
              "example": {
                "username": "USERNAME",
                "password": "PASSWORD"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Session created; complete MFA when enabled.",
            "headers": {
              "SessionID": {
                "schema": {
                  "type": "string"
                },
                "description": "New session token."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "session": {
                      "type": "string"
                    },
                    "user": {
                      "type": "object",
                      "properties": {
                        "mfa_enabled": {
                          "type": "boolean"
                        }
                      },
                      "additionalProperties": true
                    },
                    "role": {
                      "type": "object",
                      "additionalProperties": true
                    },
                    "servers": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": true
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid JSON request."
          },
          "404": {
            "description": "Credentials were not accepted."
          },
          "500": {
            "description": "Authentication processing failed."
          }
        },
        "description": "### Required permissions\n\nNo additional role permission for this operation. The stated authentication requirements still apply.\n\nAuthenticates an existing account and returns a session with user, role and server information. Login sets the SessionID response header and the session cookie. When user.mfa_enabled is true, the returned session still requires POST /v1/auth/mfa before protected operations.",
        "security": [],
        "x-lexoh-permissions": {
          "status": "no-role-permission",
          "required": [],
          "conditional": [],
          "description": {
            "en": "No additional role permission for this operation. The stated authentication requirements still apply.",
            "fr": "Aucune permission de rôle supplémentaire pour cette opération. Les exigences d’authentification indiquées restent applicables."
          }
        }
      }
    },
    "/v1/auth/logout": {
      "post": {
        "operationId": "authLogoutPost",
        "summary": "Log out (POST)",
        "tags": [
          "Authentication"
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessResponse"
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\nNo additional role permission for this operation. The stated authentication requirements still apply.\n\nSend the SessionID header to invalidate the stored session. Clearing only the client-side token is not a server logout.",
        "security": [
          {
            "sessionHeader": []
          }
        ],
        "x-lexoh-permissions": {
          "status": "no-role-permission",
          "required": [],
          "conditional": [],
          "description": {
            "en": "No additional role permission for this operation. The stated authentication requirements still apply.",
            "fr": "Aucune permission de rôle supplémentaire pour cette opération. Les exigences d’authentification indiquées restent applicables."
          }
        }
      },
      "get": {
        "operationId": "authLogoutGet",
        "summary": "Log out (GET)",
        "tags": [
          "Authentication"
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessResponse"
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\nNo additional role permission for this operation. The stated authentication requirements still apply.\n\nSend the SessionID header to invalidate the stored session. Clearing only the client-side token is not a server logout.",
        "security": [
          {
            "sessionHeader": []
          }
        ],
        "x-lexoh-permissions": {
          "status": "no-role-permission",
          "required": [],
          "conditional": [],
          "description": {
            "en": "No additional role permission for this operation. The stated authentication requirements still apply.",
            "fr": "Aucune permission de rôle supplémentaire pour cette opération. Les exigences d’authentification indiquées restent applicables."
          }
        }
      }
    },
    "/v1/auth/mfa": {
      "post": {
        "operationId": "authValidateMfa",
        "summary": "Validate MFA code",
        "tags": [
          "Authentication"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "token": {
                    "type": "string",
                    "description": "Current MFA code."
                  },
                  "code": {
                    "type": "string",
                    "description": "Alias for token."
                  }
                },
                "anyOf": [
                  {
                    "required": [
                      "token"
                    ]
                  },
                  {
                    "required": [
                      "code"
                    ]
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "mfa_enabled": {
                      "type": "boolean"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid session format, JSON or MFA code."
          },
          "404": {
            "description": "User not found."
          },
          "500": {
            "description": "Session or MFA processing failed."
          }
        },
        "description": "### Required permissions\n\nNo additional role permission for this operation. The stated authentication requirements still apply.\n\nValidates the MFA code for the session returned by login. Send SessionID and the JSON token field; code is accepted as an alias. A successful response marks this existing session as MFA-validated.",
        "x-lexoh-permissions": {
          "status": "no-role-permission",
          "required": [],
          "conditional": [],
          "description": {
            "en": "No additional role permission for this operation. The stated authentication requirements still apply.",
            "fr": "Aucune permission de rôle supplémentaire pour cette opération. Les exigences d’authentification indiquées restent applicables."
          }
        }
      }
    },
    "/v1/banking/account/validate": {
      "post": {
        "operationId": "post_v1_banking_account_validate",
        "summary": "Validate destination bank account",
        "tags": [
          "Banking & Reconciliation"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nCalls a direct-bank provider adapter to validate an institution/transit/account tuple.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_bank_settings"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_bank_settings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/banking/connection": {
      "post": {
        "operationId": "post_v1_banking_connection",
        "summary": "Retrieve bank connection",
        "tags": [
          "Banking & Reconciliation"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nFetches a configured bank connector by ID.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_bank_settings"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_bank_settings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "put": {
        "operationId": "put_v1_banking_connection",
        "summary": "Save bank connection",
        "tags": [
          "Banking & Reconciliation"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_edit_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nCreates a bank connection. Secrets are stored as Kubernetes secret references only.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_bank_settings"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_bank_settings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "patch": {
        "operationId": "patch_v1_banking_connection",
        "summary": "Update bank connection",
        "tags": [
          "Banking & Reconciliation"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_edit_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nUpdates a bank connection. Secrets are stored as Kubernetes secret references only.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_bank_settings"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_bank_settings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "delete": {
        "operationId": "delete_v1_banking_connection",
        "summary": "Disable bank connection",
        "tags": [
          "Banking & Reconciliation"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_edit_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nSoft-deletes a bank connection.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_bank_settings"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_bank_settings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/banking/connection/list": {
      "post": {
        "operationId": "post_v1_banking_connection_list",
        "summary": "List bank connections",
        "tags": [
          "Banking & Reconciliation"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns configured bank API/file connections.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_bank_settings"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_bank_settings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/banking/connection/validate": {
      "post": {
        "operationId": "post_v1_banking_connection_validate",
        "summary": "Validate bank connection",
        "tags": [
          "Banking & Reconciliation"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nValidates a bank API/file connection without storing it.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_bank_settings"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_bank_settings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/banking/import-mapping-rule": {
      "put": {
        "operationId": "put_v1_banking_import-mapping-rule",
        "summary": "Save bank import mapping rule",
        "tags": [
          "Banking & Reconciliation"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_edit_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nCreates or updates a saved bank import mapping rule.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_bank_settings"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_bank_settings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "patch": {
        "operationId": "patch_v1_banking_import-mapping-rule",
        "summary": "Save Import Mapping Rule",
        "tags": [
          "Banking & Reconciliation"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_edit_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_bank_settings"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_bank_settings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "delete": {
        "operationId": "delete_v1_banking_import-mapping-rule",
        "summary": "Delete bank import mapping rule",
        "tags": [
          "Banking & Reconciliation"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_edit_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nDisables a saved bank import mapping rule.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_bank_settings"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_bank_settings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/banking/import-mapping-rule/list": {
      "post": {
        "operationId": "post_v1_banking_import-mapping-rule_list",
        "summary": "List bank import mapping rules",
        "tags": [
          "Banking & Reconciliation"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nLists saved rules used to map imported bank transactions to accounts and taxes.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_bank_settings"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_bank_settings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/banking/imported-transaction/bulk-post": {
      "post": {
        "operationId": "post_v1_banking_imported-transaction_bulk-post",
        "summary": "Bulk post imported bank transactions",
        "tags": [
          "Banking & Reconciliation"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_edit_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nPosts or matches multiple imported bank transactions using saved mapping rules and existing accounting candidates.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_bank_settings"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_bank_settings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/banking/imported-transaction/list": {
      "post": {
        "operationId": "post_v1_banking_imported-transaction_list",
        "summary": "List imported bank transactions",
        "tags": [
          "Banking & Reconciliation"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nLists imported bank transactions awaiting reconciliation/posting.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_bank_settings"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_bank_settings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/banking/imported-transaction/match": {
      "post": {
        "operationId": "post_v1_banking_imported-transaction_match",
        "summary": "Match imported bank transaction",
        "tags": [
          "Banking & Reconciliation"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_edit_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nMatches one imported bank transaction to an existing accounting transaction line and reconciles it.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_bank_settings"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_bank_settings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/banking/imported-transaction/post": {
      "post": {
        "operationId": "post_v1_banking_imported-transaction_post",
        "summary": "Post imported bank transaction",
        "tags": [
          "Banking & Reconciliation"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_edit_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nMaps one imported bank transaction to accounting accounts and creates a balanced journal entry.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_bank_settings"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_bank_settings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/banking/payment-batch": {
      "post": {
        "operationId": "post_v1_banking_payment-batch",
        "summary": "Retrieve bank payment batch",
        "tags": [
          "Banking & Reconciliation"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nFetches a tracked payment batch and its payment items.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_bank_settings"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_bank_settings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "put": {
        "operationId": "put_v1_banking_payment-batch",
        "summary": "Create bank payment batch",
        "tags": [
          "Banking & Reconciliation"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_create_bank_payments`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nCreates a payment batch that can later be submitted through a live bank API adapter or manual file workflow.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_create_bank_payments"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_create_bank_payments`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_create_bank_payments`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/banking/payment-batch/approve": {
      "post": {
        "operationId": "post_v1_banking_payment-batch_approve",
        "summary": "Approve bank payment batch",
        "tags": [
          "Banking & Reconciliation"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_approve_bank_payments`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nApproves a pending payment batch while enforcing maker/checker separation.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_approve_bank_payments"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_approve_bank_payments`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_approve_bank_payments`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/banking/payment-batch/cancel": {
      "post": {
        "operationId": "post_v1_banking_payment-batch_cancel",
        "summary": "Cancel bank payment batch",
        "tags": [
          "Banking & Reconciliation"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_create_bank_payments`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nCancels a pre-delivery payment batch with an auditable reason.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_create_bank_payments"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_create_bank_payments`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_create_bank_payments`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/banking/payment-batch/download-file": {
      "post": {
        "operationId": "source_post__v1_banking_payment_batch_download_file",
        "responses": {
          "default": {
            "description": "Response status and schema are not yet specified for this operation."
          }
        },
        "summary": "Download Payment Batch File",
        "tags": [
          "Banking & Reconciliation"
        ],
        "description": "### Required permissions\n\n- `can_download_bank_payment_files`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_download_bank_payment_files"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_download_bank_payment_files`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_download_bank_payment_files`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/banking/payment-batch/generate-file": {
      "post": {
        "operationId": "post_v1_banking_payment-batch_generate-file",
        "summary": "Generate bank payment EFT/AFT file",
        "tags": [
          "Banking & Reconciliation"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_deliver_bank_payments`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nGenerates and persists one immutable file from an approved manual payment batch.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_deliver_bank_payments"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_deliver_bank_payments`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_deliver_bank_payments`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/banking/payment-batch/list": {
      "post": {
        "operationId": "post_v1_banking_payment-batch_list",
        "summary": "List bank payment batches",
        "tags": [
          "Banking & Reconciliation"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns tracked API/file payment batches.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_bank_settings"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_bank_settings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/banking/payment-batch/reject": {
      "post": {
        "operationId": "post_v1_banking_payment-batch_reject",
        "summary": "Reject bank payment batch",
        "tags": [
          "Banking & Reconciliation"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_approve_bank_payments`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRejects a pending payment batch with an auditable reason.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_approve_bank_payments"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_approve_bank_payments`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_approve_bank_payments`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/banking/payment-batch/request-approval": {
      "post": {
        "operationId": "post_v1_banking_payment-batch_request-approval",
        "summary": "Request bank payment batch approval",
        "tags": [
          "Banking & Reconciliation"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_create_bank_payments`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nSends a validated payment batch to a separate checker for approval.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_create_bank_payments"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_create_bank_payments`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_create_bank_payments`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/banking/payment-batch/reverse": {
      "post": {
        "operationId": "source_post__v1_banking_payment_batch_reverse",
        "responses": {
          "default": {
            "description": "Response status and schema are not yet specified for this operation."
          }
        },
        "summary": "Reverse Payment Batch",
        "tags": [
          "Banking & Reconciliation"
        ],
        "description": "### Required permissions\n\n- `can_reverse_bank_payments`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_reverse_bank_payments"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_reverse_bank_payments`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_reverse_bank_payments`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/banking/payment-batch/status": {
      "post": {
        "operationId": "post_v1_banking_payment-batch_status",
        "summary": "Refresh bank payment batch status",
        "tags": [
          "Banking & Reconciliation"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_resolve_bank_payment_acknowledgements`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nPulls the latest direct-bank provider status for a submitted payment batch.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_resolve_bank_payment_acknowledgements"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_resolve_bank_payment_acknowledgements`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_resolve_bank_payment_acknowledgements`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/banking/payment-batch/submit": {
      "post": {
        "operationId": "post_v1_banking_payment-batch_submit",
        "summary": "Submit bank payment batch",
        "tags": [
          "Banking & Reconciliation"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_deliver_bank_payments`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nMoves a payment batch to a guarded submission state. No live API payment is sent unless the connection is explicitly enabled.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_deliver_bank_payments"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_deliver_bank_payments`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_deliver_bank_payments`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/banking/payment-batch/validate": {
      "post": {
        "operationId": "post_v1_banking_payment-batch_validate",
        "summary": "Validate bank payment batch",
        "tags": [
          "Banking & Reconciliation"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_create_bank_payments`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRevalidates the immutable financial contents of a draft payment batch.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_create_bank_payments"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_create_bank_payments`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_create_bank_payments`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/banking/plaid/link-token": {
      "post": {
        "operationId": "post_v1_banking_plaid_link-token",
        "summary": "Create Plaid Link token",
        "tags": [
          "Banking & Reconciliation"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_edit_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nCreates a Plaid Link token for a configured Plaid bank connection.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_bank_settings"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_bank_settings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/banking/plaid/public-token/exchange": {
      "post": {
        "operationId": "post_v1_banking_plaid_public-token_exchange",
        "summary": "Exchange Plaid public token",
        "tags": [
          "Banking & Reconciliation"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_edit_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nExchanges a Plaid public token returned by Link for an access token.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_bank_settings"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_bank_settings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/banking/provider-accounts": {
      "post": {
        "operationId": "post_v1_banking_provider-accounts",
        "summary": "Retrieve provider entitled accounts",
        "tags": [
          "Banking & Reconciliation"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nCalls a direct-bank provider adapter and returns bank accounts authorized for the connection profile.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_bank_settings"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_bank_settings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/banking/provider-balances": {
      "post": {
        "operationId": "post_v1_banking_provider-balances",
        "summary": "Retrieve provider bank balances",
        "tags": [
          "Banking & Reconciliation"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nCalls a direct-bank provider adapter and returns live account balances without importing transactions.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_bank_settings"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_bank_settings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/banking/provider/list": {
      "post": {
        "operationId": "post_v1_banking_provider_list",
        "summary": "Bank provider metadata",
        "tags": [
          "Banking & Reconciliation"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns bank connector capabilities, documentation links, and implementation status.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_bank_settings"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_bank_settings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/banking/real-time-payment": {
      "post": {
        "operationId": "post_v1_banking_real-time-payment",
        "summary": "Retrieve bank real-time payment",
        "tags": [
          "Banking & Reconciliation"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nFetches a tracked Scotia RTP / Interac e-Transfer payment.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_bank_settings"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_bank_settings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "put": {
        "operationId": "put_v1_banking_real-time-payment",
        "summary": "Create bank real-time payment",
        "tags": [
          "Banking & Reconciliation"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_edit_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nCreates a Scotia RTP / Interac e-Transfer draft that can be submitted after bank onboarding.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_bank_settings"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_bank_settings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/banking/real-time-payment/cancel": {
      "post": {
        "operationId": "post_v1_banking_real-time-payment_cancel",
        "summary": "Cancel bank real-time payment",
        "tags": [
          "Banking & Reconciliation"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_edit_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nCancels a Scotia RTP payment by provider payment id.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_bank_settings"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_bank_settings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/banking/real-time-payment/list": {
      "post": {
        "operationId": "post_v1_banking_real-time-payment_list",
        "summary": "List bank real-time payments",
        "tags": [
          "Banking & Reconciliation"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns tracked Scotia RTP / Interac e-Transfer payments.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_bank_settings"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_bank_settings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/banking/real-time-payment/options": {
      "post": {
        "operationId": "post_v1_banking_real-time-payment_options",
        "summary": "Scotia real-time payment options",
        "tags": [
          "Banking & Reconciliation"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nCalls Scotia's RTP payment-options inquiry for Interac alias/account routing.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_bank_settings"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_bank_settings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/banking/real-time-payment/status": {
      "post": {
        "operationId": "post_v1_banking_real-time-payment_status",
        "summary": "Refresh bank real-time payment status",
        "tags": [
          "Banking & Reconciliation"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nPulls the latest Scotia RTP payment status.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_bank_settings"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_bank_settings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/banking/real-time-payment/submit": {
      "post": {
        "operationId": "post_v1_banking_real-time-payment_submit",
        "summary": "Submit bank real-time payment",
        "tags": [
          "Banking & Reconciliation"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_edit_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nSends a Scotia RTP / Interac e-Transfer payment when the connection has live RTP submission enabled.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_bank_settings"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_bank_settings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/banking/reconciliation-session": {
      "post": {
        "operationId": "source_post__v1_banking_reconciliation_session",
        "responses": {
          "default": {
            "description": "Response status and schema are not yet specified for this operation."
          }
        },
        "summary": "Retrieve Reconciliation Session",
        "tags": [
          "Banking & Reconciliation"
        ],
        "description": "### Required permissions\n\n- `can_view_accounting_reconciliation`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_accounting_reconciliation"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_accounting_reconciliation`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_accounting_reconciliation`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "put": {
        "operationId": "source_put__v1_banking_reconciliation_session",
        "responses": {
          "default": {
            "description": "Response status and schema are not yet specified for this operation."
          }
        },
        "summary": "Create Reconciliation Session",
        "tags": [
          "Banking & Reconciliation"
        ],
        "description": "### Required permissions\n\n- `can_edit_accounting_reconciliation`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_accounting_reconciliation"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_accounting_reconciliation`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_accounting_reconciliation`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/banking/reconciliation-session/close": {
      "post": {
        "operationId": "source_post__v1_banking_reconciliation_session_close",
        "responses": {
          "default": {
            "description": "Response status and schema are not yet specified for this operation."
          }
        },
        "summary": "Close Reconciliation Session",
        "tags": [
          "Banking & Reconciliation"
        ],
        "description": "### Required permissions\n\n- `can_edit_accounting_reconciliation`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_accounting_reconciliation"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_accounting_reconciliation`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_accounting_reconciliation`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/banking/reconciliation-session/list": {
      "post": {
        "operationId": "source_post__v1_banking_reconciliation_session_list",
        "responses": {
          "default": {
            "description": "Response status and schema are not yet specified for this operation."
          }
        },
        "summary": "Retrieve Reconciliation Sessions",
        "tags": [
          "Banking & Reconciliation"
        ],
        "description": "### Required permissions\n\n- `can_view_accounting_reconciliation`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_accounting_reconciliation"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_accounting_reconciliation`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_accounting_reconciliation`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/banking/reconciliation-session/reopen": {
      "post": {
        "operationId": "source_post__v1_banking_reconciliation_session_reopen",
        "responses": {
          "default": {
            "description": "Response status and schema are not yet specified for this operation."
          }
        },
        "summary": "Reopen Reconciliation Session",
        "tags": [
          "Banking & Reconciliation"
        ],
        "description": "### Required permissions\n\n- `can_reopen_bank_reconciliation_sessions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_reopen_bank_reconciliation_sessions"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_reopen_bank_reconciliation_sessions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_reopen_bank_reconciliation_sessions`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/banking/request-for-payment": {
      "post": {
        "operationId": "post_v1_banking_request-for-payment",
        "summary": "Retrieve bank Request-for-Payment",
        "tags": [
          "Banking & Reconciliation"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nFetches a tracked Interac/Scotia Request-for-Payment.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_bank_settings"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_bank_settings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "put": {
        "operationId": "put_v1_banking_request-for-payment",
        "summary": "Create bank Request-for-Payment",
        "tags": [
          "Banking & Reconciliation"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_edit_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nCreates a Request-for-Payment draft that can be submitted through Scotia TranXact.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_bank_settings"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_bank_settings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/banking/request-for-payment/cancel": {
      "post": {
        "operationId": "post_v1_banking_request-for-payment_cancel",
        "summary": "Cancel Request-for-Payment",
        "tags": [
          "Banking & Reconciliation"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_edit_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nCancels a Scotia Request-for-Payment by provider request id.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_bank_settings"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_bank_settings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/banking/request-for-payment/list": {
      "post": {
        "operationId": "post_v1_banking_request-for-payment_list",
        "summary": "List bank Request-for-Payments",
        "tags": [
          "Banking & Reconciliation"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns tracked Request-for-Payment records.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_bank_settings"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_bank_settings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/banking/request-for-payment/status": {
      "post": {
        "operationId": "post_v1_banking_request-for-payment_status",
        "summary": "Refresh Request-for-Payment status",
        "tags": [
          "Banking & Reconciliation"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nPulls the latest Scotia Request-for-Payment status.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_bank_settings"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_bank_settings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/banking/request-for-payment/submit": {
      "post": {
        "operationId": "post_v1_banking_request-for-payment_submit",
        "summary": "Submit bank Request-for-Payment",
        "tags": [
          "Banking & Reconciliation"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_edit_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nSends a Request-for-Payment through Scotia TranXact when the connection has live RFP submission enabled.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_bank_settings"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_bank_settings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/banking/settlement-exception": {
      "post": {
        "operationId": "source_post__v1_banking_settlement_exception",
        "responses": {
          "default": {
            "description": "Response status and schema are not yet specified for this operation."
          }
        },
        "summary": "Retrieve Settlement Exception",
        "tags": [
          "Banking & Reconciliation"
        ],
        "description": "### Required permissions\n\n- `can_view_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_bank_settings"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_bank_settings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/banking/settlement-exception/list": {
      "post": {
        "operationId": "source_post__v1_banking_settlement_exception_list",
        "responses": {
          "default": {
            "description": "Response status and schema are not yet specified for this operation."
          }
        },
        "summary": "Retrieve Settlement Exceptions",
        "tags": [
          "Banking & Reconciliation"
        ],
        "description": "### Required permissions\n\n- `can_view_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_bank_settings"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_bank_settings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/banking/settlement-exception/resolve": {
      "post": {
        "operationId": "source_post__v1_banking_settlement_exception_resolve",
        "responses": {
          "default": {
            "description": "Response status and schema are not yet specified for this operation."
          }
        },
        "summary": "Resolve Settlement Exception",
        "tags": [
          "Banking & Reconciliation"
        ],
        "description": "### Required permissions\n\n- `can_resolve_bank_payment_settlement_exceptions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_resolve_bank_payment_settlement_exceptions"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_resolve_bank_payment_settlement_exceptions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_resolve_bank_payment_settlement_exceptions`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/banking/transaction/import": {
      "post": {
        "operationId": "post_v1_banking_transaction_import",
        "summary": "Import bank transactions",
        "tags": [
          "Banking & Reconciliation"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_edit_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nStores bank transactions imported by a provider adapter or file import for reconciliation.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_bank_settings"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_bank_settings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/banking/transaction/sync": {
      "post": {
        "operationId": "post_v1_banking_transaction_sync",
        "summary": "Sync bank transactions",
        "tags": [
          "Banking & Reconciliation"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_edit_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nCalls a direct-bank provider adapter and stores returned bank transactions for reconciliation.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_bank_settings"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_bank_settings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/banking/wire-payment": {
      "post": {
        "operationId": "post_v1_banking_wire-payment",
        "summary": "Retrieve bank wire payment",
        "tags": [
          "Banking & Reconciliation"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nFetches a tracked Scotia Wire Payment.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_bank_settings"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_bank_settings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "put": {
        "operationId": "put_v1_banking_wire-payment",
        "summary": "Create bank wire payment",
        "tags": [
          "Banking & Reconciliation"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_edit_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nCreates a Scotia Wire Payment draft that can be validated or submitted after bank onboarding.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_bank_settings"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_bank_settings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/banking/wire-payment/list": {
      "post": {
        "operationId": "post_v1_banking_wire-payment_list",
        "summary": "List bank wire payments",
        "tags": [
          "Banking & Reconciliation"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns tracked Scotia Wire Payments.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_bank_settings"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_bank_settings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/banking/wire-payment/status": {
      "post": {
        "operationId": "post_v1_banking_wire-payment_status",
        "summary": "Refresh bank wire payment status",
        "tags": [
          "Banking & Reconciliation"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nPulls the latest Scotia Wire Payment status by payment id.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_bank_settings"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_bank_settings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/banking/wire-payment/submit": {
      "post": {
        "operationId": "post_v1_banking_wire-payment_submit",
        "summary": "Submit bank wire payment",
        "tags": [
          "Banking & Reconciliation"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_edit_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nCreates/submits a Scotia Wire Payment when the connection has live wire submission enabled.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_bank_settings"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_bank_settings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/banking/wire-payment/track": {
      "post": {
        "operationId": "post_v1_banking_wire-payment_track",
        "summary": "Track bank wire payment",
        "tags": [
          "Banking & Reconciliation"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nCalls Scotia Payment Track & Trace for a wire payment unique reference / UETR.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_bank_settings"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_bank_settings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/banking/wire-payment/validate": {
      "post": {
        "operationId": "post_v1_banking_wire-payment_validate",
        "summary": "Validate bank wire payment",
        "tags": [
          "Banking & Reconciliation"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nCalls Scotia's Wire Payment validation endpoint with a signed payload.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_bank_settings"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_bank_settings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/banking/workspace/overview": {
      "post": {
        "operationId": "post_v1_banking_workspace_overview",
        "summary": "Banking workspace overview",
        "tags": [
          "Banking & Reconciliation"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns server-aggregated banking KPIs, connections, recent transactions, payments, and audit activity for a date range.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_bank_settings"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_bank_settings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/banking/workspace/payees": {
      "post": {
        "operationId": "post_v1_banking_workspace_payees",
        "summary": "Workspace Payees",
        "tags": [
          "Banking & Reconciliation"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_bank_settings"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_bank_settings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/banking/workspace/settlements": {
      "post": {
        "operationId": "post_v1_banking_workspace_settlements",
        "summary": "Workspace Settlements",
        "tags": [
          "Banking & Reconciliation"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_bank_settings"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_bank_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_bank_settings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/camera": {
      "post": {
        "operationId": "getCamera",
        "summary": "Retrieve a single camera",
        "tags": [
          "Cameras & Evidence"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "id"
                ],
                "properties": {
                  "id": {
                    "type": "integer",
                    "description": "The camera UUID"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "camera": {
                      "$ref": "#/components/schemas/Camera"
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_view_cameras`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nFetches camera details by ID, including connection URL, zone assignment, and recording status.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_cameras"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_cameras`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_cameras`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "put": {
        "operationId": "createCamera",
        "summary": "Create a new camera",
        "tags": [
          "Cameras & Evidence"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "name"
                ],
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "zone_id": {
                    "type": "integer"
                  },
                  "type": {
                    "type": "integer",
                    "description": "Camera connection type (frontend-defined)"
                  },
                  "path": {
                    "type": "string"
                  },
                  "username": {
                    "type": "string"
                  },
                  "password": {
                    "type": "string"
                  },
                  "width": {
                    "type": "integer"
                  },
                  "height": {
                    "type": "integer"
                  },
                  "maxfps": {
                    "type": "integer"
                  },
                  "audio": {
                    "type": "boolean"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "camera": {
                      "$ref": "#/components/schemas/Camera"
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_add_cameras`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRegisters a new camera in the system with its RTSP/RTMP connection details and zone assignment.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_add_cameras"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_add_cameras`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_add_cameras`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "patch": {
        "operationId": "updateCamera",
        "summary": "Update a camera",
        "tags": [
          "Cameras & Evidence"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "id"
                ],
                "properties": {
                  "id": {
                    "type": "integer",
                    "description": "The camera UUID to update"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "camera": {
                      "$ref": "#/components/schemas/Camera"
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_edit_cameras`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nModifies camera configuration such as connection URL, name, or zone assignment.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_cameras"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_cameras`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_cameras`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "delete": {
        "operationId": "deleteCamera",
        "summary": "Delete a camera",
        "tags": [
          "Cameras & Evidence"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "id"
                ],
                "properties": {
                  "id": {
                    "type": "integer",
                    "description": "The camera UUID to delete"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessResponse"
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_delete_cameras`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRemoves a camera from the system. Associated events are not deleted.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_delete_cameras"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_delete_cameras`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_delete_cameras`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/camera/event": {
      "post": {
        "operationId": "getCameraEvent",
        "summary": "Retrieve a camera event",
        "tags": [
          "Cameras & Evidence"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "id"
                ],
                "properties": {
                  "id": {
                    "type": "integer",
                    "description": "The camera event UUID"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "camera_event": {
                      "$ref": "#/components/schemas/CameraEvent"
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_view_camera_events`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nFetches a single camera event record by ID, including detection type, timestamp, and associated media.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_camera_events"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_camera_events`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_camera_events`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "put": {
        "operationId": "createCameraEvent",
        "summary": "Create a camera event",
        "tags": [
          "Cameras & Evidence"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "event_id": {
                    "type": "string"
                  },
                  "camera_id": {
                    "type": "integer"
                  },
                  "label": {
                    "type": "string"
                  },
                  "score": {
                    "type": "string"
                  },
                  "start_time": {
                    "type": "string"
                  },
                  "end_time": {
                    "type": "string"
                  },
                  "summary_en": {
                    "type": "string"
                  },
                  "summary_fr": {
                    "type": "string"
                  },
                  "monitorid": {
                    "type": "integer"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "camera_event": {
                      "$ref": "#/components/schemas/CameraEvent"
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_add_camera_events`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nInserts a new camera event record, typically triggered by motion detection or LPR.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_add_camera_events"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_add_camera_events`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_add_camera_events`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "patch": {
        "operationId": "updateCameraEvent",
        "summary": "Update a camera event",
        "tags": [
          "Cameras & Evidence"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "id"
                ],
                "properties": {
                  "id": {
                    "type": "integer",
                    "description": "The camera event UUID to update"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "camera_event": {
                      "$ref": "#/components/schemas/CameraEvent"
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_edit_camera_events`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nModifies an existing camera event record.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_camera_events"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_camera_events`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_camera_events`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "delete": {
        "operationId": "deleteCameraEvent",
        "summary": "Delete a camera event",
        "tags": [
          "Cameras & Evidence"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "id"
                ],
                "properties": {
                  "id": {
                    "type": "integer",
                    "description": "The camera event UUID to delete"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessResponse"
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_delete_camera_events`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nPermanently deletes a camera event and its associated media files.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_delete_camera_events"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_delete_camera_events`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_delete_camera_events`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/camera/event/clip/{id}": {
      "get": {
        "operationId": "getCameraEventClip",
        "summary": "Get camera event clip",
        "tags": [
          "Cameras & Evidence"
        ],
        "responses": {
          "200": {
            "description": "MP4 video",
            "content": {
              "video/mp4": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "description": "### Required permissions\n\n- `can_view_camera_events`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns the video clip associated with a specific camera event.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_camera_events"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_camera_events`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_camera_events`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/camera/event/evidence": {
      "post": {
        "operationId": "uploadSnowCameraEvidence",
        "summary": "Upload camera evidence",
        "tags": [
          "Cameras & Evidence"
        ],
        "responses": {
          "200": {
            "description": "Identical evidence was already finalized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SnowCameraEvidenceUploadResponse"
                }
              }
            }
          },
          "201": {
            "description": "Evidence finalized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SnowCameraEvidenceUploadResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid evidence request"
          },
          "401": {
            "description": "Authentication required or invalid session"
          },
          "403": {
            "description": "Camera event is outside the permitted company scope"
          },
          "404": {
            "description": "Camera event or linked entry not found"
          },
          "409": {
            "description": "Evidence or linked-entry state conflict"
          },
          "413": {
            "description": "Evidence exceeds the configured upload limit"
          },
          "415": {
            "description": "Unsupported image or video content type"
          },
          "422": {
            "description": "SHA-256 checksum mismatch"
          },
          "500": {
            "description": "Camera evidence processing failed"
          },
          "502": {
            "description": "Evidence object storage unavailable"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "camera_event_id",
                  "content_base64"
                ],
                "properties": {
                  "camera_event_id": {
                    "anyOf": [
                      {
                        "type": "integer",
                        "minimum": 1
                      },
                      {
                        "type": "number",
                        "minimum": 1
                      },
                      {
                        "type": "string",
                        "pattern": "^[1-9][0-9]*$"
                      }
                    ],
                    "description": "Canonical clients send a JSON integer. The deployed compatibility parser also normalizes numeric strings and numeric scalars."
                  },
                  "entry_id": {
                    "anyOf": [
                      {
                        "type": "integer",
                        "minimum": 1
                      },
                      {
                        "type": "number",
                        "minimum": 1
                      },
                      {
                        "type": "string",
                        "pattern": "^[1-9][0-9]*$"
                      }
                    ],
                    "description": "Canonical clients send a JSON integer. The deployed compatibility parser also normalizes numeric strings and numeric scalars."
                  },
                  "retention_days": {
                    "anyOf": [
                      {
                        "type": "integer",
                        "minimum": 1
                      },
                      {
                        "type": "number",
                        "minimum": 1
                      },
                      {
                        "type": "string",
                        "pattern": "^[1-9][0-9]*$"
                      }
                    ],
                    "description": "Canonical clients send a JSON integer. The deployed compatibility parser also normalizes numeric strings and numeric scalars."
                  },
                  "filename": {
                    "type": "string",
                    "maxLength": 255
                  },
                  "content_type": {
                    "type": "string",
                    "pattern": "^\\s*(?:[Ii][Mm][Aa][Gg][Ee]/(?:[Gg][Ii][Ff]|[Jj][Pp][Ee][Gg]|[Pp][Nn][Gg]|[Ww][Ee][Bb][Pp])|[Vv][Ii][Dd][Ee][Oo]/(?:[Mm][Pp]4|[Qq][Uu][Ii][Cc][Kk][Tt][Ii][Mm][Ee]|[Ww][Ee][Bb][Mm]))\\s*(?:;.*)?$",
                    "description": "Supported image/video MIME type. Matching is case-insensitive and parameters after ';' are ignored by the server."
                  },
                  "content_base64": {
                    "type": "string",
                    "format": "byte"
                  },
                  "sha256": {
                    "type": "string",
                    "pattern": "^[0-9a-f]{64}$"
                  },
                  "captured_at": {
                    "type": "string",
                    "format": "date-time"
                  }
                },
                "anyOf": [
                  {
                    "required": [
                      "content_type"
                    ]
                  },
                  {
                    "properties": {
                      "content_base64": {
                        "type": "string",
                        "pattern": "^data:\\s*(?:[Ii][Mm][Aa][Gg][Ee]/(?:[Gg][Ii][Ff]|[Jj][Pp][Ee][Gg]|[Pp][Nn][Gg]|[Ww][Ee][Bb][Pp])|[Vv][Ii][Dd][Ee][Oo]/(?:[Mm][Pp]4|[Qq][Uu][Ii][Cc][Kk][Tt][Ii][Mm][Ee]|[Ww][Ee][Bb][Mm]))\\s*(?:;[^,;]*)*;[Bb][Aa][Ss][Ee]64,",
                        "description": "A data URL can supply one of the seven supported MIME types inline."
                      }
                    }
                  }
                ]
              }
            },
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "required": [
                  "file",
                  "camera_event_id"
                ],
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary"
                  },
                  "camera_event_id": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "entry_id": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "retention_days": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 3650
                  },
                  "filename": {
                    "type": "string",
                    "maxLength": 255
                  },
                  "content_type": {
                    "type": "string",
                    "pattern": "^\\s*(?:[Ii][Mm][Aa][Gg][Ee]/(?:[Gg][Ii][Ff]|[Jj][Pp][Ee][Gg]|[Pp][Nn][Gg]|[Ww][Ee][Bb][Pp])|[Vv][Ii][Dd][Ee][Oo]/(?:[Mm][Pp]4|[Qq][Uu][Ii][Cc][Kk][Tt][Ii][Mm][Ee]|[Ww][Ee][Bb][Mm]))\\s*(?:;.*)?$",
                    "description": "Supported image/video MIME type. Matching is case-insensitive and parameters after ';' are ignored by the server."
                  },
                  "sha256": {
                    "type": "string",
                    "pattern": "^[0-9a-f]{64}$"
                  },
                  "captured_at": {
                    "type": "string",
                    "format": "date-time"
                  }
                }
              },
              "encoding": {
                "file": {
                  "contentType": "image/gif, image/jpeg, image/png, image/webp, video/mp4, video/quicktime, video/webm"
                }
              }
            }
          }
        },
        "x-content-type-dispatch": "multipart/form-data uses multipart; every other media type is parsed as JSON",
        "description": "### Required permissions\n\n- `can_add_camera_events`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nFinalizes an image/video object for an existing camera event. Accepts multipart file or JSON base64.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_add_camera_events"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_add_camera_events`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_add_camera_events`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/camera/event/evidence/{id}/access": {
      "post": {
        "operationId": "createSnowCameraEvidenceAccess",
        "summary": "Create camera evidence access link",
        "tags": [
          "Cameras & Evidence"
        ],
        "responses": {
          "200": {
            "description": "Short-lived evidence access",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SnowCameraEvidenceAccessResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid evidence access request"
          },
          "401": {
            "description": "Authentication required or invalid session"
          },
          "403": {
            "description": "Evidence is outside the permitted company scope"
          },
          "404": {
            "description": "Evidence not found"
          },
          "409": {
            "description": "Evidence is not ready or has expired"
          },
          "500": {
            "description": "Camera evidence access failed"
          },
          "502": {
            "description": "Evidence object storage unavailable"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "expires_seconds": {
                    "anyOf": [
                      {
                        "type": "integer",
                        "minimum": 30,
                        "maximum": 300
                      },
                      {
                        "type": "number",
                        "minimum": 30,
                        "maximum": 300
                      },
                      {
                        "type": "string",
                        "pattern": "^[0-9]+$"
                      }
                    ],
                    "description": "Compatibility parser accepts numeric strings/scalars and clamps the resulting lifetime to 30-300 seconds."
                  }
                }
              }
            }
          }
        },
        "x-content-type-header-enforced": false,
        "description": "### Required permissions\n\n- `can_view_camera_events`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns a short-lived S3 download URL only for ready, retained camera evidence.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_camera_events"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_camera_events`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_camera_events`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/camera/event/list": {
      "post": {
        "operationId": "listCameraEvents",
        "summary": "List camera events",
        "tags": [
          "Cameras & Evidence"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "page": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "page_limit": {
                    "type": "integer"
                  },
                  "search": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "count": {
                      "type": "integer"
                    },
                    "events": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/CameraEvent"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_view_camera_events`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns a paginated list of camera events. Supports filtering by camera, date range, and detection type.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_camera_events"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_camera_events`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_camera_events`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/camera/event/thumbnail/{id}": {
      "get": {
        "operationId": "getCameraEventThumbnail",
        "summary": "Get camera event thumbnail",
        "tags": [
          "Cameras & Evidence"
        ],
        "responses": {
          "200": {
            "description": "JPEG image",
            "content": {
              "image/jpeg": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "description": "### Required permissions\n\n- `can_view_camera_events`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns the snapshot image associated with a specific camera event.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_camera_events"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_camera_events`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_camera_events`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/camera/event/vod/{id}/{param}": {
      "get": {
        "operationId": "getCameraEventVod",
        "summary": "Get camera event VOD",
        "tags": [
          "Cameras & Evidence"
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessResponse"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "param",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "description": "### Required permissions\n\n- `can_view_camera_events`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns video-on-demand playback for a camera event. Requires camera name and event ID in the URL path.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_camera_events"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_camera_events`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_camera_events`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/camera/list": {
      "post": {
        "operationId": "listCameras",
        "summary": "List cameras",
        "tags": [
          "Cameras & Evidence"
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "count": {
                      "type": "integer"
                    },
                    "cameras": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Camera"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_view_cameras`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns a paginated list of all cameras with their connection status and zone assignment.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_cameras"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_cameras`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_cameras`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/camera/status/{id}": {
      "get": {
        "operationId": "getCameraStatus",
        "summary": "Get camera status",
        "tags": [
          "Cameras & Evidence"
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessResponse"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns the live connection status and health of a camera identified by its name or ID in the URL path.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/camera/thumbnail/{id}": {
      "get": {
        "operationId": "getCameraThumbnail",
        "summary": "Get camera thumbnail",
        "tags": [
          "Cameras & Evidence"
        ],
        "responses": {
          "200": {
            "description": "JPEG image",
            "content": {
              "image/jpeg": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "description": "### Required permissions\n\n- `can_view_cameras`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns the latest snapshot image from a camera as a JPEG thumbnail.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_cameras"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_cameras`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_cameras`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/chargingstation/list": {
      "post": {
        "operationId": "listChargingStations",
        "summary": "List charging station availabilities",
        "tags": [
          "EV Charging"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "zone_id": {
                    "type": "integer"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessResponse"
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns the list of charging stations with their current availability and connector status.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/chargingstation/start": {
      "post": {
        "operationId": "startCharging",
        "summary": "Start a charging session",
        "tags": [
          "EV Charging"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "entry_id": {
                    "type": "integer"
                  },
                  "device_id": {
                    "type": "integer"
                  },
                  "connector_id": {
                    "type": "integer",
                    "description": "The connector number to start"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessResponse"
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nInitiates a charging session on a specific connector. Communicates with the station via OCPP.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/chargingstation/status": {
      "post": {
        "operationId": "getChargingStatus",
        "summary": "Get charging session status",
        "tags": [
          "EV Charging"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "entry_id": {
                    "type": "integer"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessResponse"
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns the real-time status of a charging session including energy delivered and elapsed time.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/chargingstation/stop": {
      "post": {
        "operationId": "stopCharging",
        "summary": "Stop a charging session",
        "tags": [
          "EV Charging"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "entry_id": {
                    "type": "integer"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessResponse"
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nStops an active charging session on a specific connector.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/commercial-document": {
      "post": {
        "operationId": "post_v1_commercial-document",
        "summary": "Retrieve a sales or purchase document",
        "tags": [
          "Sales & Purchasing"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "put": {
        "operationId": "put_v1_commercial-document",
        "summary": "Create a sales or purchase document",
        "tags": [
          "Sales & Purchasing"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "patch": {
        "operationId": "patch_v1_commercial-document",
        "summary": "Update a sales or purchase document",
        "tags": [
          "Sales & Purchasing"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "delete": {
        "operationId": "delete_v1_commercial-document",
        "summary": "Delete a sales or purchase document",
        "tags": [
          "Sales & Purchasing"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/commercial-document/billed-sale": {
      "put": {
        "operationId": "put_v1_commercial-document_billed-sale",
        "summary": "Create a fully-paid billed sale (invoice + lines + payment) from an online or device payment",
        "tags": [
          "Sales & Purchasing"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/commercial-document/billed-sale/import": {
      "post": {
        "operationId": "post_v1_commercial-document_billed-sale_import",
        "summary": "Convert existing paid transactions into billed sales invoices",
        "tags": [
          "Sales & Purchasing"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/commercial-document/convert": {
      "post": {
        "operationId": "post_v1_commercial-document_convert",
        "summary": "Convert a quote to invoice or a purchase order to invoice",
        "tags": [
          "Sales & Purchasing"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/commercial-document/credit/apply": {
      "post": {
        "operationId": "post_v1_commercial-document_credit_apply",
        "summary": "Apply a posted credit note against an open invoice without creating a duplicate ledger transaction",
        "tags": [
          "Sales & Purchasing"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe following checks depend on the action, filters or requested resource; they are not all required for every request:\n\n- `can_credit_sales`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "conditional",
          "required": [],
          "conditional": [
            {
              "permission": "can_credit_sales"
            }
          ],
          "description": {
            "en": "The following checks depend on the action, filters or requested resource; they are not all required for every request:\n\n- `can_credit_sales`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les vérifications suivantes dépendent de l’action, des filtres ou de la ressource demandée; elles ne sont pas toutes requises pour chaque requête :\n\n- `can_credit_sales`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/commercial-document/delivery/pdf": {
      "post": {
        "operationId": "post_v1_commercial-document_delivery_pdf",
        "summary": "Generate a delivery slip PDF",
        "tags": [
          "Sales & Purchasing"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/commercial-document/financing": {
      "put": {
        "operationId": "put_v1_commercial-document_financing",
        "summary": "Save a financing proposal and generated payment schedule",
        "tags": [
          "Sales & Purchasing"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/commercial-document/financing/list": {
      "post": {
        "operationId": "post_v1_commercial-document_financing_list",
        "summary": "List financing proposals attached to a commercial document",
        "tags": [
          "Sales & Purchasing"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/commercial-document/fulfillment/list": {
      "post": {
        "operationId": "post_v1_commercial-document_fulfillment_list",
        "summary": "List sales or purchase fulfillment events",
        "tags": [
          "Sales & Purchasing"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/commercial-document/invoice/email": {
      "post": {
        "operationId": "post_v1_commercial-document_invoice_email",
        "summary": "Send a sales invoice by email with a public customer payment link",
        "tags": [
          "Sales & Purchasing"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/commercial-document/invoice/pdf": {
      "post": {
        "operationId": "post_v1_commercial-document_invoice_pdf",
        "summary": "Generate a sales invoice PDF",
        "tags": [
          "Sales & Purchasing"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/commercial-document/line": {
      "post": {
        "operationId": "post_v1_commercial-document_line",
        "summary": "Retrieve a sales or purchase document line",
        "tags": [
          "Sales & Purchasing"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "put": {
        "operationId": "put_v1_commercial-document_line",
        "summary": "Create a sales or purchase document line",
        "tags": [
          "Sales & Purchasing"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "patch": {
        "operationId": "patch_v1_commercial-document_line",
        "summary": "Update a sales or purchase document line",
        "tags": [
          "Sales & Purchasing"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "delete": {
        "operationId": "delete_v1_commercial-document_line",
        "summary": "Delete a sales or purchase document line",
        "tags": [
          "Sales & Purchasing"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/commercial-document/line/list": {
      "post": {
        "operationId": "post_v1_commercial-document_line_list",
        "summary": "List sales or purchase document lines",
        "tags": [
          "Sales & Purchasing"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/commercial-document/line/receive": {
      "post": {
        "operationId": "post_v1_commercial-document_line_receive",
        "summary": "Receive a purchase line into inventory",
        "tags": [
          "Sales & Purchasing"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/commercial-document/line/return": {
      "post": {
        "operationId": "post_v1_commercial-document_line_return",
        "summary": "Return a credit-note line to or from inventory",
        "tags": [
          "Sales & Purchasing"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/commercial-document/line/ship": {
      "post": {
        "operationId": "post_v1_commercial-document_line_ship",
        "summary": "Ship a sales invoice line from inventory",
        "tags": [
          "Sales & Purchasing"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_deliver_sales`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_deliver_sales"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_deliver_sales`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_deliver_sales`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/commercial-document/list": {
      "post": {
        "operationId": "post_v1_commercial-document_list",
        "summary": "List sales and purchase documents",
        "tags": [
          "Sales & Purchasing"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe following checks depend on the action, filters or requested resource; they are not all required for every request:\n\n- `can_view_sales`\n- `can_view_purchases`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "conditional",
          "required": [],
          "conditional": [
            {
              "checked": [
                "can_view_sales"
              ]
            },
            {
              "checked": [
                "can_view_purchases"
              ]
            },
            {
              "permission": "can_view_purchases"
            },
            {
              "permission": "can_view_sales"
            }
          ],
          "description": {
            "en": "The following checks depend on the action, filters or requested resource; they are not all required for every request:\n\n- `can_view_sales`\n- `can_view_purchases`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les vérifications suivantes dépendent de l’action, des filtres ou de la ressource demandée; elles ne sont pas toutes requises pour chaque requête :\n\n- `can_view_sales`\n- `can_view_purchases`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/commercial-document/payment-event": {
      "put": {
        "operationId": "put_v1_commercial-document_payment-event",
        "summary": "Record a non-settled gateway payment event for reconciliation without revenue",
        "tags": [
          "Sales & Purchasing"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/commercial-document/payment/list": {
      "post": {
        "operationId": "post_v1_commercial-document_payment_list",
        "summary": "List payments received against a commercial document",
        "tags": [
          "Sales & Purchasing"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/commercial-document/payment/receipt": {
      "post": {
        "operationId": "post_v1_commercial-document_payment_receipt",
        "summary": "Receive one payment and allocate it across multiple sales invoices",
        "tags": [
          "Sales & Purchasing"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/commercial-document/payment/receipt/pdf": {
      "post": {
        "operationId": "post_v1_commercial-document_payment_receipt_pdf",
        "summary": "Generate a customer payment receipt PDF",
        "tags": [
          "Sales & Purchasing"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/commercial-document/payment/receipt/sms": {
      "post": {
        "operationId": "post_v1_commercial-document_payment_receipt_sms",
        "summary": "Send a customer payment receipt by SMS",
        "tags": [
          "Sales & Purchasing"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/commercial-document/payment/receive": {
      "post": {
        "operationId": "post_v1_commercial-document_payment_receive",
        "summary": "Receive a payment against a sales invoice",
        "tags": [
          "Sales & Purchasing"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/commercial-document/pos/checkout": {
      "post": {
        "operationId": "post_v1_commercial-document_pos_checkout",
        "summary": "Convert a POS quote to a posted, shipped and paid sales invoice",
        "tags": [
          "Sales & Purchasing"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_bill_sales`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_bill_sales"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_bill_sales`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_bill_sales`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/commercial-document/post": {
      "post": {
        "operationId": "post_v1_commercial-document_post",
        "summary": "Post a sales or purchase invoice to accounting",
        "tags": [
          "Sales & Purchasing"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe following checks depend on the action, filters or requested resource; they are not all required for every request:\n\n- `can_bill_sales`\n- `can_credit_sales`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "conditional",
          "required": [],
          "conditional": [
            {
              "permission": "can_bill_sales"
            },
            {
              "permission": "can_credit_sales"
            }
          ],
          "description": {
            "en": "The following checks depend on the action, filters or requested resource; they are not all required for every request:\n\n- `can_bill_sales`\n- `can_credit_sales`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les vérifications suivantes dépendent de l’action, des filtres ou de la ressource demandée; elles ne sont pas toutes requises pour chaque requête :\n\n- `can_bill_sales`\n- `can_credit_sales`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/commercial-document/purchase-credit-note/pdf": {
      "post": {
        "operationId": "post_v1_commercial-document_purchase-credit-note_pdf",
        "summary": "Generate a purchase credit note PDF",
        "tags": [
          "Sales & Purchasing"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/commercial-document/purchase-invoice/pdf": {
      "post": {
        "operationId": "post_v1_commercial-document_purchase-invoice_pdf",
        "summary": "Generate a purchase invoice PDF",
        "tags": [
          "Sales & Purchasing"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/commercial-document/purchase-order/pdf": {
      "post": {
        "operationId": "post_v1_commercial-document_purchase-order_pdf",
        "summary": "Generate a purchase order PDF",
        "tags": [
          "Sales & Purchasing"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/commercial-document/quote/pdf": {
      "post": {
        "operationId": "post_v1_commercial-document_quote_pdf",
        "summary": "Generate a sales quote PDF",
        "tags": [
          "Sales & Purchasing"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/commercial-document/recurring": {
      "post": {
        "operationId": "post_v1_commercial-document_recurring",
        "summary": "Retrieve a recurring commercial template",
        "tags": [
          "Sales & Purchasing"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "put": {
        "operationId": "put_v1_commercial-document_recurring",
        "summary": "Create a recurring commercial template",
        "tags": [
          "Sales & Purchasing"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "patch": {
        "operationId": "patch_v1_commercial-document_recurring",
        "summary": "Update a recurring commercial template",
        "tags": [
          "Sales & Purchasing"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "delete": {
        "operationId": "delete_v1_commercial-document_recurring",
        "summary": "Delete a recurring commercial template",
        "tags": [
          "Sales & Purchasing"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/commercial-document/recurring/generate": {
      "post": {
        "operationId": "post_v1_commercial-document_recurring_generate",
        "summary": "Generate one draft document from a recurring template",
        "tags": [
          "Sales & Purchasing"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/commercial-document/recurring/list": {
      "post": {
        "operationId": "post_v1_commercial-document_recurring_list",
        "summary": "List recurring commercial templates",
        "tags": [
          "Sales & Purchasing"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe following checks depend on the action, filters or requested resource; they are not all required for every request:\n\n- `can_view_sales`\n- `can_view_purchases`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "conditional",
          "required": [],
          "conditional": [
            {
              "checked": [
                "can_view_sales"
              ]
            },
            {
              "checked": [
                "can_view_purchases"
              ]
            },
            {
              "permission": "can_view_purchases"
            },
            {
              "permission": "can_view_sales"
            }
          ],
          "description": {
            "en": "The following checks depend on the action, filters or requested resource; they are not all required for every request:\n\n- `can_view_sales`\n- `can_view_purchases`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les vérifications suivantes dépendent de l’action, des filtres ou de la ressource demandée; elles ne sont pas toutes requises pour chaque requête :\n\n- `can_view_sales`\n- `can_view_purchases`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/commercial-document/recurring/run-due": {
      "post": {
        "operationId": "post_v1_commercial-document_recurring_run-due",
        "summary": "Generate all due draft documents from recurring templates",
        "tags": [
          "Sales & Purchasing"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe following checks depend on the action, filters or requested resource; they are not all required for every request:\n\n- `can_add_sales`\n- `can_add_purchases`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "conditional",
          "required": [],
          "conditional": [
            {
              "checked": [
                "can_add_sales"
              ]
            },
            {
              "checked": [
                "can_add_purchases"
              ]
            },
            {
              "permission": "can_add_purchases"
            },
            {
              "permission": "can_add_sales"
            }
          ],
          "description": {
            "en": "The following checks depend on the action, filters or requested resource; they are not all required for every request:\n\n- `can_add_sales`\n- `can_add_purchases`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les vérifications suivantes dépendent de l’action, des filtres ou de la ressource demandée; elles ne sont pas toutes requises pour chaque requête :\n\n- `can_add_sales`\n- `can_add_purchases`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/commercial-document/recurring/run/approve": {
      "post": {
        "operationId": "post_v1_commercial-document_recurring_run_approve",
        "summary": "Approve a generated recurring commercial draft",
        "tags": [
          "Sales & Purchasing"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/commercial-document/recurring/run/list": {
      "post": {
        "operationId": "post_v1_commercial-document_recurring_run_list",
        "summary": "List recurring commercial generation runs",
        "tags": [
          "Sales & Purchasing"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe following checks depend on the action, filters or requested resource; they are not all required for every request:\n\n- `can_view_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "conditional",
          "required": [],
          "conditional": [
            {
              "permission": "can_view_transactions"
            }
          ],
          "description": {
            "en": "The following checks depend on the action, filters or requested resource; they are not all required for every request:\n\n- `can_view_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les vérifications suivantes dépendent de l’action, des filtres ou de la ressource demandée; elles ne sont pas toutes requises pour chaque requête :\n\n- `can_view_transactions`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/commercial-document/recurring/run/retry": {
      "post": {
        "operationId": "post_v1_commercial-document_recurring_run_retry",
        "summary": "Retry a failed recurring commercial generation run",
        "tags": [
          "Sales & Purchasing"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/commercial-document/report": {
      "post": {
        "operationId": "post_v1_commercial-document_report",
        "summary": "Sales and purchase report as JSON",
        "tags": [
          "Sales & Purchasing"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe following checks depend on the action, filters or requested resource; they are not all required for every request:\n\n- `can_view_purchases`\n- `can_view_sales`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "conditional",
          "required": [],
          "conditional": [
            {
              "permission": "can_view_purchases"
            },
            {
              "permission": "can_view_sales"
            },
            {
              "checked": [
                "can_view_sales"
              ]
            },
            {
              "checked": [
                "can_view_purchases"
              ]
            }
          ],
          "description": {
            "en": "The following checks depend on the action, filters or requested resource; they are not all required for every request:\n\n- `can_view_purchases`\n- `can_view_sales`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les vérifications suivantes dépendent de l’action, des filtres ou de la ressource demandée; elles ne sont pas toutes requises pour chaque requête :\n\n- `can_view_purchases`\n- `can_view_sales`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/commercial-document/report/excel": {
      "post": {
        "operationId": "post_v1_commercial-document_report_excel",
        "summary": "Sales and purchase report as Excel",
        "tags": [
          "Sales & Purchasing"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe following checks depend on the action, filters or requested resource; they are not all required for every request:\n\n- `can_view_purchases`\n- `can_view_sales`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "conditional",
          "required": [],
          "conditional": [
            {
              "permission": "can_view_purchases"
            },
            {
              "permission": "can_view_sales"
            },
            {
              "checked": [
                "can_view_sales"
              ]
            },
            {
              "checked": [
                "can_view_purchases"
              ]
            }
          ],
          "description": {
            "en": "The following checks depend on the action, filters or requested resource; they are not all required for every request:\n\n- `can_view_purchases`\n- `can_view_sales`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les vérifications suivantes dépendent de l’action, des filtres ou de la ressource demandée; elles ne sont pas toutes requises pour chaque requête :\n\n- `can_view_purchases`\n- `can_view_sales`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/commercial-document/report/pdf": {
      "post": {
        "operationId": "post_v1_commercial-document_report_pdf",
        "summary": "Sales and purchase report as PDF",
        "tags": [
          "Sales & Purchasing"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe following checks depend on the action, filters or requested resource; they are not all required for every request:\n\n- `can_view_purchases`\n- `can_view_sales`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "conditional",
          "required": [],
          "conditional": [
            {
              "permission": "can_view_purchases"
            },
            {
              "permission": "can_view_sales"
            },
            {
              "checked": [
                "can_view_sales"
              ]
            },
            {
              "checked": [
                "can_view_purchases"
              ]
            }
          ],
          "description": {
            "en": "The following checks depend on the action, filters or requested resource; they are not all required for every request:\n\n- `can_view_purchases`\n- `can_view_sales`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les vérifications suivantes dépendent de l’action, des filtres ou de la ressource demandée; elles ne sont pas toutes requises pour chaque requête :\n\n- `can_view_purchases`\n- `can_view_sales`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/commercial-document/reservation/accept": {
      "post": {
        "operationId": "post_v1_commercial-document_reservation_accept",
        "summary": "Accept a sales quote and reserve its inventory-tracked leaf lines",
        "tags": [
          "Sales & Purchasing"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_accept_sales_quotes`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_accept_sales_quotes"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_accept_sales_quotes`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_accept_sales_quotes`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/commercial-document/reservation/release": {
      "post": {
        "operationId": "post_v1_commercial-document_reservation_release",
        "summary": "Release the undelivered inventory reserved by a sales document",
        "tags": [
          "Sales & Purchasing"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_release_sales_reservations`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_release_sales_reservations"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_release_sales_reservations`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_release_sales_reservations`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/commercial-document/reservation/summary": {
      "post": {
        "operationId": "post_v1_commercial-document_reservation_summary",
        "summary": "Retrieve the inventory reservation summary for a sales document",
        "tags": [
          "Sales & Purchasing"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/commercial-document/sales-credit-note/pdf": {
      "post": {
        "operationId": "post_v1_commercial-document_sales-credit-note_pdf",
        "summary": "Generate a sales credit note PDF",
        "tags": [
          "Sales & Purchasing"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/commercial-document/snow-billing/create": {
      "post": {
        "operationId": "createSnowBillingDocument",
        "summary": "Create an immutable snow invoice from an accepted preview hash",
        "tags": [
          "Measured Pricing & Snow Billing"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SnowFinanceBillingCreateRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful exact snow-finance response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SnowFinanceBillingCreateResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request or unavailable pricing inputs"
          },
          "409": {
            "description": "Optimistic version, preview, or idempotency conflict"
          }
        },
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_bill_project_work"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_bill_project_work`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_bill_project_work`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        },
        "description": "### Required permissions\n\n- `can_bill_project_work`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version."
      }
    },
    "/v1/commercial-document/snow-billing/credit": {
      "post": {
        "operationId": "creditSnowBillingDocument",
        "summary": "Create a full snow credit note that reverses an immutable invoice",
        "tags": [
          "Measured Pricing & Snow Billing"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SnowFinanceBillingCreditRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful exact snow-finance response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SnowFinanceBillingCreditResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request or unavailable pricing inputs"
          },
          "409": {
            "description": "Optimistic version, preview, or idempotency conflict"
          }
        },
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_bill_project_work"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_bill_project_work`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_bill_project_work`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        },
        "description": "### Required permissions\n\n- `can_bill_project_work`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version."
      }
    },
    "/v1/commercial-document/snow-billing/document": {
      "post": {
        "operationId": "getSnowBillingDocument",
        "summary": "Retrieve one snow commercial document and its immutable source lines",
        "tags": [
          "Measured Pricing & Snow Billing"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SnowFinanceBillingGetDocumentRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful exact snow-finance response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SnowFinanceBillingGetDocumentResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request or unavailable pricing inputs"
          },
          "409": {
            "description": "Optimistic version, preview, or idempotency conflict"
          }
        },
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_project_financials"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_project_financials`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_project_financials`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        },
        "description": "### Required permissions\n\n- `can_view_project_financials`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version."
      }
    },
    "/v1/commercial-document/snow-billing/documents/query": {
      "post": {
        "operationId": "querySnowBillingDocuments",
        "summary": "Query snow commercial documents",
        "tags": [
          "Measured Pricing & Snow Billing"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SnowFinanceBillingListDocumentsRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful exact snow-finance response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SnowFinanceBillingListDocumentsResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request or unavailable pricing inputs"
          },
          "409": {
            "description": "Optimistic version, preview, or idempotency conflict"
          }
        },
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_project_financials"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_project_financials`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_project_financials`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        },
        "description": "### Required permissions\n\n- `can_view_project_financials`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version."
      }
    },
    "/v1/commercial-document/snow-billing/preview": {
      "post": {
        "operationId": "previewSnowBillingDocument",
        "summary": "Preview an exact snow commercial document without mutating sources",
        "tags": [
          "Measured Pricing & Snow Billing"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SnowFinanceBillingPreviewRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful exact snow-finance response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SnowFinanceBillingPreviewResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request or unavailable pricing inputs"
          },
          "409": {
            "description": "Optimistic version, preview, or idempotency conflict"
          }
        },
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_bill_project_work"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_bill_project_work`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_bill_project_work`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        },
        "description": "### Required permissions\n\n- `can_bill_project_work`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version."
      }
    },
    "/v1/commercial-document/snow-billing/sources/query": {
      "post": {
        "operationId": "querySnowBillingSources",
        "summary": "Query priced snow Entries eligible for commercial billing",
        "tags": [
          "Measured Pricing & Snow Billing"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SnowFinanceBillingListSourcesRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful exact snow-finance response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SnowFinanceBillingListSourcesResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request or unavailable pricing inputs"
          },
          "409": {
            "description": "Optimistic version, preview, or idempotency conflict"
          }
        },
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_project_financials"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_project_financials`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_project_financials`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        },
        "description": "### Required permissions\n\n- `can_view_project_financials`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version."
      }
    },
    "/v1/commercial-document/snow-billing/u4/query": {
      "post": {
        "operationId": "querySnowBillingU4",
        "summary": "Query durable U4 outbox state without enabling municipal transport",
        "tags": [
          "Measured Pricing & Snow Billing"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SnowFinanceU4ListRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful exact snow-finance response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SnowFinanceU4ListResponseContract"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request or unavailable pricing inputs"
          },
          "409": {
            "description": "Optimistic version, preview, or idempotency conflict"
          }
        },
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_project_financials"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_project_financials`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_project_financials`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        },
        "description": "### Required permissions\n\n- `can_view_project_financials`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version."
      }
    },
    "/v1/commercial-document/snow-billing/u4/queue": {
      "post": {
        "operationId": "queueSnowBillingU4",
        "summary": "Queue a locked snow document in the disabled U4 outbox",
        "tags": [
          "Measured Pricing & Snow Billing"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SnowFinanceU4QueueRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful exact snow-finance response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SnowFinanceU4QueueResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request or unavailable pricing inputs"
          },
          "409": {
            "description": "Optimistic version, preview, or idempotency conflict"
          }
        },
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_bill_project_work"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_bill_project_work`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_bill_project_work`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        },
        "description": "### Required permissions\n\n- `can_bill_project_work`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version."
      }
    },
    "/v1/commercial-document/snow-billing/u4/simulate": {
      "post": {
        "operationId": "simulateSnowBillingU4",
        "summary": "Apply a deterministic non-production U4 QA outcome",
        "tags": [
          "Measured Pricing & Snow Billing"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SnowFinanceU4SimulateRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful exact snow-finance response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SnowFinanceU4SimulateResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request or unavailable pricing inputs"
          },
          "409": {
            "description": "Optimistic version, preview, or idempotency conflict"
          }
        },
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_bill_project_work"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_bill_project_work`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_bill_project_work`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        },
        "description": "### Required permissions\n\n- `can_bill_project_work`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version."
      }
    },
    "/v1/commercial-document/status/transition": {
      "post": {
        "operationId": "post_v1_commercial-document_status_transition",
        "summary": "Cancel or void an unposted commercial document with an audited project-billing restoration",
        "tags": [
          "Sales & Purchasing"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/companies": {
      "post": {
        "operationId": "getCompany",
        "summary": "Retrieve a single company",
        "tags": [
          "Companies"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "id"
                ],
                "properties": {
                  "id": {
                    "type": "integer",
                    "description": "The company UUID"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "company": {
                      "$ref": "#/components/schemas/Company"
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_view_companies`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nFetches company details by ID, including name, address, and associated zones.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_companies"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_companies`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_companies`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "put": {
        "operationId": "createCompany",
        "summary": "Create a new company",
        "tags": [
          "Companies"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "name"
                ],
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "description": {
                    "type": "string"
                  },
                  "status": {
                    "type": "boolean"
                  },
                  "max_entrance": {
                    "type": "integer"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "company": {
                      "$ref": "#/components/schemas/Company"
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_add_companies`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRegisters a new company with its profile information and zone assignments.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_add_companies"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_add_companies`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_add_companies`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "patch": {
        "operationId": "updateCompany",
        "summary": "Update a company",
        "tags": [
          "Companies"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "id"
                ],
                "properties": {
                  "id": {
                    "type": "integer",
                    "description": "The company UUID to update"
                  },
                  "name": {
                    "type": "string"
                  },
                  "description": {
                    "type": "string"
                  },
                  "status": {
                    "type": "boolean"
                  },
                  "max_entrance": {
                    "type": "integer"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "company": {
                      "$ref": "#/components/schemas/Company"
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_edit_companies`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nModifies an existing company's details.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_companies"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_companies`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_companies`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "delete": {
        "operationId": "deleteCompany",
        "summary": "Delete a company",
        "tags": [
          "Companies"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "id"
                ],
                "properties": {
                  "id": {
                    "type": "integer",
                    "description": "The company UUID to delete"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessResponse"
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_delete_companies`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nPermanently deletes a company. Users and zones linked to this company will be unassigned.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_delete_companies"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_delete_companies`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_delete_companies`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/companies/filters": {
      "post": {
        "operationId": "getCompanyFilters",
        "summary": "Get company filter options",
        "tags": [
          "Companies"
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "count": {
                      "type": "integer"
                    },
                    "companies": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/FilterItem"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_view_companies`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns a list of companies formatted for use in dropdown/filter UI components.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_companies"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_companies`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_companies`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/companies/list": {
      "post": {
        "operationId": "listCompanies",
        "summary": "List companies",
        "tags": [
          "Companies"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "page": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "page_limit": {
                    "type": "integer"
                  },
                  "search": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "count": {
                      "type": "integer"
                    },
                    "companies": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Company"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_view_companies`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns a paginated list of all companies in the system.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_companies"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_companies`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_companies`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/config": {
      "post": {
        "operationId": "getConfig",
        "summary": "Retrieve a configuration value",
        "tags": [
          "Configuration"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "id"
                ],
                "properties": {
                  "id": {
                    "type": "integer"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "config": {
                      "$ref": "#/components/schemas/Config"
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_view_settings` **or** `can_edit_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nFetches a single configuration entry by its key and category.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "any": [
                {
                  "permission": "can_view_settings"
                },
                {
                  "permission": "can_edit_settings"
                }
              ]
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_settings` **or** `can_edit_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_settings` **ou** `can_edit_settings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "patch": {
        "operationId": "saveConfigs",
        "summary": "Save configuration values",
        "tags": [
          "Configuration"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "configs": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "integer"
                        },
                        "name": {
                          "type": "string"
                        },
                        "value": {
                          "type": "string"
                        },
                        "category": {
                          "type": "string"
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "count": {
                      "type": "integer"
                    },
                    "configs": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Config"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_edit_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nCreates or updates one or more configuration entries in bulk.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_settings"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_settings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/config/list": {
      "post": {
        "operationId": "listConfigs",
        "summary": "List configuration values",
        "tags": [
          "Configuration"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "category"
                ],
                "properties": {
                  "category": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "count": {
                      "type": "integer"
                    },
                    "configs": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Config"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_view_settings` **or** `can_edit_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns all configuration entries, optionally filtered by category.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "any": [
                {
                  "permission": "can_view_settings"
                },
                {
                  "permission": "can_edit_settings"
                }
              ]
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_settings` **or** `can_edit_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_settings` **ou** `can_edit_settings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/config/testmail": {
      "post": {
        "operationId": "testMail",
        "summary": "Send test email",
        "tags": [
          "Configuration"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "hostname",
                  "port",
                  "username",
                  "password",
                  "from_email",
                  "to_email"
                ],
                "properties": {
                  "hostname": {
                    "type": "string"
                  },
                  "port": {
                    "type": "string"
                  },
                  "secured": {
                    "type": "boolean"
                  },
                  "username": {
                    "type": "string"
                  },
                  "password": {
                    "type": "string"
                  },
                  "from_name": {
                    "type": "string"
                  },
                  "from_email": {
                    "type": "string"
                  },
                  "to_email": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessResponse"
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_edit_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nSends a test email using the current SMTP configuration to verify email delivery is working.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_settings"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_settings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/contact": {
      "post": {
        "operationId": "post_v1_contact",
        "summary": "Retrieve a contact",
        "tags": [
          "Contacts"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "put": {
        "operationId": "put_v1_contact",
        "summary": "Create a contact",
        "tags": [
          "Contacts"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "patch": {
        "operationId": "patch_v1_contact",
        "summary": "Update a contact",
        "tags": [
          "Contacts"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "delete": {
        "operationId": "delete_v1_contact",
        "summary": "Delete a contact",
        "tags": [
          "Contacts"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/contact/activity": {
      "post": {
        "operationId": "post_v1_contact_activity",
        "summary": "Retrieve contact commercial document activity",
        "tags": [
          "Contacts"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/contact/duplicates": {
      "post": {
        "operationId": "post_v1_contact_duplicates",
        "summary": "Find duplicate contacts for a customer or supplier",
        "tags": [
          "Contacts"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe following checks depend on the action, filters or requested resource; they are not all required for every request:\n\n- `can_view_supplier_contacts`\n- `can_view_customer_contacts`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "conditional",
          "required": [],
          "conditional": [
            {
              "permission": "can_view_supplier_contacts"
            },
            {
              "permission": "can_view_customer_contacts"
            }
          ],
          "description": {
            "en": "The following checks depend on the action, filters or requested resource; they are not all required for every request:\n\n- `can_view_supplier_contacts`\n- `can_view_customer_contacts`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les vérifications suivantes dépendent de l’action, des filtres ou de la ressource demandée; elles ne sont pas toutes requises pour chaque requête :\n\n- `can_view_supplier_contacts`\n- `can_view_customer_contacts`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/contact/list": {
      "post": {
        "operationId": "post_v1_contact_list",
        "summary": "List contacts for a customer or supplier",
        "tags": [
          "Contacts"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe following checks depend on the action, filters or requested resource; they are not all required for every request:\n\n- `can_view_supplier_contacts`\n- `can_view_customer_contacts`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "conditional",
          "required": [],
          "conditional": [
            {
              "permission": "can_view_supplier_contacts"
            },
            {
              "permission": "can_view_customer_contacts"
            }
          ],
          "description": {
            "en": "The following checks depend on the action, filters or requested resource; they are not all required for every request:\n\n- `can_view_supplier_contacts`\n- `can_view_customer_contacts`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les vérifications suivantes dépendent de l’action, des filtres ou de la ressource demandée; elles ne sont pas toutes requises pour chaque requête :\n\n- `can_view_supplier_contacts`\n- `can_view_customer_contacts`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/contact/merge": {
      "post": {
        "operationId": "post_v1_contact_merge",
        "summary": "Merge one contact into another",
        "tags": [
          "Contacts"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/crm/followup": {
      "put": {
        "operationId": "source_put__v1_crm_followup",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "follow_up": {
                      "$ref": "#/components/schemas/CrmFollowUp"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid party, title, status, priority or related record."
          },
          "403": {
            "description": "Customer or supplier permission denied."
          },
          "500": {
            "description": "Session, lookup, update conflict or processing failure."
          }
        },
        "summary": "Create a CRM follow-up",
        "tags": [
          "CRM Follow-Ups"
        ],
        "description": "### Required permissions\n\nThe following checks depend on the action, filters or requested resource; they are not all required for every request:\n\n- `can_edit_customers`, `can_edit_suppliers`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nProvide exactly one positive customer_id or supplier_id. Viewing requires can_view_customers or can_view_suppliers for the selected party; changes require the corresponding can_edit permission. At most one of commercial_document_id, project_id or task_id can identify a related record. That record must belong to the selected party.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "title": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 255
                  },
                  "description": {
                    "type": "string"
                  },
                  "customer_id": {
                    "type": "integer",
                    "minimum": 0
                  },
                  "supplier_id": {
                    "type": "integer",
                    "minimum": 0
                  },
                  "due_at": {
                    "type": "string",
                    "description": "Timestamp accepted by the server, or an empty string to clear it."
                  },
                  "reminder_at": {
                    "type": "string",
                    "description": "Reminder timestamp; it must not be later than due_at."
                  },
                  "assigned_user_id": {
                    "type": "integer",
                    "minimum": 0
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "open",
                      "in_progress",
                      "completed",
                      "cancelled"
                    ],
                    "default": "open"
                  },
                  "priority": {
                    "type": "string",
                    "enum": [
                      "low",
                      "normal",
                      "high",
                      "urgent"
                    ],
                    "default": "normal"
                  },
                  "recurrence_rule": {
                    "type": "string"
                  },
                  "commercial_document_id": {
                    "type": "integer",
                    "minimum": 0
                  },
                  "project_id": {
                    "type": "integer",
                    "minimum": 0
                  },
                  "task_id": {
                    "type": "integer",
                    "minimum": 0
                  },
                  "active": {
                    "type": "boolean",
                    "default": true
                  }
                },
                "required": [
                  "title"
                ],
                "oneOf": [
                  {
                    "required": [
                      "customer_id"
                    ],
                    "properties": {
                      "customer_id": {
                        "type": "integer",
                        "minimum": 1
                      },
                      "supplier_id": {
                        "type": "integer",
                        "maximum": 0
                      }
                    }
                  },
                  {
                    "required": [
                      "supplier_id"
                    ],
                    "properties": {
                      "supplier_id": {
                        "type": "integer",
                        "minimum": 1
                      },
                      "customer_id": {
                        "type": "integer",
                        "maximum": 0
                      }
                    }
                  }
                ]
              },
              "example": {
                "customer_id": 123,
                "title": "Installation follow-up",
                "priority": "normal",
                "status": "open"
              }
            }
          }
        },
        "x-lexoh-permissions": {
          "status": "conditional",
          "required": [],
          "conditional": [
            {
              "checked": [
                "can_edit_customers",
                "can_edit_suppliers"
              ]
            }
          ],
          "description": {
            "en": "The following checks depend on the action, filters or requested resource; they are not all required for every request:\n\n- `can_edit_customers`, `can_edit_suppliers`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les vérifications suivantes dépendent de l’action, des filtres ou de la ressource demandée; elles ne sont pas toutes requises pour chaque requête :\n\n- `can_edit_customers`, `can_edit_suppliers`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "patch": {
        "operationId": "source_patch__v1_crm_followup",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "follow_up": {
                      "$ref": "#/components/schemas/CrmFollowUp"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid party, title, status, priority or related record."
          },
          "403": {
            "description": "Customer or supplier permission denied."
          },
          "500": {
            "description": "Session, lookup, update conflict or processing failure."
          }
        },
        "summary": "Update a versioned CRM follow-up",
        "tags": [
          "CRM Follow-Ups"
        ],
        "description": "### Required permissions\n\nThe following checks depend on the action, filters or requested resource; they are not all required for every request:\n\n- `can_edit_customers`, `can_edit_suppliers`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nSend id, version and title. The existing party is resolved from id and cannot be reassigned. This update writes the complete follow-up state: omitted description, dates, assignments and related-record fields reset to defaults. Send the current values for fields you want to retain. An update version conflict currently returns HTTP 500.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "version": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "title": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 255
                  },
                  "description": {
                    "type": "string"
                  },
                  "customer_id": {
                    "type": "integer",
                    "minimum": 0
                  },
                  "supplier_id": {
                    "type": "integer",
                    "minimum": 0
                  },
                  "due_at": {
                    "type": "string",
                    "description": "Timestamp accepted by the server, or an empty string to clear it."
                  },
                  "reminder_at": {
                    "type": "string",
                    "description": "Reminder timestamp; it must not be later than due_at."
                  },
                  "assigned_user_id": {
                    "type": "integer",
                    "minimum": 0
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "open",
                      "in_progress",
                      "completed",
                      "cancelled"
                    ],
                    "default": "open"
                  },
                  "priority": {
                    "type": "string",
                    "enum": [
                      "low",
                      "normal",
                      "high",
                      "urgent"
                    ],
                    "default": "normal"
                  },
                  "recurrence_rule": {
                    "type": "string"
                  },
                  "commercial_document_id": {
                    "type": "integer",
                    "minimum": 0
                  },
                  "project_id": {
                    "type": "integer",
                    "minimum": 0
                  },
                  "task_id": {
                    "type": "integer",
                    "minimum": 0
                  },
                  "active": {
                    "type": "boolean",
                    "default": true
                  }
                },
                "required": [
                  "id",
                  "version",
                  "title"
                ]
              }
            }
          }
        },
        "x-lexoh-permissions": {
          "status": "conditional",
          "required": [],
          "conditional": [
            {
              "checked": [
                "can_edit_customers",
                "can_edit_suppliers"
              ]
            }
          ],
          "description": {
            "en": "The following checks depend on the action, filters or requested resource; they are not all required for every request:\n\n- `can_edit_customers`, `can_edit_suppliers`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les vérifications suivantes dépendent de l’action, des filtres ou de la ressource demandée; elles ne sont pas toutes requises pour chaque requête :\n\n- `can_edit_customers`, `can_edit_suppliers`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "delete": {
        "operationId": "source_delete__v1_crm_followup",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid party, title, status, priority or related record."
          },
          "403": {
            "description": "Customer or supplier permission denied."
          },
          "409": {
            "description": "The record could not be changed at the supplied version."
          },
          "500": {
            "description": "Session, lookup, update conflict or processing failure."
          }
        },
        "summary": "Cancel and deactivate a CRM follow-up",
        "tags": [
          "CRM Follow-Ups"
        ],
        "description": "### Required permissions\n\nThe following checks depend on the action, filters or requested resource; they are not all required for every request:\n\n- `can_edit_customers`, `can_edit_suppliers`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nUses id and version to mark the follow-up inactive and cancelled. The record is not physically deleted.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "version": {
                    "type": "integer",
                    "minimum": 1
                  }
                },
                "required": [
                  "id",
                  "version"
                ]
              },
              "example": {
                "id": 123,
                "version": 1
              }
            }
          }
        },
        "x-lexoh-permissions": {
          "status": "conditional",
          "required": [],
          "conditional": [
            {
              "checked": [
                "can_edit_customers",
                "can_edit_suppliers"
              ]
            }
          ],
          "description": {
            "en": "The following checks depend on the action, filters or requested resource; they are not all required for every request:\n\n- `can_edit_customers`, `can_edit_suppliers`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les vérifications suivantes dépendent de l’action, des filtres ou de la ressource demandée; elles ne sont pas toutes requises pour chaque requête :\n\n- `can_edit_customers`, `can_edit_suppliers`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/crm/followups/list": {
      "post": {
        "operationId": "source_post__v1_crm_followups_list",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "follow_ups": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/CrmFollowUp"
                      }
                    },
                    "count": {
                      "type": "integer"
                    },
                    "summary": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid party, title, status, priority or related record."
          },
          "403": {
            "description": "Customer or supplier permission denied."
          },
          "500": {
            "description": "Session, lookup, update conflict or processing failure."
          }
        },
        "summary": "List CRM follow-ups",
        "tags": [
          "CRM Follow-Ups"
        ],
        "description": "### Required permissions\n\nThe following checks depend on the action, filters or requested resource; they are not all required for every request:\n\n- `can_view_customers`, `can_view_suppliers`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nProvide exactly one positive customer_id or supplier_id. Viewing requires can_view_customers or can_view_suppliers for the selected party; changes require the corresponding can_edit permission.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "customer_id": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "supplier_id": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "status": {
                    "type": "string"
                  },
                  "assigned_user_id": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "active_only": {
                    "type": "boolean",
                    "default": true
                  },
                  "limit": {
                    "type": "integer",
                    "default": 100,
                    "description": "Clamped to 1-250."
                  }
                },
                "oneOf": [
                  {
                    "required": [
                      "customer_id"
                    ],
                    "properties": {
                      "customer_id": {
                        "type": "integer",
                        "minimum": 1
                      },
                      "supplier_id": {
                        "type": "integer",
                        "maximum": 0
                      }
                    }
                  },
                  {
                    "required": [
                      "supplier_id"
                    ],
                    "properties": {
                      "supplier_id": {
                        "type": "integer",
                        "minimum": 1
                      },
                      "customer_id": {
                        "type": "integer",
                        "maximum": 0
                      }
                    }
                  }
                ]
              },
              "example": {
                "customer_id": 123,
                "active_only": true,
                "limit": 25
              }
            }
          }
        },
        "x-lexoh-permissions": {
          "status": "conditional",
          "required": [],
          "conditional": [
            {
              "checked": [
                "can_view_customers",
                "can_view_suppliers"
              ]
            }
          ],
          "description": {
            "en": "The following checks depend on the action, filters or requested resource; they are not all required for every request:\n\n- `can_view_customers`, `can_view_suppliers`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les vérifications suivantes dépendent de l’action, des filtres ou de la ressource demandée; elles ne sont pas toutes requises pour chaque requête :\n\n- `can_view_customers`, `can_view_suppliers`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/crm/followups/options": {
      "post": {
        "operationId": "source_post__v1_crm_followups_options",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "users": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": true
                      }
                    },
                    "documents": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": true
                      }
                    },
                    "projects": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": true
                      }
                    },
                    "tasks": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": true
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid party, title, status, priority or related record."
          },
          "403": {
            "description": "Customer or supplier permission denied."
          },
          "500": {
            "description": "Session, lookup, update conflict or processing failure."
          }
        },
        "summary": "List CRM follow-up options",
        "tags": [
          "CRM Follow-Ups"
        ],
        "description": "### Required permissions\n\nThe following checks depend on the action, filters or requested resource; they are not all required for every request:\n\n- `can_view_customers`, `can_view_suppliers`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nProvide exactly one positive customer_id or supplier_id. Viewing requires can_view_customers or can_view_suppliers for the selected party; changes require the corresponding can_edit permission. Projects and tasks are available for customer follow-ups only.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "customer_id": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "supplier_id": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "search": {
                    "type": "string"
                  },
                  "limit": {
                    "type": "integer",
                    "default": 100,
                    "description": "Clamped to 1-100."
                  }
                },
                "oneOf": [
                  {
                    "required": [
                      "customer_id"
                    ],
                    "properties": {
                      "customer_id": {
                        "type": "integer",
                        "minimum": 1
                      },
                      "supplier_id": {
                        "type": "integer",
                        "maximum": 0
                      }
                    }
                  },
                  {
                    "required": [
                      "supplier_id"
                    ],
                    "properties": {
                      "supplier_id": {
                        "type": "integer",
                        "minimum": 1
                      },
                      "customer_id": {
                        "type": "integer",
                        "maximum": 0
                      }
                    }
                  }
                ]
              },
              "example": {
                "customer_id": 123,
                "search": "",
                "limit": 25
              }
            }
          }
        },
        "x-lexoh-permissions": {
          "status": "conditional",
          "required": [],
          "conditional": [
            {
              "checked": [
                "can_view_customers",
                "can_view_suppliers"
              ]
            }
          ],
          "description": {
            "en": "The following checks depend on the action, filters or requested resource; they are not all required for every request:\n\n- `can_view_customers`, `can_view_suppliers`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les vérifications suivantes dépendent de l’action, des filtres ou de la ressource demandée; elles ne sont pas toutes requises pour chaque requête :\n\n- `can_view_customers`, `can_view_suppliers`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/customer": {
      "post": {
        "operationId": "getCustomer",
        "summary": "Retrieve a single customer",
        "tags": [
          "Customers"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "id"
                ],
                "properties": {
                  "id": {
                    "type": "integer",
                    "description": "The customer UUID"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "customer": {
                      "$ref": "#/components/schemas/Customer"
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_view_customers`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nFetches customer details by ID, including contact information, vehicles, and access cards.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_customers"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_customers`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_customers`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "put": {
        "operationId": "createCustomer",
        "summary": "Create a new customer",
        "tags": [
          "Customers"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "name",
                  "status",
                  "locale"
                ],
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "email": {
                    "type": "string"
                  },
                  "description": {
                    "type": "string"
                  },
                  "status": {
                    "type": "boolean"
                  },
                  "locale": {
                    "type": "string"
                  },
                  "company_id": {
                    "type": "integer"
                  },
                  "phone": {
                    "type": "string"
                  },
                  "license_plates": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "address": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "customer": {
                      "$ref": "#/components/schemas/Customer"
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_add_customers`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRegisters a new customer with their contact details and optional vehicle information.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_add_customers"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_add_customers`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_add_customers`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "patch": {
        "operationId": "updateCustomer",
        "summary": "Update a customer",
        "tags": [
          "Customers"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "id"
                ],
                "properties": {
                  "id": {
                    "type": "integer",
                    "description": "The customer UUID to update"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "customer": {
                      "$ref": "#/components/schemas/Customer"
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_edit_customers`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nModifies an existing customer's profile information.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_customers"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_customers`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_customers`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "delete": {
        "operationId": "deleteCustomer",
        "summary": "Delete a customer",
        "tags": [
          "Customers"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "id"
                ],
                "properties": {
                  "id": {
                    "type": "integer",
                    "description": "The customer UUID to delete"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessResponse"
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_delete_customers`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nPermanently deletes a customer record and their associated access cards.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_delete_customers"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_delete_customers`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_delete_customers`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/customer/excel": {
      "post": {
        "operationId": "exportCustomerExcel",
        "summary": "Download customers as Excel",
        "tags": [
          "Customers"
        ],
        "responses": {
          "200": {
            "description": "Excel file",
            "content": {
              "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_view_customers`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nGenerates an .xlsx spreadsheet of customers matching the filter criteria.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_customers"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_customers`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_customers`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/customer/filters": {
      "post": {
        "operationId": "getCustomerFilters",
        "summary": "Get customer filter options",
        "tags": [
          "Customers"
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "count": {
                      "type": "integer"
                    },
                    "customers": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/FilterItem"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_view_customers`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns a list of customers formatted for use in dropdown/filter UI components.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_customers"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_customers`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_customers`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/customer/list": {
      "post": {
        "operationId": "listCustomers",
        "summary": "List customers",
        "tags": [
          "Customers"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "page": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "page_limit": {
                    "type": "integer"
                  },
                  "search": {
                    "type": "string"
                  },
                  "status": {
                    "type": "integer"
                  },
                  "companies": {
                    "type": "array",
                    "items": {
                      "type": "integer"
                    }
                  },
                  "last_visit_start_date": {
                    "type": "string"
                  },
                  "last_visit_end_date": {
                    "type": "string"
                  },
                  "entry_start_date": {
                    "type": "string"
                  },
                  "entry_end_date": {
                    "type": "string"
                  },
                  "exit_start_date": {
                    "type": "string"
                  },
                  "exit_end_date": {
                    "type": "string"
                  },
                  "validation_start_date": {
                    "type": "string"
                  },
                  "validation_end_date": {
                    "type": "string"
                  },
                  "expiration_start_date": {
                    "type": "string"
                  },
                  "expiration_end_date": {
                    "type": "string"
                  },
                  "access_card_status": {
                    "type": "integer"
                  },
                  "currently_inside": {
                    "type": "integer"
                  },
                  "last_visited_zones": {
                    "type": "array",
                    "items": {
                      "type": "integer"
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "count": {
                      "type": "integer"
                    },
                    "customers": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Customer"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_view_customers`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns a paginated list of customers. Supports filtering by name, email, and company.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_customers"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_customers`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_customers`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/customer/note/command": {
      "post": {
        "operationId": "post_v1_customer_note_command",
        "summary": "Mutate a customer note",
        "tags": [
          "Customers"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nCreates, updates, or soft-deletes a dated customer note with optimistic version checks.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/customers/{id}/documents": {
      "put": {
        "operationId": "put_v1_customers_{id}_documents",
        "summary": "Upload a customer document",
        "tags": [
          "Customers"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nAdds a direct customer document or an attachment to one of the customer's notes.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9]+$"
            }
          }
        ],
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/customers/{id}/documents/{param}": {
      "delete": {
        "operationId": "delete_v1_customers_{id}_documents_{param}",
        "summary": "Delete a customer document",
        "tags": [
          "Customers"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9]+$"
            }
          },
          {
            "name": "param",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9]+$"
            }
          }
        ],
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/customers/{id}/documents/{param}/download": {
      "get": {
        "operationId": "get_v1_customers_{id}_documents_{param}_download",
        "summary": "Download a customer document",
        "tags": [
          "Customers"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9]+$"
            }
          },
          {
            "name": "param",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9]+$"
            }
          }
        ],
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version."
      }
    },
    "/v1/customers/{id}/workspace": {
      "post": {
        "operationId": "post_v1_customers_{id}_workspace",
        "summary": "Retrieve customer relationship workspace",
        "tags": [
          "Customers"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns a cursor-paged notes or documents tab for one customer.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9]+$"
            }
          }
        ],
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/dashboards/devices": {
      "post": {
        "operationId": "post_v1_dashboards_devices",
        "summary": "Get the devices overview dashboard",
        "tags": [
          "Dashboards"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/dashboards/incidents": {
      "post": {
        "operationId": "post_v1_dashboards_incidents",
        "summary": "Get the incident management dashboard",
        "tags": [
          "Dashboards"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_incidents`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns all incident KPIs, trends, distributions, site metrics,\nand the compact active queue from one bounded database read model.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_incidents"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_incidents`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_incidents`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/dashboards/operations": {
      "post": {
        "operationId": "post_v1_dashboards_operations",
        "summary": "Get the live operations dashboard",
        "tags": [
          "Dashboards"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/dashboards/revenue": {
      "post": {
        "operationId": "post_v1_dashboards_revenue",
        "summary": "Get the revenue overview dashboard",
        "tags": [
          "Dashboards"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/dashboards/site": {
      "post": {
        "operationId": "post_v1_dashboards_site",
        "summary": "Get the site overview dashboard",
        "tags": [
          "Dashboards"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/dashboards/system": {
      "post": {
        "operationId": "post_v1_dashboards_system",
        "summary": "Get the system overview dashboard",
        "tags": [
          "Dashboards"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns system KPIs, comparisons, site health, map markers,\npriority items, scope facets, capabilities, and freshness from\none bounded aggregate query.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/dashboards/zones": {
      "post": {
        "operationId": "post_v1_dashboards_zones",
        "summary": "Get the zones overview dashboard",
        "tags": [
          "Dashboards"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/device": {
      "put": {
        "operationId": "createDevice",
        "summary": "Register a new device",
        "tags": [
          "Devices"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "name",
                  "type",
                  "description",
                  "hostname",
                  "port",
                  "serverurl"
                ],
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "type": {
                    "type": "string"
                  },
                  "description": {
                    "type": "string"
                  },
                  "hostname": {
                    "type": "string"
                  },
                  "port": {
                    "type": "string"
                  },
                  "serverurl": {
                    "type": "string"
                  },
                  "zone_id": {
                    "type": "integer"
                  },
                  "latitude": {
                    "type": "number"
                  },
                  "longitude": {
                    "type": "number"
                  },
                  "icon": {
                    "type": "integer",
                    "description": "Device icon index (frontend-defined)"
                  },
                  "camera_id": {
                    "type": "integer"
                  },
                  "sub_zones": {
                    "type": "array",
                    "items": {
                      "type": "integer"
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "device": {
                      "$ref": "#/components/schemas/Device"
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_add_devices`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRegisters a new physical device (gate controller, kiosk, sensor, etc.) in the system. The device is identified by gate_id, serial, or MAC address.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_add_devices"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_add_devices`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_add_devices`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "post": {
        "operationId": "getDevice",
        "summary": "Retrieve a single device",
        "tags": [
          "Devices"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "id"
                ],
                "properties": {
                  "id": {
                    "type": "integer",
                    "description": "The device UUID"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "device": {
                      "$ref": "#/components/schemas/Device"
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_view_devices`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nFetches device details by ID, including its configuration, zone assignment, and connection status.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_devices"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_devices`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_devices`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/device/close": {
      "post": {
        "operationId": "closeGate",
        "summary": "Close gate",
        "tags": [
          "Devices"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "id"
                ],
                "properties": {
                  "id": {
                    "type": "integer",
                    "description": "The device UUID of the gate"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessResponse"
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_control_devices`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nSends a close command to a gate device.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_control_devices"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_control_devices`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_control_devices`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/device/close-second": {
      "post": {
        "operationId": "closeGateSecond",
        "summary": "Close secondary gate barrier",
        "tags": [
          "Devices"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "id"
                ],
                "properties": {
                  "id": {
                    "type": "integer",
                    "description": "The device UUID of the gate"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessResponse"
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_control_devices`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nCloses the secondary barrier on a dual-barrier gate system.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_control_devices"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_control_devices`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_control_devices`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/device/config": {
      "patch": {
        "operationId": "editDeviceConfig",
        "summary": "Update device configuration",
        "tags": [
          "Devices"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "id"
                ],
                "properties": {
                  "id": {
                    "type": "integer",
                    "description": "The device UUID"
                  },
                  "name": {
                    "type": "string"
                  },
                  "type": {
                    "type": "string"
                  },
                  "brand": {
                    "type": "string"
                  },
                  "model": {
                    "type": "string"
                  },
                  "zone_id": {
                    "type": "integer"
                  },
                  "barrier_type": {
                    "type": "string"
                  },
                  "prevent_customers": {
                    "type": "boolean"
                  },
                  "prevent_guests": {
                    "type": "boolean"
                  },
                  "uhf_hostname": {
                    "type": "string"
                  },
                  "uhf_port": {
                    "type": "integer"
                  },
                  "card_reader_type": {
                    "type": "string"
                  },
                  "relay_settings": {
                    "type": "object"
                  },
                  "screen_type": {
                    "type": "string"
                  },
                  "use_lan_server": {
                    "type": "boolean"
                  },
                  "lan_server": {
                    "type": "string"
                  },
                  "has_printer": {
                    "type": "boolean"
                  },
                  "has_printer_pickup_sensor": {
                    "type": "boolean"
                  },
                  "run_survision_server": {
                    "type": "boolean"
                  },
                  "show_close_device_button": {
                    "type": "boolean"
                  },
                  "survision_devices": {
                    "type": "array",
                    "items": {
                      "type": "object"
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "device": {
                      "$ref": "#/components/schemas/Device"
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_edit_devices`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nModifies a device's configuration parameters (e.g. display settings, gate timing, network config).",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_devices"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_devices`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_devices`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/device/filters": {
      "post": {
        "operationId": "getDeviceFilters",
        "summary": "Get device filter options",
        "tags": [
          "Devices"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "paymentOnly": {
                    "type": "boolean"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "count": {
                      "type": "integer"
                    },
                    "devices": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/FilterItem"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_view_devices`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns a list of devices formatted for use in dropdown/filter UI components.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_devices"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_devices`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_devices`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/device/keep_open": {
      "post": {
        "operationId": "keepGateOpen",
        "summary": "Keep gate open",
        "tags": [
          "Devices"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "id"
                ],
                "properties": {
                  "id": {
                    "type": "integer",
                    "description": "The device UUID of the gate"
                  },
                  "duration": {
                    "type": "integer",
                    "description": "Duration in minutes"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessResponse"
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_control_devices`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nHolds the gate in the open position until manually closed. Useful for maintenance or high-traffic periods.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_control_devices"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_control_devices`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_control_devices`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/device/list": {
      "post": {
        "operationId": "listDevices",
        "summary": "List all devices",
        "tags": [
          "Devices"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "page": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "page_limit": {
                    "type": "integer"
                  },
                  "search": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "count": {
                      "type": "integer"
                    },
                    "devices": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Device"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_view_devices`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns a paginated list of devices. Supports filtering by zone, type, and connection status.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_devices"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_devices`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_devices`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/device/location": {
      "post": {
        "operationId": "listDevicesLocation",
        "summary": "Get device locations",
        "tags": [
          "Devices"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "type": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "count": {
                      "type": "integer"
                    },
                    "devices": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Device"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_view_devices`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns geographic coordinates and zone assignments for all devices, used for map display.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_devices"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_devices`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_devices`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/device/lost_ticket": {
      "post": {
        "operationId": "lostTicket",
        "summary": "Process lost ticket",
        "tags": [
          "Devices"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "id"
                ],
                "properties": {
                  "id": {
                    "type": "integer",
                    "description": "The device UUID"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessResponse"
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_control_devices`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nHandles a lost ticket scenario at a gate. Calculates maximum parking fee and allows exit.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_control_devices"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_control_devices`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_control_devices`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/device/open": {
      "post": {
        "operationId": "openGate",
        "summary": "Open gate",
        "tags": [
          "Devices"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "id"
                ],
                "properties": {
                  "id": {
                    "type": "integer",
                    "description": "The device UUID of the gate"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessResponse"
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_control_devices`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nSends an open command to a gate device. The gate will open and auto-close after the configured timeout.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_control_devices"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_control_devices`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_control_devices`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/device/operational-config": {
      "patch": {
        "operationId": "updateDeviceOperationalConfig",
        "summary": "Update lane/equipment operational configuration",
        "tags": [
          "Devices"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "device_id",
                  "expected_config_version",
                  "reason",
                  "changes"
                ],
                "properties": {
                  "device_id": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 2147483647
                  },
                  "expected_config_version": {
                    "type": "integer",
                    "format": "int64",
                    "minimum": 0
                  },
                  "reason": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 1000
                  },
                  "changes": {
                    "type": "object",
                    "additionalProperties": false,
                    "minProperties": 1,
                    "properties": {
                      "lane_code": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 100,
                        "nullable": true
                      },
                      "lane_direction": {
                        "type": "string",
                        "enum": [
                          "entry",
                          "exit",
                          "bidirectional"
                        ],
                        "nullable": true
                      },
                      "operational_status": {
                        "type": "string",
                        "enum": [
                          "unknown",
                          "operational",
                          "degraded",
                          "maintenance",
                          "offline",
                          "disabled"
                        ]
                      },
                      "maintenance_until": {
                        "type": "string",
                        "nullable": true
                      },
                      "parent_device_id": {
                        "type": "integer",
                        "minimum": 1,
                        "nullable": true
                      },
                      "native_unit_id": {
                        "type": "integer",
                        "minimum": 1,
                        "nullable": true
                      },
                      "metrology_status": {
                        "type": "string",
                        "enum": [
                          "not_applicable",
                          "unknown",
                          "valid",
                          "due",
                          "expired",
                          "suspended"
                        ]
                      },
                      "last_calibrated_at": {
                        "type": "string",
                        "nullable": true
                      },
                      "calibration_valid_until": {
                        "type": "string",
                        "nullable": true
                      },
                      "calibration_document_id": {
                        "type": "integer",
                        "minimum": 1,
                        "nullable": true
                      },
                      "calibration_certificate_reference": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 255,
                        "nullable": true
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Updated device configuration",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "success",
                    "device"
                  ],
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "device": {
                      "$ref": "#/components/schemas/Device"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid configuration change"
          },
          "401": {
            "description": "Authentication required or invalid session"
          },
          "403": {
            "description": "Device update permission or company scope denied"
          },
          "404": {
            "description": "Device not found"
          },
          "409": {
            "description": "Device configuration version conflict"
          },
          "500": {
            "description": "Device configuration update failed"
          }
        },
        "x-content-type-header-enforced": false,
        "description": "### Required permissions\n\n- `can_edit_devices`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nApplies a narrow, version-checked update without changing physical device behavior.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_devices"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_devices`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_devices`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/device/print": {
      "post": {
        "operationId": "printTicket",
        "summary": "Print ticket at device",
        "tags": [
          "Devices"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "id"
                ],
                "properties": {
                  "id": {
                    "type": "integer",
                    "description": "The device UUID"
                  },
                  "print_type": {
                    "type": "string",
                    "enum": [
                      "access",
                      "receipt"
                    ]
                  },
                  "access_card_id": {
                    "type": "integer"
                  },
                  "transaction_id": {
                    "type": "integer"
                  },
                  "language": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessResponse"
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\nThe following checks depend on the action, filters or requested resource; they are not all required for every request:\n\n- `can_view_access_cards`, `can_view_guests`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nTriggers the ticket printer on the device to print a parking ticket or receipt.",
        "x-lexoh-permissions": {
          "status": "conditional",
          "required": [],
          "conditional": [
            {
              "checked": [
                "can_view_access_cards",
                "can_view_guests"
              ]
            }
          ],
          "description": {
            "en": "The following checks depend on the action, filters or requested resource; they are not all required for every request:\n\n- `can_view_access_cards`, `can_view_guests`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les vérifications suivantes dépendent de l’action, des filtres ou de la ressource demandée; elles ne sont pas toutes requises pour chaque requête :\n\n- `can_view_access_cards`, `can_view_guests`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/device/reboot": {
      "post": {
        "operationId": "rebootDevice",
        "summary": "Reboot device",
        "tags": [
          "Devices"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "id"
                ],
                "properties": {
                  "id": {
                    "type": "integer",
                    "description": "The device UUID"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessResponse"
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_edit_devices`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nSends a full hardware reboot command to the device.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_devices"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_devices`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_devices`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/device/restart": {
      "post": {
        "operationId": "restartDevice",
        "summary": "Restart device software",
        "tags": [
          "Devices"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "id"
                ],
                "properties": {
                  "id": {
                    "type": "integer",
                    "description": "The device UUID"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessResponse"
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_edit_devices`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRestarts only the device software without a full hardware reboot.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_devices"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_devices`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_devices`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/device/telemetry/history": {
      "post": {
        "operationId": "post_v1_device_telemetry_history",
        "summary": "Get device telemetry history",
        "tags": [
          "Devices"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_devices`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns sampled device telemetry history for monitoring graphs.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_devices"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_devices`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_devices`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/device/type": {
      "post": {
        "operationId": "listDevicesByType",
        "summary": "List devices by type",
        "tags": [
          "Devices"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "type": {
                    "type": "string",
                    "description": "The device type to filter by"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "count": {
                      "type": "integer"
                    },
                    "devices": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Device"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_view_devices`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns devices matching the specified type (gate, kiosk, sensor, camera, etc.).",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_devices"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_devices`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_devices`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/document": {
      "post": {
        "operationId": "post_v1_document",
        "summary": "Retrieve a document metadata row",
        "tags": [
          "Documents"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_transactions"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_transactions`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "delete": {
        "operationId": "delete_v1_document",
        "summary": "Delete a document from S3 and soft-delete metadata",
        "tags": [
          "Documents"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_delete_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_delete_transactions"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_delete_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_delete_transactions`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/document/list": {
      "post": {
        "operationId": "post_v1_document_list",
        "summary": "List document metadata rows",
        "tags": [
          "Documents"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_transactions"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_transactions`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/document/upload": {
      "put": {
        "operationId": "put_v1_document_upload",
        "summary": "Upload a document to S3",
        "tags": [
          "Documents"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_add_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_add_transactions"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_add_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_add_transactions`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/document/{id}/download": {
      "get": {
        "operationId": "get_v1_document_{id}_download",
        "summary": "Download a document from S3",
        "tags": [
          "Documents"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9]+$"
            }
          }
        ],
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_transactions"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_transactions`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        },
        "description": "### Required permissions\n\n- `can_view_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version."
      }
    },
    "/v1/email/queue": {
      "post": {
        "operationId": "post_v1_email_queue",
        "summary": "Email Queue Status",
        "tags": [
          "Email & SMS"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_edit_users`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns paginated email queue entries. Requires can_edit_users permission.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_users"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_users`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_users`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/email/summary": {
      "post": {
        "operationId": "post_v1_email_summary",
        "summary": "Email Queue Summary",
        "tags": [
          "Email & SMS"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_edit_users`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns email queue statistics (pending/sent/failed counts, per-day/per-context). Requires can_edit_users permission.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_users"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_users`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_users`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/entitlement-bank": {
      "put": {
        "operationId": "source_put__v1_entitlement_bank",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "bank": {
                      "$ref": "#/components/schemas/EntitlementBank"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid request fields or owner/program/unit combination."
          },
          "401": {
            "description": "Authentication required or invalid session."
          },
          "403": {
            "description": "Access-card permission or company scope denied."
          },
          "404": {
            "description": "Entitlement bank or referenced entity not found."
          },
          "409": {
            "description": "Version or idempotency conflict."
          },
          "422": {
            "description": "Insufficient balance, inactive entitlement or missing access assignment."
          },
          "500": {
            "description": "Entitlement processing failed."
          }
        },
        "summary": "Create an entitlement bank",
        "tags": [
          "Entitlement Banks"
        ],
        "description": "### Required permissions\n\n- `can_edit_access_cards`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequires can_edit_access_cards. Provide owner_id unless owner_type is internal. private_prepaid requires a customer owner; city_supplier_payable and city_contract_allowance require a supplier; municipal_internal accepts an internal or user owner. The unit dimension must match the bank type. New banks start active with a zero balance.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "minLength": 1
                  },
                  "description": {
                    "type": "string"
                  },
                  "owner_type": {
                    "type": "string",
                    "enum": [
                      "customer",
                      "supplier",
                      "user",
                      "internal"
                    ]
                  },
                  "owner_id": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "program_code": {
                    "type": "string",
                    "enum": [
                      "private_prepaid",
                      "city_supplier_payable",
                      "city_contract_allowance",
                      "municipal_internal"
                    ]
                  },
                  "bank_type": {
                    "type": "string",
                    "enum": [
                      "trips",
                      "money",
                      "hours",
                      "quantity"
                    ]
                  },
                  "unit_id": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "currency": {
                    "type": "string",
                    "default": "CAD"
                  },
                  "company_id": {
                    "type": "integer",
                    "minimum": 0
                  },
                  "allow_negative": {
                    "type": "boolean",
                    "default": false
                  },
                  "valid_from": {
                    "type": "string"
                  },
                  "valid_to": {
                    "type": "string"
                  },
                  "project_id": {
                    "type": "integer",
                    "minimum": 0
                  },
                  "site_id": {
                    "type": "integer",
                    "minimum": 0
                  }
                },
                "required": [
                  "name",
                  "owner_type",
                  "program_code",
                  "bank_type",
                  "unit_id"
                ]
              }
            }
          }
        },
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_access_cards"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_access_cards`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_access_cards`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "patch": {
        "operationId": "source_patch__v1_entitlement_bank",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "bank": {
                      "$ref": "#/components/schemas/EntitlementBank"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid request fields or owner/program/unit combination."
          },
          "401": {
            "description": "Authentication required or invalid session."
          },
          "403": {
            "description": "Access-card permission or company scope denied."
          },
          "404": {
            "description": "Entitlement bank or referenced entity not found."
          },
          "409": {
            "description": "Version or idempotency conflict."
          },
          "422": {
            "description": "Insufficient balance, inactive entitlement or missing access assignment."
          },
          "500": {
            "description": "Entitlement processing failed."
          }
        },
        "summary": "Update a versioned entitlement bank",
        "tags": [
          "Entitlement Banks"
        ],
        "description": "### Required permissions\n\n- `can_edit_access_cards`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequires can_edit_access_cards. Provide expected_version in the body/query or If-Match in the header. Other omitted fields retain their current values. Ownership, unit and program cannot be changed here.",
        "parameters": [
          {
            "name": "If-Match",
            "in": "header",
            "required": false,
            "description": "Integer bank version; used only when expected_version is absent from the body and query. Quoted and weak values are accepted.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "bank_id": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "expected_version": {
                    "type": "integer",
                    "minimum": 0
                  },
                  "name": {
                    "type": "string"
                  },
                  "description": {
                    "type": "string"
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "active",
                      "suspended",
                      "expired",
                      "closed"
                    ]
                  },
                  "allow_negative": {
                    "type": "boolean"
                  },
                  "valid_from": {
                    "type": "string"
                  },
                  "valid_to": {
                    "type": "string"
                  }
                },
                "required": [
                  "bank_id"
                ]
              }
            }
          }
        },
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_access_cards"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_access_cards`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_access_cards`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/entitlement-bank/access-assignment": {
      "put": {
        "operationId": "source_put__v1_entitlement_bank_access_assignment",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "assignment_id": {
                      "type": "integer",
                      "minimum": 1
                    },
                    "bank_id": {
                      "type": "integer",
                      "minimum": 1
                    },
                    "access_id": {
                      "type": "integer",
                      "minimum": 1
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid request fields or owner/program/unit combination."
          },
          "401": {
            "description": "Authentication required or invalid session."
          },
          "403": {
            "description": "Access-card permission or company scope denied."
          },
          "404": {
            "description": "Entitlement bank or referenced entity not found."
          },
          "409": {
            "description": "Version or idempotency conflict."
          },
          "422": {
            "description": "Insufficient balance, inactive entitlement or missing access assignment."
          },
          "500": {
            "description": "Entitlement processing failed."
          }
        },
        "summary": "Assign an access card to an entitlement bank",
        "tags": [
          "Entitlement Banks"
        ],
        "description": "### Required permissions\n\n- `can_edit_access_cards`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequires can_edit_access_cards. An existing active assignment for this bank/card pair is revoked before the new active assignment is created.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "bank_id": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "access_id": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "priority": {
                    "type": "integer",
                    "default": 100
                  },
                  "valid_from": {
                    "type": "string"
                  },
                  "valid_to": {
                    "type": "string"
                  }
                },
                "required": [
                  "bank_id",
                  "access_id"
                ]
              },
              "example": {
                "bank_id": 123,
                "access_id": 456,
                "priority": 100
              }
            }
          }
        },
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_access_cards"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_access_cards`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_access_cards`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/entitlement-bank/consume": {
      "post": {
        "operationId": "source_post__v1_entitlement_bank_consume",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "bank": {
                      "$ref": "#/components/schemas/EntitlementBank"
                    },
                    "movement": {
                      "type": "object",
                      "additionalProperties": true
                    },
                    "duplicate": {
                      "type": "boolean"
                    },
                    "commercial_document_id": {
                      "type": "integer"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid request fields or owner/program/unit combination."
          },
          "401": {
            "description": "Authentication required or invalid session."
          },
          "403": {
            "description": "Access-card permission or company scope denied."
          },
          "404": {
            "description": "Entitlement bank or referenced entity not found."
          },
          "409": {
            "description": "Version or idempotency conflict."
          },
          "422": {
            "description": "Insufficient balance, inactive entitlement or missing access assignment."
          },
          "500": {
            "description": "Entitlement processing failed."
          }
        },
        "summary": "Consume entitlement and create its settlement",
        "tags": [
          "Entitlement Banks"
        ],
        "description": "### Required permissions\n\n- `can_edit_access_cards`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequires can_edit_access_cards, an active bank, a valid access assignment and entry_id. Consumption debits the bank, records the movement and creates the applicable settlement. A negative balance is rejected unless the bank allows it.",
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "UUID used when idempotency_key is absent from the JSON body/query.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "If-Match",
            "in": "header",
            "required": false,
            "description": "Integer bank version; used only when expected_version is absent from the body and query. Quoted and weak values are accepted.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "bank_id": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "quantity": {
                    "oneOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "number",
                        "minimum": 0,
                        "exclusiveMinimum": true
                      }
                    ],
                    "description": "Finite positive quantity."
                  },
                  "expected_version": {
                    "type": "integer",
                    "minimum": 0,
                    "description": "Optional concurrency check when greater than zero."
                  },
                  "idempotency_key": {
                    "type": "string",
                    "format": "uuid",
                    "description": "Use a unique UUID for each movement. A UUID is generated if omitted."
                  },
                  "entry_id": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "access_id": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "commercial_document_line_id": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "reason": {
                    "type": "string"
                  },
                  "occurred_at": {
                    "type": "string"
                  },
                  "policy_snapshot": {
                    "type": "object",
                    "additionalProperties": true
                  }
                },
                "required": [
                  "bank_id",
                  "quantity",
                  "entry_id",
                  "access_id"
                ]
              }
            }
          }
        },
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_access_cards"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_access_cards`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_access_cards`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/entitlement-bank/credit": {
      "post": {
        "operationId": "source_post__v1_entitlement_bank_credit",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "bank": {
                      "$ref": "#/components/schemas/EntitlementBank"
                    },
                    "movement": {
                      "type": "object",
                      "additionalProperties": true
                    },
                    "duplicate": {
                      "type": "boolean"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid request fields or owner/program/unit combination."
          },
          "401": {
            "description": "Authentication required or invalid session."
          },
          "403": {
            "description": "Access-card permission or company scope denied."
          },
          "404": {
            "description": "Entitlement bank or referenced entity not found."
          },
          "409": {
            "description": "Version or idempotency conflict."
          },
          "422": {
            "description": "Insufficient balance, inactive entitlement or missing access assignment."
          },
          "500": {
            "description": "Entitlement processing failed."
          }
        },
        "summary": "Credit an entitlement bank",
        "tags": [
          "Entitlement Banks"
        ],
        "description": "### Required permissions\n\n- `can_edit_access_cards`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequires can_edit_access_cards and an active bank. sale_credit requires a paid sales-invoice line belonging to the customer bank. contract_grant requires a city_contract_allowance program. Provide an idempotency key when retrying a movement.",
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "UUID used when idempotency_key is absent from the JSON body/query.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "If-Match",
            "in": "header",
            "required": false,
            "description": "Integer bank version; used only when expected_version is absent from the body and query. Quoted and weak values are accepted.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "bank_id": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "quantity": {
                    "oneOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "number",
                        "minimum": 0,
                        "exclusiveMinimum": true
                      }
                    ],
                    "description": "Finite positive quantity."
                  },
                  "expected_version": {
                    "type": "integer",
                    "minimum": 0,
                    "description": "Optional concurrency check when greater than zero."
                  },
                  "idempotency_key": {
                    "type": "string",
                    "format": "uuid",
                    "description": "Use a unique UUID for each movement. A UUID is generated if omitted."
                  },
                  "entry_id": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "access_id": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "commercial_document_line_id": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "reason": {
                    "type": "string"
                  },
                  "occurred_at": {
                    "type": "string"
                  },
                  "policy_snapshot": {
                    "type": "object",
                    "additionalProperties": true
                  },
                  "movement_type": {
                    "type": "string",
                    "enum": [
                      "sale_credit",
                      "contract_grant",
                      "refund",
                      "adjustment",
                      "reversal"
                    ],
                    "default": "sale_credit"
                  }
                },
                "required": [
                  "bank_id",
                  "quantity"
                ]
              }
            }
          }
        },
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_access_cards"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_access_cards`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_access_cards`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/entitlement-bank/get": {
      "post": {
        "operationId": "source_post__v1_entitlement_bank_get",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "bank": {
                      "$ref": "#/components/schemas/EntitlementBank"
                    },
                    "assignments": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": true
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid request fields or owner/program/unit combination."
          },
          "401": {
            "description": "Authentication required or invalid session."
          },
          "403": {
            "description": "Access-card permission or company scope denied."
          },
          "404": {
            "description": "Entitlement bank or referenced entity not found."
          },
          "409": {
            "description": "Version or idempotency conflict."
          },
          "422": {
            "description": "Insufficient balance, inactive entitlement or missing access assignment."
          },
          "500": {
            "description": "Entitlement processing failed."
          }
        },
        "summary": "Retrieve an entitlement bank and its assignments",
        "tags": [
          "Entitlement Banks"
        ],
        "description": "### Required permissions\n\n- `can_view_access_cards`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequires can_view_access_cards. JSON body fields take precedence over query parameters. Company scope is checked for bank operations.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "bank_id": {
                    "type": "integer",
                    "minimum": 1
                  }
                },
                "required": [
                  "bank_id"
                ]
              },
              "example": {
                "bank_id": 123
              }
            }
          }
        },
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_access_cards"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_access_cards`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_access_cards`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/entitlement-bank/history": {
      "post": {
        "operationId": "source_post__v1_entitlement_bank_history",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "bank": {
                      "$ref": "#/components/schemas/EntitlementBank"
                    },
                    "items": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": true
                      }
                    },
                    "count": {
                      "type": "integer"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid request fields or owner/program/unit combination."
          },
          "401": {
            "description": "Authentication required or invalid session."
          },
          "403": {
            "description": "Access-card permission or company scope denied."
          },
          "404": {
            "description": "Entitlement bank or referenced entity not found."
          },
          "409": {
            "description": "Version or idempotency conflict."
          },
          "422": {
            "description": "Insufficient balance, inactive entitlement or missing access assignment."
          },
          "500": {
            "description": "Entitlement processing failed."
          }
        },
        "summary": "Retrieve entitlement movement history",
        "tags": [
          "Entitlement Banks"
        ],
        "description": "### Required permissions\n\n- `can_view_access_cards`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequires can_view_access_cards. JSON body fields take precedence over query parameters. Company scope is checked for bank operations. Movements are returned in descending sequence order.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "bank_id": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "limit": {
                    "type": "integer",
                    "default": 100,
                    "description": "Clamped to 1-250."
                  }
                },
                "required": [
                  "bank_id"
                ]
              },
              "example": {
                "bank_id": 123,
                "limit": 25
              }
            }
          }
        },
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_access_cards"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_access_cards`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_access_cards`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/entitlement-bank/list": {
      "post": {
        "operationId": "source_post__v1_entitlement_bank_list",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "items": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/EntitlementBank"
                      }
                    },
                    "count": {
                      "type": "integer"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid request fields or owner/program/unit combination."
          },
          "401": {
            "description": "Authentication required or invalid session."
          },
          "403": {
            "description": "Access-card permission or company scope denied."
          },
          "404": {
            "description": "Entitlement bank or referenced entity not found."
          },
          "409": {
            "description": "Version or idempotency conflict."
          },
          "422": {
            "description": "Insufficient balance, inactive entitlement or missing access assignment."
          },
          "500": {
            "description": "Entitlement processing failed."
          }
        },
        "summary": "List entitlement banks",
        "tags": [
          "Entitlement Banks"
        ],
        "description": "### Required permissions\n\n- `can_view_access_cards`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequires can_view_access_cards. JSON body fields take precedence over query parameters. Company scope is checked for bank operations.",
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "status": {
                    "type": "string"
                  },
                  "owner_type": {
                    "type": "string",
                    "enum": [
                      "customer",
                      "supplier",
                      "user",
                      "internal"
                    ]
                  },
                  "limit": {
                    "type": "integer",
                    "default": 100,
                    "description": "Clamped to 1-250."
                  }
                }
              },
              "example": {
                "limit": 25
              }
            }
          }
        },
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_access_cards"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_access_cards`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_access_cards`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/entitlement-bank/owner-options": {
      "post": {
        "operationId": "source_post__v1_entitlement_bank_owner_options",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "items": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": true
                      }
                    },
                    "units": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": true
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid request fields or owner/program/unit combination."
          },
          "401": {
            "description": "Authentication required or invalid session."
          },
          "403": {
            "description": "Access-card permission or company scope denied."
          },
          "404": {
            "description": "Entitlement bank or referenced entity not found."
          },
          "409": {
            "description": "Version or idempotency conflict."
          },
          "422": {
            "description": "Insufficient balance, inactive entitlement or missing access assignment."
          },
          "500": {
            "description": "Entitlement processing failed."
          }
        },
        "summary": "List entitlement owners and active units",
        "tags": [
          "Entitlement Banks"
        ],
        "description": "### Required permissions\n\n- `can_view_access_cards`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequires can_view_access_cards. Returns customer, supplier, user and internal-owner options and active product units. No body fields are required.",
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {}
              }
            }
          }
        },
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_access_cards"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_access_cards`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_access_cards`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/entry": {
      "post": {
        "operationId": "getEntry",
        "summary": "Retrieve a parking entry",
        "tags": [
          "Entries & Exits"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "id"
                ],
                "properties": {
                  "id": {
                    "type": "integer",
                    "description": "The entry UUID"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "entry": {
                      "$ref": "#/components/schemas/Entry"
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_view_entries`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nFetches a single parking entry/exit record by ID. Includes vehicle info, timestamps, zone, and payment status.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_entries"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_entries`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_entries`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "patch": {
        "operationId": "updateEntry",
        "summary": "Update a parking entry",
        "tags": [
          "Entries & Exits"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "access_card_id",
                  "device_id"
                ],
                "properties": {
                  "access_card_id": {
                    "type": "integer"
                  },
                  "device_id": {
                    "type": "integer"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "entry": {
                      "$ref": "#/components/schemas/Entry"
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_edit_entries`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nModifies an existing parking entry (e.g. to correct license plate, adjust timestamps, or mark as paid).",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_entries"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_entries`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_entries`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "put": {
        "operationId": "createEntry",
        "summary": "Create a manual parking entry",
        "tags": [
          "Entries & Exits"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "access_card_id",
                  "device_id"
                ],
                "properties": {
                  "access_card_id": {
                    "type": "integer"
                  },
                  "device_id": {
                    "type": "integer"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "entry": {
                      "$ref": "#/components/schemas/Entry"
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_add_entries`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nManually inserts a parking entry record. Used for offline entries or corrections.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_add_entries"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_add_entries`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_add_entries`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/entry/excel": {
      "post": {
        "operationId": "exportEntryExcel",
        "summary": "Download entries as Excel",
        "tags": [
          "Entries & Exits"
        ],
        "responses": {
          "200": {
            "description": "Excel file",
            "content": {
              "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_view_entries`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nGenerates an .xlsx spreadsheet of parking entries matching the filter criteria.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_entries"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_entries`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_entries`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/entry/list": {
      "post": {
        "operationId": "listEntries",
        "summary": "List parking entries",
        "tags": [
          "Entries & Exits"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "page": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "page_limit": {
                    "type": "integer"
                  },
                  "search": {
                    "type": "string"
                  },
                  "business_ids": {
                    "type": "array",
                    "items": {
                      "type": "integer"
                    }
                  },
                  "device_ids": {
                    "type": "array",
                    "items": {
                      "type": "integer"
                    }
                  },
                  "customer_ids": {
                    "type": "array",
                    "items": {
                      "type": "integer"
                    }
                  },
                  "user_ids": {
                    "type": "array",
                    "items": {
                      "type": "integer"
                    }
                  },
                  "access_card_id": {
                    "type": "integer"
                  },
                  "tag_ids": {
                    "type": "array",
                    "items": {
                      "type": "integer"
                    }
                  },
                  "zone_ids": {
                    "type": "array",
                    "items": {
                      "type": "integer"
                    }
                  },
                  "types": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "transaction_amount_min": {
                    "type": "number"
                  },
                  "transaction_amount_max": {
                    "type": "number"
                  },
                  "start_date": {
                    "type": "string"
                  },
                  "end_date": {
                    "type": "string"
                  },
                  "payment_status": {
                    "type": "integer"
                  },
                  "with_exit": {
                    "type": "boolean"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "count": {
                      "type": "integer"
                    },
                    "entries": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Entry"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_view_entries`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns a paginated list of parking entry/exit records. Supports filtering by date range, zone, device, and license plate.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_entries"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_entries`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_entries`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/entry/report": {
      "post": {
        "operationId": "listEntriesReport",
        "summary": "Get entries for report view",
        "tags": [
          "Entries & Exits"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "page": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "page_limit": {
                    "type": "integer"
                  },
                  "search": {
                    "type": "string"
                  },
                  "start_date": {
                    "type": "string"
                  },
                  "end_date": {
                    "type": "string"
                  },
                  "business_ids": {
                    "type": "array",
                    "items": {
                      "type": "integer"
                    }
                  },
                  "device_ids": {
                    "type": "array",
                    "items": {
                      "type": "integer"
                    }
                  },
                  "customer_ids": {
                    "type": "array",
                    "items": {
                      "type": "integer"
                    }
                  },
                  "user_ids": {
                    "type": "array",
                    "items": {
                      "type": "integer"
                    }
                  },
                  "access_card_id": {
                    "type": "integer"
                  },
                  "tag_ids": {
                    "type": "array",
                    "items": {
                      "type": "integer"
                    }
                  },
                  "zone_ids": {
                    "type": "array",
                    "items": {
                      "type": "integer"
                    }
                  },
                  "types": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "transaction_amount_min": {
                    "type": "number"
                  },
                  "transaction_amount_max": {
                    "type": "number"
                  },
                  "payment_status": {
                    "type": "integer"
                  },
                  "with_exit": {
                    "type": "boolean"
                  },
                  "average_per_day": {
                    "type": "boolean"
                  },
                  "average_per_week": {
                    "type": "boolean"
                  },
                  "average_per_month": {
                    "type": "boolean"
                  },
                  "type": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "count": {
                      "type": "integer"
                    },
                    "entries": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Entry"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_view_entries`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns parking entries aggregated for dashboard reporting with summary statistics.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_entries"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_entries`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_entries`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/entry/reportExcel": {
      "post": {
        "operationId": "exportEntryReportExcel",
        "summary": "Download entry report as Excel",
        "tags": [
          "Entries & Exits"
        ],
        "responses": {
          "200": {
            "description": "Excel file",
            "content": {
              "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_view_entries`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nGenerates a formatted Excel report of parking entries with summary rows.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_entries"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_entries`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_entries`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/entry/snow": {
      "post": {
        "operationId": "getSnowEntry",
        "summary": "Retrieve one snow entry with measurement evidence",
        "tags": [
          "Entries & Exits"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "id"
                ],
                "properties": {
                  "id": {
                    "oneOf": [
                      {
                        "type": "integer",
                        "format": "int64",
                        "minimum": 1
                      },
                      {
                        "type": "string",
                        "pattern": "^[1-9][0-9]*$"
                      }
                    ]
                  },
                  "include_deleted": {
                    "type": "boolean"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful snow-entry response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "success",
                    "entry"
                  ],
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "entry": {
                      "$ref": "#/components/schemas/SnowEntry"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid snow-entry request or business transition"
          },
          "401": {
            "description": "Authentication required or invalid session"
          },
          "403": {
            "description": "Entry permission or company scope denied"
          },
          "404": {
            "description": "Snow entry not found"
          },
          "409": {
            "description": "Entry version or bulk revalidation conflict"
          },
          "500": {
            "description": "Snow-entry processing failed"
          }
        },
        "x-content-type-header-enforced": false,
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_entries"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_entries`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_entries`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        },
        "description": "### Required permissions\n\n- `can_view_entries`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version."
      },
      "patch": {
        "operationId": "patchSnowEntry",
        "summary": "Correct, soft-delete, or restore a versioned snow entry",
        "tags": [
          "Entries & Exits"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "object",
                    "additionalProperties": false,
                    "required": [
                      "id",
                      "reason",
                      "changes"
                    ],
                    "properties": {
                      "id": {
                        "oneOf": [
                          {
                            "type": "integer",
                            "format": "int64",
                            "minimum": 1
                          },
                          {
                            "type": "string",
                            "pattern": "^[1-9][0-9]*$"
                          }
                        ]
                      },
                      "version": {
                        "oneOf": [
                          {
                            "type": "integer",
                            "format": "int64",
                            "minimum": 1
                          },
                          {
                            "type": "string",
                            "pattern": "^[1-9][0-9]*$"
                          }
                        ]
                      },
                      "reason": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 2000
                      },
                      "correlation_id": {
                        "type": "string",
                        "format": "uuid"
                      },
                      "action": {
                        "type": "string",
                        "enum": [
                          "patch"
                        ]
                      },
                      "changes": {
                        "$ref": "#/components/schemas/SnowEntryPatchChanges"
                      }
                    }
                  },
                  {
                    "type": "object",
                    "additionalProperties": false,
                    "required": [
                      "id",
                      "reason",
                      "action"
                    ],
                    "properties": {
                      "id": {
                        "oneOf": [
                          {
                            "type": "integer",
                            "format": "int64",
                            "minimum": 1
                          },
                          {
                            "type": "string",
                            "pattern": "^[1-9][0-9]*$"
                          }
                        ]
                      },
                      "version": {
                        "oneOf": [
                          {
                            "type": "integer",
                            "format": "int64",
                            "minimum": 1
                          },
                          {
                            "type": "string",
                            "pattern": "^[1-9][0-9]*$"
                          }
                        ]
                      },
                      "reason": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 2000
                      },
                      "correlation_id": {
                        "type": "string",
                        "format": "uuid"
                      },
                      "action": {
                        "type": "string",
                        "enum": [
                          "delete"
                        ]
                      }
                    }
                  },
                  {
                    "type": "object",
                    "additionalProperties": false,
                    "required": [
                      "id",
                      "reason",
                      "action"
                    ],
                    "properties": {
                      "id": {
                        "oneOf": [
                          {
                            "type": "integer",
                            "format": "int64",
                            "minimum": 1
                          },
                          {
                            "type": "string",
                            "pattern": "^[1-9][0-9]*$"
                          }
                        ]
                      },
                      "version": {
                        "oneOf": [
                          {
                            "type": "integer",
                            "format": "int64",
                            "minimum": 1
                          },
                          {
                            "type": "string",
                            "pattern": "^[1-9][0-9]*$"
                          }
                        ]
                      },
                      "reason": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 2000
                      },
                      "correlation_id": {
                        "type": "string",
                        "format": "uuid"
                      },
                      "action": {
                        "type": "string",
                        "enum": [
                          "restore"
                        ]
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful snow-entry response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "success",
                    "entry"
                  ],
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "entry": {
                      "$ref": "#/components/schemas/SnowEntry"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid snow-entry request or business transition"
          },
          "401": {
            "description": "Authentication required or invalid session"
          },
          "403": {
            "description": "Entry permission or company scope denied"
          },
          "404": {
            "description": "Snow entry not found"
          },
          "409": {
            "description": "Entry version or bulk revalidation conflict"
          },
          "500": {
            "description": "Snow-entry processing failed"
          }
        },
        "parameters": [
          {
            "name": "If-Match",
            "in": "header",
            "required": false,
            "description": "Supplies the optimistic version when body.version is omitted. When body.version is present it takes precedence; the deployed handler does not compare both values.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "x-required-one-of": [
          {
            "in": "header",
            "name": "If-Match"
          },
          {
            "in": "body",
            "name": "version"
          }
        ],
        "x-content-type-header-enforced": false,
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_entries"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_entries`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_entries`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        },
        "description": "### Required permissions\n\n- `can_edit_entries`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version."
      }
    },
    "/v1/entry/snow/bulk-commit": {
      "post": {
        "operationId": "commitSnowEntryBulk",
        "summary": "Atomically commit a validated snow-entry batch",
        "tags": [
          "Entries & Exits"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "operations",
                  "preview_hash"
                ],
                "properties": {
                  "operations": {
                    "type": "array",
                    "minItems": 1,
                    "maxItems": 100,
                    "items": {
                      "oneOf": [
                        {
                          "type": "object",
                          "additionalProperties": false,
                          "required": [
                            "id",
                            "version",
                            "reason",
                            "changes"
                          ],
                          "properties": {
                            "id": {
                              "oneOf": [
                                {
                                  "type": "integer",
                                  "format": "int64",
                                  "minimum": 1
                                },
                                {
                                  "type": "string",
                                  "pattern": "^[1-9][0-9]*$"
                                }
                              ]
                            },
                            "version": {
                              "oneOf": [
                                {
                                  "type": "integer",
                                  "format": "int64",
                                  "minimum": 1
                                },
                                {
                                  "type": "string",
                                  "pattern": "^[1-9][0-9]*$"
                                }
                              ]
                            },
                            "reason": {
                              "type": "string",
                              "minLength": 1,
                              "maxLength": 2000
                            },
                            "correlation_id": {
                              "type": "string",
                              "format": "uuid"
                            },
                            "action": {
                              "type": "string",
                              "enum": [
                                "patch"
                              ]
                            },
                            "changes": {
                              "$ref": "#/components/schemas/SnowEntryPatchChanges"
                            }
                          }
                        },
                        {
                          "type": "object",
                          "additionalProperties": false,
                          "required": [
                            "id",
                            "version",
                            "reason",
                            "action"
                          ],
                          "properties": {
                            "id": {
                              "oneOf": [
                                {
                                  "type": "integer",
                                  "format": "int64",
                                  "minimum": 1
                                },
                                {
                                  "type": "string",
                                  "pattern": "^[1-9][0-9]*$"
                                }
                              ]
                            },
                            "version": {
                              "oneOf": [
                                {
                                  "type": "integer",
                                  "format": "int64",
                                  "minimum": 1
                                },
                                {
                                  "type": "string",
                                  "pattern": "^[1-9][0-9]*$"
                                }
                              ]
                            },
                            "reason": {
                              "type": "string",
                              "minLength": 1,
                              "maxLength": 2000
                            },
                            "correlation_id": {
                              "type": "string",
                              "format": "uuid"
                            },
                            "action": {
                              "type": "string",
                              "enum": [
                                "delete"
                              ]
                            }
                          }
                        },
                        {
                          "type": "object",
                          "additionalProperties": false,
                          "required": [
                            "id",
                            "version",
                            "reason",
                            "action"
                          ],
                          "properties": {
                            "id": {
                              "oneOf": [
                                {
                                  "type": "integer",
                                  "format": "int64",
                                  "minimum": 1
                                },
                                {
                                  "type": "string",
                                  "pattern": "^[1-9][0-9]*$"
                                }
                              ]
                            },
                            "version": {
                              "oneOf": [
                                {
                                  "type": "integer",
                                  "format": "int64",
                                  "minimum": 1
                                },
                                {
                                  "type": "string",
                                  "pattern": "^[1-9][0-9]*$"
                                }
                              ]
                            },
                            "reason": {
                              "type": "string",
                              "minLength": 1,
                              "maxLength": 2000
                            },
                            "correlation_id": {
                              "type": "string",
                              "format": "uuid"
                            },
                            "action": {
                              "type": "string",
                              "enum": [
                                "restore"
                              ]
                            }
                          }
                        }
                      ]
                    }
                  },
                  "preview_hash": {
                    "type": "string",
                    "pattern": "^[0-9a-f]{64}$"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Bulk commit or revalidation result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "success",
                    "preview_hash",
                    "items"
                  ],
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "valid": {
                      "type": "boolean"
                    },
                    "committed": {
                      "type": "boolean"
                    },
                    "error": {
                      "type": "string"
                    },
                    "preview_hash": {
                      "type": "string",
                      "pattern": "^[0-9a-f]{64}$"
                    },
                    "items": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "integer",
                            "format": "int64",
                            "minimum": 0,
                            "nullable": true
                          },
                          "action": {
                            "type": "string",
                            "enum": [
                              "patch",
                              "delete",
                              "restore"
                            ],
                            "nullable": true
                          },
                          "valid": {
                            "type": "boolean"
                          },
                          "success": {
                            "type": "boolean"
                          },
                          "error": {
                            "type": "string",
                            "nullable": true
                          },
                          "current_version": {
                            "type": "string",
                            "pattern": "^[1-9][0-9]*$"
                          },
                          "version": {
                            "type": "string",
                            "pattern": "^[1-9][0-9]*$"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid snow-entry request or business transition"
          },
          "401": {
            "description": "Authentication required or invalid session"
          },
          "403": {
            "description": "Entry permission or company scope denied"
          },
          "404": {
            "description": "Snow entry not found"
          },
          "409": {
            "description": "Entry version or bulk revalidation conflict"
          },
          "500": {
            "description": "Snow-entry processing failed"
          }
        },
        "x-content-type-header-enforced": false,
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_entries"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_entries`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_entries`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        },
        "description": "### Required permissions\n\n- `can_edit_entries`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version."
      }
    },
    "/v1/entry/snow/bulk-preview": {
      "post": {
        "operationId": "previewSnowEntryBulk",
        "summary": "Validate up to 100 versioned snow-entry changes",
        "tags": [
          "Entries & Exits"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "operations"
                ],
                "properties": {
                  "operations": {
                    "type": "array",
                    "minItems": 1,
                    "maxItems": 100,
                    "items": {
                      "oneOf": [
                        {
                          "type": "object",
                          "additionalProperties": false,
                          "required": [
                            "id",
                            "version",
                            "reason",
                            "changes"
                          ],
                          "properties": {
                            "id": {
                              "oneOf": [
                                {
                                  "type": "integer",
                                  "format": "int64",
                                  "minimum": 1
                                },
                                {
                                  "type": "string",
                                  "pattern": "^[1-9][0-9]*$"
                                }
                              ]
                            },
                            "version": {
                              "oneOf": [
                                {
                                  "type": "integer",
                                  "format": "int64",
                                  "minimum": 1
                                },
                                {
                                  "type": "string",
                                  "pattern": "^[1-9][0-9]*$"
                                }
                              ]
                            },
                            "reason": {
                              "type": "string",
                              "minLength": 1,
                              "maxLength": 2000
                            },
                            "correlation_id": {
                              "type": "string",
                              "format": "uuid"
                            },
                            "action": {
                              "type": "string",
                              "enum": [
                                "patch"
                              ]
                            },
                            "changes": {
                              "$ref": "#/components/schemas/SnowEntryPatchChanges"
                            }
                          }
                        },
                        {
                          "type": "object",
                          "additionalProperties": false,
                          "required": [
                            "id",
                            "version",
                            "reason",
                            "action"
                          ],
                          "properties": {
                            "id": {
                              "oneOf": [
                                {
                                  "type": "integer",
                                  "format": "int64",
                                  "minimum": 1
                                },
                                {
                                  "type": "string",
                                  "pattern": "^[1-9][0-9]*$"
                                }
                              ]
                            },
                            "version": {
                              "oneOf": [
                                {
                                  "type": "integer",
                                  "format": "int64",
                                  "minimum": 1
                                },
                                {
                                  "type": "string",
                                  "pattern": "^[1-9][0-9]*$"
                                }
                              ]
                            },
                            "reason": {
                              "type": "string",
                              "minLength": 1,
                              "maxLength": 2000
                            },
                            "correlation_id": {
                              "type": "string",
                              "format": "uuid"
                            },
                            "action": {
                              "type": "string",
                              "enum": [
                                "delete"
                              ]
                            }
                          }
                        },
                        {
                          "type": "object",
                          "additionalProperties": false,
                          "required": [
                            "id",
                            "version",
                            "reason",
                            "action"
                          ],
                          "properties": {
                            "id": {
                              "oneOf": [
                                {
                                  "type": "integer",
                                  "format": "int64",
                                  "minimum": 1
                                },
                                {
                                  "type": "string",
                                  "pattern": "^[1-9][0-9]*$"
                                }
                              ]
                            },
                            "version": {
                              "oneOf": [
                                {
                                  "type": "integer",
                                  "format": "int64",
                                  "minimum": 1
                                },
                                {
                                  "type": "string",
                                  "pattern": "^[1-9][0-9]*$"
                                }
                              ]
                            },
                            "reason": {
                              "type": "string",
                              "minLength": 1,
                              "maxLength": 2000
                            },
                            "correlation_id": {
                              "type": "string",
                              "format": "uuid"
                            },
                            "action": {
                              "type": "string",
                              "enum": [
                                "restore"
                              ]
                            }
                          }
                        }
                      ]
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Bulk validation plan",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "success",
                    "preview_hash",
                    "items"
                  ],
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "valid": {
                      "type": "boolean"
                    },
                    "committed": {
                      "type": "boolean"
                    },
                    "error": {
                      "type": "string"
                    },
                    "preview_hash": {
                      "type": "string",
                      "pattern": "^[0-9a-f]{64}$"
                    },
                    "items": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "integer",
                            "format": "int64",
                            "minimum": 0,
                            "nullable": true
                          },
                          "action": {
                            "type": "string",
                            "enum": [
                              "patch",
                              "delete",
                              "restore"
                            ],
                            "nullable": true
                          },
                          "valid": {
                            "type": "boolean"
                          },
                          "success": {
                            "type": "boolean"
                          },
                          "error": {
                            "type": "string",
                            "nullable": true
                          },
                          "current_version": {
                            "type": "string",
                            "pattern": "^[1-9][0-9]*$"
                          },
                          "version": {
                            "type": "string",
                            "pattern": "^[1-9][0-9]*$"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid snow-entry request or business transition"
          },
          "401": {
            "description": "Authentication required or invalid session"
          },
          "403": {
            "description": "Entry permission or company scope denied"
          },
          "404": {
            "description": "Snow entry not found"
          },
          "409": {
            "description": "Entry version or bulk revalidation conflict"
          },
          "500": {
            "description": "Snow-entry processing failed"
          }
        },
        "x-content-type-header-enforced": false,
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_entries"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_entries`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_entries`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        },
        "description": "### Required permissions\n\n- `can_edit_entries`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version."
      }
    },
    "/v1/entry/snow/delete": {
      "post": {
        "operationId": "deleteSnowEntry",
        "summary": "Soft-delete a versioned snow entry",
        "tags": [
          "Entries & Exits"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "id",
                  "reason"
                ],
                "properties": {
                  "id": {
                    "oneOf": [
                      {
                        "type": "integer",
                        "format": "int64",
                        "minimum": 1
                      },
                      {
                        "type": "string",
                        "pattern": "^[1-9][0-9]*$"
                      }
                    ]
                  },
                  "version": {
                    "oneOf": [
                      {
                        "type": "integer",
                        "format": "int64",
                        "minimum": 1
                      },
                      {
                        "type": "string",
                        "pattern": "^[1-9][0-9]*$"
                      }
                    ]
                  },
                  "reason": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 2000
                  },
                  "correlation_id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "action": {
                    "description": "Ignored on this dedicated route; the route always performs delete."
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful snow-entry response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "success",
                    "entry"
                  ],
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "entry": {
                      "$ref": "#/components/schemas/SnowEntry"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid snow-entry request or business transition"
          },
          "401": {
            "description": "Authentication required or invalid session"
          },
          "403": {
            "description": "Entry permission or company scope denied"
          },
          "404": {
            "description": "Snow entry not found"
          },
          "409": {
            "description": "Entry version or bulk revalidation conflict"
          },
          "500": {
            "description": "Snow-entry processing failed"
          }
        },
        "parameters": [
          {
            "name": "If-Match",
            "in": "header",
            "required": false,
            "description": "Supplies the optimistic version when body.version is omitted. When body.version is present it takes precedence; the deployed handler does not compare both values.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "x-required-one-of": [
          {
            "in": "header",
            "name": "If-Match"
          },
          {
            "in": "body",
            "name": "version"
          }
        ],
        "x-content-type-header-enforced": false,
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_entries"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_entries`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_entries`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        },
        "description": "### Required permissions\n\n- `can_edit_entries`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version."
      }
    },
    "/v1/entry/snow/export": {
      "post": {
        "operationId": "exportSnowEntriesCsv",
        "summary": "Export the filtered snow-entry grid as CSV",
        "tags": [
          "Entries & Exits"
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SnowEntryFilter"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "CSV export, limited to 10,000 rows",
            "content": {
              "text/csv": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "400": {
            "description": "Invalid filter or synchronous export limit exceeded"
          },
          "401": {
            "description": "Authentication required or invalid session"
          },
          "403": {
            "description": "Entry export permission or company scope denied"
          },
          "500": {
            "description": "Snow-entry export failed"
          }
        },
        "x-content-type-header-enforced": false,
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_entries"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_entries`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_entries`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        },
        "description": "### Required permissions\n\n- `can_view_entries`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version."
      }
    },
    "/v1/entry/snow/list": {
      "post": {
        "operationId": "listSnowEntries",
        "summary": "List snow entries with bounded operational filters",
        "tags": [
          "Entries & Exits"
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SnowEntryFilter"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Paged snow entries",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "success",
                    "entries",
                    "count",
                    "next_cursor"
                  ],
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "entries": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/SnowEntry"
                      }
                    },
                    "count": {
                      "type": "integer",
                      "format": "int64"
                    },
                    "next_cursor": {
                      "type": "integer",
                      "format": "int64"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid snow-entry request or business transition"
          },
          "401": {
            "description": "Authentication required or invalid session"
          },
          "403": {
            "description": "Entry permission or company scope denied"
          },
          "404": {
            "description": "Snow entry not found"
          },
          "409": {
            "description": "Entry version or bulk revalidation conflict"
          },
          "500": {
            "description": "Snow-entry processing failed"
          }
        },
        "x-content-type-header-enforced": false,
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_entries"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_entries`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_entries`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        },
        "description": "### Required permissions\n\n- `can_view_entries`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version."
      }
    },
    "/v1/entry/snow/manual": {
      "put": {
        "operationId": "createManualSnowEntry",
        "summary": "Create an audited manual snow entry",
        "tags": [
          "Entries & Exits"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "access_card_id",
                  "enter_device_id",
                  "reason",
                  "snow_context"
                ],
                "properties": {
                  "access_card_id": {
                    "oneOf": [
                      {
                        "type": "integer",
                        "format": "int64",
                        "minimum": 1
                      },
                      {
                        "type": "string",
                        "pattern": "^[1-9][0-9]*$"
                      }
                    ]
                  },
                  "enter_device_id": {
                    "oneOf": [
                      {
                        "type": "integer",
                        "format": "int64",
                        "minimum": 1
                      },
                      {
                        "type": "string",
                        "pattern": "^[1-9][0-9]*$"
                      }
                    ]
                  },
                  "reason": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 2000
                  },
                  "correlation_id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "snow_context": {
                    "$ref": "#/components/schemas/SnowEntryContextInput"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful snow-entry response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "success",
                    "entry"
                  ],
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "entry": {
                      "$ref": "#/components/schemas/SnowEntry"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid snow-entry request or business transition"
          },
          "401": {
            "description": "Authentication required or invalid session"
          },
          "403": {
            "description": "Entry permission or company scope denied"
          },
          "404": {
            "description": "Snow entry not found"
          },
          "409": {
            "description": "Entry version or bulk revalidation conflict"
          },
          "500": {
            "description": "Snow-entry processing failed"
          }
        },
        "x-content-type-header-enforced": false,
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_add_entries"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_add_entries`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_add_entries`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        },
        "description": "### Required permissions\n\n- `can_add_entries`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version."
      }
    },
    "/v1/entry/snow/pricing/commit": {
      "post": {
        "operationId": "commitSnowEntryPricing",
        "summary": "Commit an accepted measured-pricing preview",
        "tags": [
          "Measured Pricing & Snow Billing"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SnowFinanceMeasuredCommitRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful exact snow-finance response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SnowFinanceMeasuredCommitResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request or unavailable pricing inputs"
          },
          "409": {
            "description": "Optimistic version, preview, or idempotency conflict"
          }
        },
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version."
      }
    },
    "/v1/entry/snow/pricing/preview": {
      "post": {
        "operationId": "previewSnowEntryPricing",
        "summary": "Preview exact measured pricing for a snow entry",
        "tags": [
          "Measured Pricing & Snow Billing"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SnowFinanceMeasuredPreviewRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful exact snow-finance response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SnowFinanceMeasuredPreviewResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request or unavailable pricing inputs"
          },
          "409": {
            "description": "Optimistic version, preview, or idempotency conflict"
          }
        },
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version."
      }
    },
    "/v1/entry/snow/restore": {
      "post": {
        "operationId": "restoreSnowEntry",
        "summary": "Restore a soft-deleted snow entry",
        "tags": [
          "Entries & Exits"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "id",
                  "reason"
                ],
                "properties": {
                  "id": {
                    "oneOf": [
                      {
                        "type": "integer",
                        "format": "int64",
                        "minimum": 1
                      },
                      {
                        "type": "string",
                        "pattern": "^[1-9][0-9]*$"
                      }
                    ]
                  },
                  "version": {
                    "oneOf": [
                      {
                        "type": "integer",
                        "format": "int64",
                        "minimum": 1
                      },
                      {
                        "type": "string",
                        "pattern": "^[1-9][0-9]*$"
                      }
                    ]
                  },
                  "reason": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 2000
                  },
                  "correlation_id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "action": {
                    "description": "Ignored on this dedicated route; the route always performs restore."
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful snow-entry response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "success",
                    "entry"
                  ],
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "entry": {
                      "$ref": "#/components/schemas/SnowEntry"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid snow-entry request or business transition"
          },
          "401": {
            "description": "Authentication required or invalid session"
          },
          "403": {
            "description": "Entry permission or company scope denied"
          },
          "404": {
            "description": "Snow entry not found"
          },
          "409": {
            "description": "Entry version or bulk revalidation conflict"
          },
          "500": {
            "description": "Snow-entry processing failed"
          }
        },
        "parameters": [
          {
            "name": "If-Match",
            "in": "header",
            "required": false,
            "description": "Supplies the optimistic version when body.version is omitted. When body.version is present it takes precedence; the deployed handler does not compare both values.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "x-required-one-of": [
          {
            "in": "header",
            "name": "If-Match"
          },
          {
            "in": "body",
            "name": "version"
          }
        ],
        "x-content-type-header-enforced": false,
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_entries"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_entries`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_entries`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        },
        "description": "### Required permissions\n\n- `can_edit_entries`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version."
      }
    },
    "/v1/entry/snow/work-context/preview": {
      "post": {
        "operationId": "previewSnowEntryWorkContext",
        "summary": "Preview deterministic snow-entry work context",
        "tags": [
          "Entries & Exits"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "id"
                ],
                "properties": {
                  "id": {
                    "oneOf": [
                      {
                        "type": "integer",
                        "minimum": 1
                      },
                      {
                        "type": "string",
                        "pattern": "^[1-9][0-9]*$"
                      }
                    ]
                  },
                  "version": {
                    "oneOf": [
                      {
                        "type": "integer",
                        "minimum": 1
                      },
                      {
                        "type": "string",
                        "pattern": "^[1-9][0-9]*$"
                      }
                    ]
                  },
                  "reason": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 1000
                  },
                  "correlation_id": {
                    "type": "string",
                    "format": "uuid"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Deterministic work-context resolution plan",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SnowEntryWorkContextPlan"
                }
              }
            }
          },
          "400": {
            "description": "Invalid or unresolved work context"
          },
          "409": {
            "description": "Entry version or frozen-context conflict"
          }
        },
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_entries"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_entries`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_entries`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        },
        "description": "### Required permissions\n\n- `can_view_entries`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version."
      }
    },
    "/v1/entry/snow/work-context/resolve": {
      "post": {
        "operationId": "resolveSnowEntryWorkContext",
        "summary": "Resolve and freeze snow-entry work context",
        "tags": [
          "Entries & Exits"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "id",
                  "version",
                  "reason"
                ],
                "properties": {
                  "id": {
                    "oneOf": [
                      {
                        "type": "integer",
                        "minimum": 1
                      },
                      {
                        "type": "string",
                        "pattern": "^[1-9][0-9]*$"
                      }
                    ]
                  },
                  "version": {
                    "oneOf": [
                      {
                        "type": "integer",
                        "minimum": 1
                      },
                      {
                        "type": "string",
                        "pattern": "^[1-9][0-9]*$"
                      }
                    ]
                  },
                  "reason": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 1000
                  },
                  "correlation_id": {
                    "type": "string",
                    "format": "uuid"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Deterministic work-context resolution plan",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SnowEntryWorkContextPlan"
                }
              }
            }
          },
          "400": {
            "description": "Invalid or unresolved work context"
          },
          "409": {
            "description": "Entry version or frozen-context conflict"
          }
        },
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_entries"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_entries`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_entries`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        },
        "description": "### Required permissions\n\n- `can_edit_entries`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version."
      }
    },
    "/v1/event": {
      "post": {
        "operationId": "getEvent",
        "summary": "Retrieve a single event",
        "tags": [
          "Events"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "id"
                ],
                "properties": {
                  "id": {
                    "type": "integer",
                    "description": "The event UUID"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "event": {
                      "$ref": "#/components/schemas/Event"
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_view_events`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nFetches an event log entry by ID. Events track system actions like gate opens, alerts, device status changes, etc.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_events"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_events`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_events`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/event/excel": {
      "post": {
        "operationId": "exportEventExcel",
        "summary": "Download events as Excel",
        "tags": [
          "Events"
        ],
        "responses": {
          "200": {
            "description": "Excel file",
            "content": {
              "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_view_events`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nGenerates an .xlsx spreadsheet of events matching the filter criteria.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_events"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_events`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_events`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/event/list": {
      "post": {
        "operationId": "listEvents",
        "summary": "List events",
        "tags": [
          "Events"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "page": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "page_limit": {
                    "type": "integer"
                  },
                  "search": {
                    "type": "string"
                  },
                  "user_ids": {
                    "type": "array",
                    "items": {
                      "type": "integer"
                    }
                  },
                  "customer_ids": {
                    "type": "array",
                    "items": {
                      "type": "integer"
                    }
                  },
                  "device_ids": {
                    "type": "array",
                    "items": {
                      "type": "integer"
                    }
                  },
                  "zone_ids": {
                    "type": "array",
                    "items": {
                      "type": "integer"
                    }
                  },
                  "tag_ids": {
                    "type": "array",
                    "items": {
                      "type": "integer"
                    }
                  },
                  "business_ids": {
                    "type": "array",
                    "items": {
                      "type": "integer"
                    }
                  },
                  "access_card_ids": {
                    "type": "array",
                    "items": {
                      "type": "integer"
                    }
                  },
                  "access_card_id": {
                    "type": "integer"
                  },
                  "start_date": {
                    "type": "string"
                  },
                  "end_date": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "count": {
                      "type": "integer"
                    },
                    "events": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Event"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_view_events`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns a paginated list of event log entries. Supports filtering by type, device, date range, and severity.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_events"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_events`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_events`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/event/operations/list": {
      "post": {
        "operationId": "post_v1_event_operations_list",
        "summary": "List operational events",
        "tags": [
          "Events"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_events`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns only customer-facing access, entry, exit, payment, intercom, and denied/granted activity. Telemetry and CRUD audit records are excluded server-side.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_events"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_events`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_events`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/history/entity": {
      "post": {
        "operationId": "post_v1_history_entity",
        "summary": "List history for one entity",
        "tags": [
          "Audit & History"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns every recorded change for a single entity_type/entity_id pair.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/history/entity-types": {
      "post": {
        "operationId": "post_v1_history_entity-types",
        "summary": "List audited entity types",
        "tags": [
          "Audit & History"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns entity types currently present in the audit trail.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/history/list": {
      "post": {
        "operationId": "post_v1_history_list",
        "summary": "List entity history entries",
        "tags": [
          "Audit & History"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns reusable audit history with field-level diffs, actor, source route, and timestamps.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/holidays": {
      "post": {
        "operationId": "getHoliday",
        "summary": "Retrieve a holiday",
        "tags": [
          "Holidays"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "id"
                ],
                "properties": {
                  "id": {
                    "type": "integer",
                    "description": "The holiday UUID"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "holiday": {
                      "$ref": "#/components/schemas/Holiday"
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nFetches a single holiday entry by ID, including date, name, and affected pricing rules.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "put": {
        "operationId": "createHoliday",
        "summary": "Create a holiday",
        "tags": [
          "Holidays"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "name",
                  "rule_type",
                  "rule_expression"
                ],
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "rule_type": {
                    "type": "string"
                  },
                  "rule_expression": {
                    "type": "string"
                  },
                  "move_to_monday": {
                    "type": "boolean"
                  },
                  "status": {
                    "type": "boolean"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "holiday": {
                      "$ref": "#/components/schemas/Holiday"
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nCreates a new holiday entry that can override normal pricing schedules.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "patch": {
        "operationId": "updateHoliday",
        "summary": "Update a holiday",
        "tags": [
          "Holidays"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "id"
                ],
                "properties": {
                  "id": {
                    "type": "integer",
                    "description": "The holiday UUID to update"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "holiday": {
                      "$ref": "#/components/schemas/Holiday"
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nModifies an existing holiday's date, name, or associated pricing overrides.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "delete": {
        "operationId": "deleteHoliday",
        "summary": "Delete a holiday",
        "tags": [
          "Holidays"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "id"
                ],
                "properties": {
                  "id": {
                    "type": "integer",
                    "description": "The holiday UUID to delete"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessResponse"
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nPermanently deletes a holiday entry.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/holidays/filters": {
      "post": {
        "operationId": "getHolidayFilters",
        "summary": "Get holiday filter options",
        "tags": [
          "Holidays"
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "count": {
                      "type": "integer"
                    },
                    "holidays": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/FilterItem"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns a list of holidays formatted for use in dropdown/filter UI components.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/holidays/list": {
      "post": {
        "operationId": "listHolidays",
        "summary": "List holidays",
        "tags": [
          "Holidays"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "page": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "limit": {
                    "type": "integer",
                    "description": "Number of items per page"
                  },
                  "search": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "count": {
                      "type": "integer"
                    },
                    "holidays": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Holiday"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns a paginated list of all holidays.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/incident/command": {
      "post": {
        "operationId": "post_v1_incident_command",
        "summary": "Execute an incident command",
        "tags": [
          "Incidents"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nCreates or changes an incident with permission checks, optimistic\nconcurrency, idempotency, and append-only auditing.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/incidents/query": {
      "post": {
        "operationId": "post_v1_incidents_query",
        "summary": "Query incidents",
        "tags": [
          "Incidents"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_incidents`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns the filtered incident queue, KPI summary, facets, and\na stable priority cursor from one optimized database read model.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_incidents"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_incidents`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_incidents`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/incidents/{id}/evidence": {
      "put": {
        "operationId": "put_v1_incidents_{id}_evidence",
        "summary": "Upload incident evidence",
        "tags": [
          "Incidents"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_manage_incident_evidence`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nStores verified evidence bytes in S3 and audited metadata in PostgreSQL.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9]+$"
            }
          }
        ],
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_manage_incident_evidence"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_manage_incident_evidence`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_manage_incident_evidence`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/incidents/{id}/evidence/{param}/access": {
      "post": {
        "operationId": "post_v1_incidents_{id}_evidence_{param}_access",
        "summary": "Create incident evidence access grant",
        "tags": [
          "Incidents"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_manage_incident_evidence`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns a short-lived signed S3 URL after permission, state, and retention checks.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9]+$"
            }
          },
          {
            "name": "param",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9]+$"
            }
          }
        ],
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_manage_incident_evidence"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_manage_incident_evidence`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_manage_incident_evidence`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/incidents/{id}/workspace": {
      "post": {
        "operationId": "post_v1_incidents_{id}_workspace",
        "summary": "Retrieve an incident workspace tab",
        "tags": [
          "Incidents"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_incidents`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns the stable incident header plus only the selected inspector tab.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9]+$"
            }
          }
        ],
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_incidents"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_incidents`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_incidents`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/mcp": {
      "post": {
        "operationId": "post_v1_mcp",
        "summary": "MCP JSON-RPC endpoint",
        "tags": [
          "MCP & OAuth"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nExposes Lexoh route-backed AI tools through MCP-style JSON-RPC. Authenticated by SessionID; all route permissions use the chatter user.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "get": {
        "operationId": "get_v1_mcp",
        "summary": "Mcp Sse",
        "tags": [
          "MCP & OAuth"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version."
      }
    },
    "/v1/mcp/sse": {
      "get": {
        "operationId": "get_v1_mcp_sse",
        "summary": "MCP SSE transport handshake",
        "tags": [
          "MCP & OAuth"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nGET endpoint for MCP 2024-11-05 SSE transport. Returns an \"endpoint\" event pointing to POST /v1/mcp for MCP clients (Groq Compound, Claude Desktop).",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/network-agent": {
      "post": {
        "operationId": "post_v1_network-agent",
        "summary": "Retrieve a MikroTik network agent",
        "tags": [
          "Network Agents"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_devices`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns the latest complete state, telemetry, interfaces, WAN and topology snapshots.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_devices"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_devices`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_devices`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/network-agent/command": {
      "post": {
        "operationId": "post_v1_network-agent_command",
        "summary": "Send a safe compiled network-agent command",
        "tags": [
          "Network Agents"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_control_devices`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nSends an allowlisted protocol-v1 query, diagnostic, interface or PoE command.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_control_devices"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_control_devices`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_control_devices`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/network-agent/commands": {
      "post": {
        "operationId": "post_v1_network-agent_commands",
        "summary": "Retrieve network-agent command history",
        "tags": [
          "Network Agents"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_devices`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns pending, completed, failed and expired commands and correlated results.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_devices"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_devices`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_devices`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/network-agent/events": {
      "post": {
        "operationId": "post_v1_network-agent_events",
        "summary": "Retrieve network-agent events",
        "tags": [
          "Network Agents"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_devices`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns link, PoE, WAN and RouterOS connectivity events emitted by the agent.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_devices"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_devices`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_devices`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/network-agent/list": {
      "post": {
        "operationId": "post_v1_network-agent_list",
        "summary": "List MikroTik network agents",
        "tags": [
          "Network Agents"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_devices`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns paginated agent summaries for connectivity dashboards.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_devices"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_devices`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_devices`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/network-agent/telemetry/history": {
      "post": {
        "operationId": "post_v1_network-agent_telemetry_history",
        "summary": "Retrieve network-agent telemetry history",
        "tags": [
          "Network Agents"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_devices`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns compact CPU, memory, temperature, traffic, WAN latency/loss and port-health samples.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_devices"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_devices`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_devices`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/payment/processor": {
      "post": {
        "operationId": "post_v1_payment_processor",
        "summary": "Retrieve Payment Processor",
        "tags": [
          "Payment Processors"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_edit_general_configs`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_general_configs"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_general_configs`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_general_configs`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "put": {
        "operationId": "put_v1_payment_processor",
        "summary": "Insert Payment Processor",
        "tags": [
          "Payment Processors"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_edit_general_configs`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_general_configs"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_general_configs`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_general_configs`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "patch": {
        "operationId": "patch_v1_payment_processor",
        "summary": "Update Payment Processor",
        "tags": [
          "Payment Processors"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_edit_general_configs`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_general_configs"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_general_configs`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_general_configs`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "delete": {
        "operationId": "delete_v1_payment_processor",
        "summary": "Delete Payment Processor",
        "tags": [
          "Payment Processors"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_edit_general_configs`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_general_configs"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_general_configs`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_general_configs`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/payment/processor/available": {
      "post": {
        "operationId": "post_v1_payment_processor_available",
        "summary": "Retrieve Available Payment Processors",
        "tags": [
          "Payment Processors"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/payment/processor/list": {
      "post": {
        "operationId": "post_v1_payment_processor_list",
        "summary": "Retrieve Payment Processors",
        "tags": [
          "Payment Processors"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_edit_general_configs`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_general_configs"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_general_configs`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_general_configs`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/payroll/banks": {
      "put": {
        "operationId": "put_v1_payroll_banks",
        "summary": "Insert Bank Of Hours",
        "tags": [
          "Payroll"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_add_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_add_transactions"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_add_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_add_transactions`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "patch": {
        "operationId": "patch_v1_payroll_banks",
        "summary": "Update Bank Of Hours",
        "tags": [
          "Payroll"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_edit_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_transactions"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_transactions`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/payroll/banks/history": {
      "put": {
        "operationId": "put_v1_payroll_banks_history",
        "summary": "Insert Bank Of Hour History",
        "tags": [
          "Payroll"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_edit_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_transactions"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_transactions`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/payroll/banks/history/list": {
      "post": {
        "operationId": "post_v1_payroll_banks_history_list",
        "summary": "Retrieve Bank Of Hour History",
        "tags": [
          "Payroll"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_transactions"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_transactions`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/payroll/banks/list": {
      "post": {
        "operationId": "post_v1_payroll_banks_list",
        "summary": "Retrieve Banks Of Hours",
        "tags": [
          "Payroll"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_transactions"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_transactions`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/payroll/employee": {
      "post": {
        "operationId": "post_v1_payroll_employee",
        "summary": "Retrieve Employee",
        "tags": [
          "Payroll"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_transactions"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_transactions`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "put": {
        "operationId": "put_v1_payroll_employee",
        "summary": "Insert Employee",
        "tags": [
          "Payroll"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_add_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_add_transactions"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_add_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_add_transactions`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "patch": {
        "operationId": "patch_v1_payroll_employee",
        "summary": "Update Employee",
        "tags": [
          "Payroll"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_edit_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_transactions"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_transactions`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/payroll/employee/category": {
      "post": {
        "operationId": "post_v1_payroll_employee_category",
        "summary": "Retrieve Employee Category",
        "tags": [
          "Payroll"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_payroll_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_payroll_settings"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_payroll_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_payroll_settings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "put": {
        "operationId": "put_v1_payroll_employee_category",
        "summary": "Insert Employee Category",
        "tags": [
          "Payroll"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_edit_payroll_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_payroll_settings"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_payroll_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_payroll_settings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "patch": {
        "operationId": "patch_v1_payroll_employee_category",
        "summary": "Update Employee Category",
        "tags": [
          "Payroll"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_edit_payroll_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_payroll_settings"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_payroll_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_payroll_settings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/payroll/employee/category/item": {
      "put": {
        "operationId": "put_v1_payroll_employee_category_item",
        "summary": "Assign Employee Category Item",
        "tags": [
          "Payroll"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_edit_payroll_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_payroll_settings"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_payroll_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_payroll_settings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "patch": {
        "operationId": "patch_v1_payroll_employee_category_item",
        "summary": "Assign Employee Category Item",
        "tags": [
          "Payroll"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_edit_payroll_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_payroll_settings"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_payroll_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_payroll_settings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "delete": {
        "operationId": "delete_v1_payroll_employee_category_item",
        "summary": "Delete Employee Category Item",
        "tags": [
          "Payroll"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_edit_payroll_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_payroll_settings"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_payroll_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_payroll_settings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/payroll/employee/category/item/list": {
      "post": {
        "operationId": "post_v1_payroll_employee_category_item_list",
        "summary": "Retrieve Employee Category Items",
        "tags": [
          "Payroll"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_payroll_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_payroll_settings"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_payroll_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_payroll_settings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/payroll/employee/category/list": {
      "post": {
        "operationId": "post_v1_payroll_employee_category_list",
        "summary": "Retrieve Employee Categories",
        "tags": [
          "Payroll"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_payroll_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_payroll_settings"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_payroll_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_payroll_settings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/payroll/employee/list": {
      "post": {
        "operationId": "post_v1_payroll_employee_list",
        "summary": "Retrieve Employees",
        "tags": [
          "Payroll"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_transactions"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_transactions`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/payroll/entry": {
      "post": {
        "operationId": "post_v1_payroll_entry",
        "summary": "Retrieve Entry",
        "tags": [
          "Payroll"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_transactions"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_transactions`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "put": {
        "operationId": "put_v1_payroll_entry",
        "summary": "Insert Entry",
        "tags": [
          "Payroll"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_add_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_add_transactions"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_add_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_add_transactions`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "patch": {
        "operationId": "patch_v1_payroll_entry",
        "summary": "Update Entry",
        "tags": [
          "Payroll"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_edit_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_transactions"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_transactions`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/payroll/entry/line": {
      "put": {
        "operationId": "put_v1_payroll_entry_line",
        "summary": "Insert Entry Line",
        "tags": [
          "Payroll"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_add_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_add_transactions"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_add_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_add_transactions`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "patch": {
        "operationId": "patch_v1_payroll_entry_line",
        "summary": "Update Entry Line",
        "tags": [
          "Payroll"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_edit_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_transactions"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_transactions`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/payroll/entry/list": {
      "post": {
        "operationId": "post_v1_payroll_entry_list",
        "summary": "Retrieve Entries",
        "tags": [
          "Payroll"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_transactions"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_transactions`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/payroll/item": {
      "post": {
        "operationId": "post_v1_payroll_item",
        "summary": "Retrieve Item",
        "tags": [
          "Payroll"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_payroll_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_payroll_settings"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_payroll_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_payroll_settings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "put": {
        "operationId": "put_v1_payroll_item",
        "summary": "Insert Item",
        "tags": [
          "Payroll"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_edit_payroll_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_payroll_settings"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_payroll_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_payroll_settings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "patch": {
        "operationId": "patch_v1_payroll_item",
        "summary": "Update Item",
        "tags": [
          "Payroll"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_edit_payroll_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_payroll_settings"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_payroll_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_payroll_settings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/payroll/item/employee": {
      "put": {
        "operationId": "put_v1_payroll_item_employee",
        "summary": "Assign Employee Item",
        "tags": [
          "Payroll"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_edit_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_transactions"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_transactions`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/payroll/item/list": {
      "post": {
        "operationId": "post_v1_payroll_item_list",
        "summary": "Retrieve Items",
        "tags": [
          "Payroll"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_payroll_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_payroll_settings"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_payroll_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_payroll_settings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/payroll/paystub": {
      "post": {
        "operationId": "post_v1_payroll_paystub",
        "summary": "Pay Stub",
        "tags": [
          "Payroll"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_transactions"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_transactions`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/payroll/paystub/pdf": {
      "post": {
        "operationId": "post_v1_payroll_paystub_pdf",
        "summary": "Pay Stub Pdf",
        "tags": [
          "Payroll"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_transactions"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_transactions`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/payroll/remittance/eft/generate": {
      "post": {
        "operationId": "post_v1_payroll_remittance_eft_generate",
        "summary": "Generate Remittance Eft",
        "tags": [
          "Payroll"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_add_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_add_transactions"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_add_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_add_transactions`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/payroll/remittance/eft/preview": {
      "post": {
        "operationId": "post_v1_payroll_remittance_eft_preview",
        "summary": "Remittance Eft Preview",
        "tags": [
          "Payroll"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_transactions"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_transactions`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/payroll/remittance/eft/settings": {
      "post": {
        "operationId": "post_v1_payroll_remittance_eft_settings",
        "summary": "Save Remittance Eft Settings",
        "tags": [
          "Payroll"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_edit_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_transactions"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_transactions`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/payroll/remittance/post": {
      "post": {
        "operationId": "post_v1_payroll_remittance_post",
        "summary": "Post Remittance",
        "tags": [
          "Payroll"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_add_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_add_transactions"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_add_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_add_transactions`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/payroll/remittance/report": {
      "post": {
        "operationId": "post_v1_payroll_remittance_report",
        "summary": "Remittance Report",
        "tags": [
          "Payroll"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_transactions"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_transactions`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/payroll/report": {
      "post": {
        "operationId": "post_v1_payroll_report",
        "summary": "Report",
        "tags": [
          "Payroll"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_transactions"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_transactions`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/payroll/report/excel": {
      "post": {
        "operationId": "post_v1_payroll_report_excel",
        "summary": "Report Excel",
        "tags": [
          "Payroll"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_transactions"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_transactions`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/payroll/report/pdf": {
      "post": {
        "operationId": "post_v1_payroll_report_pdf",
        "summary": "Report Pdf",
        "tags": [
          "Payroll"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_transactions"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_transactions`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/payroll/run": {
      "post": {
        "operationId": "post_v1_payroll_run",
        "summary": "Retrieve Run",
        "tags": [
          "Payroll"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_transactions"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_transactions`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "put": {
        "operationId": "put_v1_payroll_run",
        "summary": "Insert Run",
        "tags": [
          "Payroll"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_add_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_add_transactions"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_add_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_add_transactions`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "patch": {
        "operationId": "patch_v1_payroll_run",
        "summary": "Update Run",
        "tags": [
          "Payroll"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_edit_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_transactions"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_transactions`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/payroll/run/cancel": {
      "post": {
        "operationId": "post_v1_payroll_run_cancel",
        "summary": "Cancel Run",
        "tags": [
          "Payroll"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_add_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_add_transactions"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_add_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_add_transactions`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/payroll/run/complete": {
      "post": {
        "operationId": "post_v1_payroll_run_complete",
        "summary": "Complete Run",
        "tags": [
          "Payroll"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_edit_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_transactions"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_transactions`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/payroll/run/draft": {
      "patch": {
        "operationId": "patch_v1_payroll_run_draft",
        "summary": "Update Draft Run",
        "tags": [
          "Payroll"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_edit_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_transactions"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_transactions`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/payroll/run/eft/generate": {
      "post": {
        "operationId": "post_v1_payroll_run_eft_generate",
        "summary": "Generate Run Eft",
        "tags": [
          "Payroll"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_add_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_add_transactions"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_add_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_add_transactions`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/payroll/run/eft/preview": {
      "post": {
        "operationId": "post_v1_payroll_run_eft_preview",
        "summary": "Run Eft Preview",
        "tags": [
          "Payroll"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_transactions"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_transactions`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/payroll/run/eft/settings": {
      "post": {
        "operationId": "post_v1_payroll_run_eft_settings",
        "summary": "Save Run Eft Settings",
        "tags": [
          "Payroll"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_edit_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_transactions"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_transactions`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/payroll/run/generate": {
      "post": {
        "operationId": "post_v1_payroll_run_generate",
        "summary": "Generate Run",
        "tags": [
          "Payroll"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_add_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_add_transactions"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_add_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_add_transactions`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/payroll/run/list": {
      "post": {
        "operationId": "post_v1_payroll_run_list",
        "summary": "Retrieve Runs",
        "tags": [
          "Payroll"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_transactions"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_transactions`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/payroll/run/post": {
      "post": {
        "operationId": "post_v1_payroll_run_post",
        "summary": "Post Run",
        "tags": [
          "Payroll"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_add_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_add_transactions"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_add_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_add_transactions`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/payroll/run/simulate": {
      "post": {
        "operationId": "post_v1_payroll_run_simulate",
        "summary": "Simulate Run",
        "tags": [
          "Payroll"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_transactions"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_transactions`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/payroll/tax/rates/list": {
      "post": {
        "operationId": "post_v1_payroll_tax_rates_list",
        "summary": "Retrieve Tax Rates",
        "tags": [
          "Payroll"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_payroll_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_payroll_settings"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_payroll_settings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_payroll_settings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/pricing": {
      "post": {
        "operationId": "getPrice",
        "summary": "Retrieve a pricing rule",
        "tags": [
          "Parking Pricing"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "id"
                ],
                "properties": {
                  "id": {
                    "type": "integer",
                    "description": "The pricing rule UUID"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "price": {
                      "$ref": "#/components/schemas/Price"
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_view_pricings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nFetches a single pricing rule by ID, including rate tiers, time ranges, and applicable zones.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_pricings"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_pricings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_pricings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "put": {
        "operationId": "createPrice",
        "summary": "Create a pricing rule",
        "tags": [
          "Parking Pricing"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "name",
                  "description",
                  "color",
                  "type",
                  "days",
                  "hour_min",
                  "hour_max",
                  "date_min",
                  "date_max",
                  "priority",
                  "kw_rate",
                  "lost_ticket_rate",
                  "json_type_infos"
                ],
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "description": {
                    "type": "string"
                  },
                  "status": {
                    "type": "boolean"
                  },
                  "color": {
                    "type": "string"
                  },
                  "taxes_included": {
                    "type": "boolean"
                  },
                  "type": {
                    "type": "integer",
                    "enum": [
                      0,
                      1,
                      2
                    ],
                    "description": "0 = Fixed, 1 = Time of day, 2 = Duration grid"
                  },
                  "days": {
                    "type": "string"
                  },
                  "hour_min": {
                    "type": "string"
                  },
                  "hour_max": {
                    "type": "string"
                  },
                  "date_min": {
                    "type": "string"
                  },
                  "date_max": {
                    "type": "string"
                  },
                  "priority": {
                    "type": "integer"
                  },
                  "zones": {
                    "type": "string"
                  },
                  "tags": {
                    "type": "string"
                  },
                  "user_type": {
                    "type": "string"
                  },
                  "source_types": {
                    "type": "string"
                  },
                  "purchase_types": {
                    "type": "string"
                  },
                  "kw_rate": {
                    "type": "number"
                  },
                  "lost_ticket_rate": {
                    "type": "number"
                  },
                  "json_type_infos": {
                    "type": "object",
                    "description": "Pricing type-specific configuration"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "price": {
                      "$ref": "#/components/schemas/Price"
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_add_pricings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nCreates a new pricing rule with rate tiers, time-of-day ranges, and zone assignments.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_add_pricings"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_add_pricings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_add_pricings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "patch": {
        "operationId": "updatePrice",
        "summary": "Update a pricing rule",
        "tags": [
          "Parking Pricing"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "id"
                ],
                "properties": {
                  "id": {
                    "type": "integer",
                    "description": "The pricing rule UUID to update"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "price": {
                      "$ref": "#/components/schemas/Price"
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_edit_pricings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nModifies an existing pricing rule's rates, schedule, or zone assignments.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_pricings"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_pricings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_pricings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "delete": {
        "operationId": "deletePrice",
        "summary": "Delete a pricing rule",
        "tags": [
          "Parking Pricing"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "id"
                ],
                "properties": {
                  "id": {
                    "type": "integer",
                    "description": "The pricing rule UUID to delete"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessResponse"
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_delete_pricings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nPermanently deletes a pricing rule. Zones using this rule will fall back to default pricing.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_delete_pricings"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_delete_pricings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_delete_pricings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/pricing/calculate": {
      "post": {
        "operationId": "calculatePrice",
        "summary": "Calculate parking price",
        "tags": [
          "Parking Pricing"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "entrance",
                  "exit"
                ],
                "properties": {
                  "zone_id": {
                    "type": "integer",
                    "description": "The zone UUID for pricing lookup"
                  },
                  "access_card_id": {
                    "type": "integer"
                  },
                  "promotion_id": {
                    "type": "integer"
                  },
                  "entrance": {
                    "type": "string"
                  },
                  "exit": {
                    "type": "string"
                  },
                  "watt_consumed": {
                    "type": "number"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Calculated price",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "price": {
                      "type": "number"
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_view_pricings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nCalculates the parking fee based on entry time, exit time, zone, and applicable pricing rules or promotions.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_pricings"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_pricings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_pricings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/pricing/filters": {
      "post": {
        "operationId": "getPriceFilters",
        "summary": "Get pricing filter options",
        "tags": [
          "Parking Pricing"
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "count": {
                      "type": "integer"
                    },
                    "prices": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/FilterItem"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_view_pricings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns a list of pricing rules formatted for use in dropdown/filter UI components.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_pricings"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_pricings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_pricings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/pricing/list": {
      "post": {
        "operationId": "listPrices",
        "summary": "List pricing rules",
        "tags": [
          "Parking Pricing"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "page": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "page_limit": {
                    "type": "integer"
                  },
                  "search": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "count": {
                      "type": "integer"
                    },
                    "prices": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Price"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_view_pricings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns a paginated list of all pricing rules with their rate tiers and zone assignments.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_pricings"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_pricings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_pricings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/product": {
      "post": {
        "operationId": "post_v1_product",
        "summary": "Retrieve a product",
        "tags": [
          "Products & Inventory"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_products`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_products"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_products`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_products`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "put": {
        "operationId": "put_v1_product",
        "summary": "Create a product",
        "tags": [
          "Products & Inventory"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_add_products`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_add_products"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_add_products`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_add_products`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "patch": {
        "operationId": "patch_v1_product",
        "summary": "Update a product",
        "tags": [
          "Products & Inventory"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_edit_products`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_products"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_products`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_products`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "delete": {
        "operationId": "delete_v1_product",
        "summary": "Delete a product",
        "tags": [
          "Products & Inventory"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_delete_products`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_delete_products"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_delete_products`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_delete_products`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/product/category": {
      "post": {
        "operationId": "post_v1_product_category",
        "summary": "Retrieve a product category",
        "tags": [
          "Products & Inventory"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_product_categories`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_product_categories"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_product_categories`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_product_categories`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "put": {
        "operationId": "put_v1_product_category",
        "summary": "Create a product category",
        "tags": [
          "Products & Inventory"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_add_product_categories`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_add_product_categories"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_add_product_categories`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_add_product_categories`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "patch": {
        "operationId": "patch_v1_product_category",
        "summary": "Update a product category",
        "tags": [
          "Products & Inventory"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_edit_product_categories`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_product_categories"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_product_categories`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_product_categories`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/product/category/list": {
      "post": {
        "operationId": "post_v1_product_category_list",
        "summary": "List product categories",
        "tags": [
          "Products & Inventory"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_product_categories`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_product_categories"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_product_categories`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_product_categories`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/product/group": {
      "post": {
        "operationId": "post_v1_product_group",
        "summary": "Retrieve a product group",
        "tags": [
          "Products & Inventory"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_products`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_products"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_products`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_products`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "put": {
        "operationId": "put_v1_product_group",
        "summary": "Create a product group",
        "tags": [
          "Products & Inventory"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_add_products`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_add_products"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_add_products`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_add_products`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "patch": {
        "operationId": "patch_v1_product_group",
        "summary": "Update a product group",
        "tags": [
          "Products & Inventory"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_edit_products`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_products"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_products`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_products`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/product/group/list": {
      "post": {
        "operationId": "post_v1_product_group_list",
        "summary": "List product groups",
        "tags": [
          "Products & Inventory"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_products`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_products"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_products`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_products`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/product/inventory/count-adjustment": {
      "post": {
        "operationId": "post_v1_product_inventory_count-adjustment",
        "summary": "Apply a counted inventory adjustment",
        "tags": [
          "Products & Inventory"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_edit_products`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_products"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_products`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_products`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/product/inventory/location": {
      "post": {
        "operationId": "source_post__v1_product_inventory_location",
        "responses": {
          "default": {
            "description": "Response status and schema are not yet specified for this operation."
          }
        },
        "summary": "Retrieve Inventory Location",
        "tags": [
          "Products & Inventory"
        ],
        "description": "### Required permissions\n\n- `can_view_products`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_products"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_products`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_products`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "put": {
        "operationId": "source_put__v1_product_inventory_location",
        "responses": {
          "default": {
            "description": "Response status and schema are not yet specified for this operation."
          }
        },
        "summary": "Insert Inventory Location",
        "tags": [
          "Products & Inventory"
        ],
        "description": "### Required permissions\n\n- `can_edit_products`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_products"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_products`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_products`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "patch": {
        "operationId": "source_patch__v1_product_inventory_location",
        "responses": {
          "default": {
            "description": "Response status and schema are not yet specified for this operation."
          }
        },
        "summary": "Update Inventory Location",
        "tags": [
          "Products & Inventory"
        ],
        "description": "### Required permissions\n\n- `can_edit_products`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_products"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_products`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_products`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/product/inventory/location/list": {
      "post": {
        "operationId": "source_post__v1_product_inventory_location_list",
        "responses": {
          "default": {
            "description": "Response status and schema are not yet specified for this operation."
          }
        },
        "summary": "Retrieve Inventory Locations",
        "tags": [
          "Products & Inventory"
        ],
        "description": "### Required permissions\n\n- `can_view_products`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_products"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_products`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_products`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/product/inventory/movement": {
      "put": {
        "operationId": "put_v1_product_inventory_movement",
        "summary": "Create an inventory movement",
        "tags": [
          "Products & Inventory"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_edit_products`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_products"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_products`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_products`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/product/inventory/movement/list": {
      "post": {
        "operationId": "post_v1_product_inventory_movement_list",
        "summary": "List inventory movements",
        "tags": [
          "Products & Inventory"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_products`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_products"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_products`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_products`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/product/inventory/reorder/generate": {
      "post": {
        "operationId": "post_v1_product_inventory_reorder_generate",
        "summary": "Generate purchase orders from reorder suggestions",
        "tags": [
          "Products & Inventory"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_edit_pricings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_pricings"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_pricings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_pricings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/product/inventory/report": {
      "post": {
        "operationId": "post_v1_product_inventory_report",
        "summary": "Inventory status or reorder report",
        "tags": [
          "Products & Inventory"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_products`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_products"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_products`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_products`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/product/inventory/report/excel": {
      "post": {
        "operationId": "post_v1_product_inventory_report_excel",
        "summary": "Inventory report as Excel",
        "tags": [
          "Products & Inventory"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_products`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_products"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_products`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_products`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/product/inventory/transfer": {
      "put": {
        "operationId": "source_put__v1_product_inventory_transfer",
        "responses": {
          "default": {
            "description": "Response status and schema are not yet specified for this operation."
          }
        },
        "summary": "Transfer Inventory",
        "tags": [
          "Products & Inventory"
        ],
        "description": "### Required permissions\n\n- `can_edit_products`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_products"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_products`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_products`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/product/kit": {
      "post": {
        "operationId": "post_v1_product_kit",
        "summary": "Retrieve a product kit",
        "tags": [
          "Products & Inventory"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_product_kits`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_product_kits"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_product_kits`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_product_kits`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "put": {
        "operationId": "put_v1_product_kit",
        "summary": "Create a product kit",
        "tags": [
          "Products & Inventory"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_add_product_kits`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_add_product_kits"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_add_product_kits`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_add_product_kits`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "patch": {
        "operationId": "patch_v1_product_kit",
        "summary": "Update a product kit",
        "tags": [
          "Products & Inventory"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_edit_product_kits`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_product_kits"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_product_kits`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_product_kits`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "delete": {
        "operationId": "delete_v1_product_kit",
        "summary": "Delete a product kit",
        "tags": [
          "Products & Inventory"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_delete_product_kits`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_delete_product_kits"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_delete_product_kits`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_delete_product_kits`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/product/kit/list": {
      "post": {
        "operationId": "post_v1_product_kit_list",
        "summary": "List product kits",
        "tags": [
          "Products & Inventory"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_product_kits`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_product_kits"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_product_kits`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_product_kits`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/product/list": {
      "post": {
        "operationId": "post_v1_product_list",
        "summary": "List products",
        "tags": [
          "Products & Inventory"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_products`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_products"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_products`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_products`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/product/measured-price/approve": {
      "post": {
        "operationId": "approveMeasuredSnowPricing",
        "summary": "Approve one immutable measured pricing version",
        "tags": [
          "Measured Pricing & Snow Billing"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SnowFinanceMeasuredTransitionRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful exact snow-finance response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SnowFinanceMeasuredTransitionResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request or unavailable pricing inputs"
          },
          "409": {
            "description": "Optimistic version, preview, or idempotency conflict"
          }
        },
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version."
      }
    },
    "/v1/product/measured-price/draft": {
      "put": {
        "operationId": "saveMeasuredSnowPricingDraft",
        "summary": "Append a draft version of a measured rate, price list or tax",
        "tags": [
          "Measured Pricing & Snow Billing"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SnowFinanceMeasuredSaveDraftRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful exact snow-finance response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SnowFinanceMeasuredSaveDraftResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request or unavailable pricing inputs"
          },
          "409": {
            "description": "Optimistic version, preview, or idempotency conflict"
          }
        },
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version."
      }
    },
    "/v1/product/measured-price/list": {
      "post": {
        "operationId": "listMeasuredSnowPricing",
        "summary": "List versioned measured snow rates, price lists, taxes or catalog options",
        "tags": [
          "Measured Pricing & Snow Billing"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SnowFinanceMeasuredListRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful exact snow-finance response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SnowFinanceMeasuredListResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request or unavailable pricing inputs"
          },
          "409": {
            "description": "Optimistic version, preview, or idempotency conflict"
          }
        },
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version."
      }
    },
    "/v1/product/measured-price/retire": {
      "post": {
        "operationId": "retireMeasuredSnowPricing",
        "summary": "Retire one immutable measured pricing version",
        "tags": [
          "Measured Pricing & Snow Billing"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SnowFinanceMeasuredTransitionRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful exact snow-finance response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SnowFinanceMeasuredTransitionResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request or unavailable pricing inputs"
          },
          "409": {
            "description": "Optimistic version, preview, or idempotency conflict"
          }
        },
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version."
      }
    },
    "/v1/product/measured-price/simulate": {
      "post": {
        "operationId": "simulateMeasuredSnowPricing",
        "summary": "Simulate measured snow pricing without creating or updating an Entry",
        "tags": [
          "Measured Pricing & Snow Billing"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SnowFinanceMeasuredSimulateRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful exact snow-finance response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SnowFinanceMeasuredSimulateResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request or unavailable pricing inputs"
          },
          "409": {
            "description": "Optimistic version, preview, or idempotency conflict"
          }
        },
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version."
      }
    },
    "/v1/product/price": {
      "post": {
        "operationId": "post_v1_product_price",
        "summary": "Retrieve a product price override",
        "tags": [
          "Products & Inventory"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_pricings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_pricings"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_pricings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_pricings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "put": {
        "operationId": "put_v1_product_price",
        "summary": "Create a product price override",
        "tags": [
          "Products & Inventory"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_add_pricings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_add_pricings"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_add_pricings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_add_pricings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "patch": {
        "operationId": "patch_v1_product_price",
        "summary": "Update a product price override",
        "tags": [
          "Products & Inventory"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_edit_pricings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_pricings"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_pricings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_pricings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/product/price-list": {
      "post": {
        "operationId": "post_v1_product_price-list",
        "summary": "Retrieve a product price list",
        "tags": [
          "Products & Inventory"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_pricings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_pricings"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_pricings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_pricings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "put": {
        "operationId": "put_v1_product_price-list",
        "summary": "Create a product price list",
        "tags": [
          "Products & Inventory"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_add_pricings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_add_pricings"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_add_pricings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_add_pricings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "patch": {
        "operationId": "patch_v1_product_price-list",
        "summary": "Update a product price list",
        "tags": [
          "Products & Inventory"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_edit_pricings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_pricings"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_pricings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_pricings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/product/price-list/customer": {
      "put": {
        "operationId": "put_v1_product_price-list_customer",
        "summary": "Assign a product price list to a customer",
        "tags": [
          "Products & Inventory"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_edit_pricings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_pricings"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_pricings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_pricings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/product/price-list/list": {
      "post": {
        "operationId": "post_v1_product_price-list_list",
        "summary": "List product price lists",
        "tags": [
          "Products & Inventory"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_pricings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_pricings"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_pricings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_pricings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/product/price/calculate": {
      "post": {
        "operationId": "post_v1_product_price_calculate",
        "summary": "Calculate product price",
        "tags": [
          "Products & Inventory"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_products`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_products"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_products`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_products`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/product/price/list": {
      "post": {
        "operationId": "post_v1_product_price_list",
        "summary": "List product price overrides",
        "tags": [
          "Products & Inventory"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_pricings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_pricings"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_pricings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_pricings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/product/quantity-price": {
      "put": {
        "operationId": "put_v1_product_quantity-price",
        "summary": "Create a quantity price break",
        "tags": [
          "Products & Inventory"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_add_pricings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_add_pricings"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_add_pricings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_add_pricings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "patch": {
        "operationId": "patch_v1_product_quantity-price",
        "summary": "Update a quantity price break",
        "tags": [
          "Products & Inventory"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_edit_pricings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_pricings"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_pricings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_pricings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/product/quantity-price/list": {
      "post": {
        "operationId": "post_v1_product_quantity-price_list",
        "summary": "List quantity price breaks",
        "tags": [
          "Products & Inventory"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_pricings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_pricings"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_pricings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_pricings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/product/stock": {
      "post": {
        "operationId": "post_v1_product_stock",
        "summary": "Retrieve product stock",
        "tags": [
          "Products & Inventory"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_products`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_products"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_products`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_products`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/product/supplier-price/export": {
      "post": {
        "operationId": "post_v1_product_supplier-price_export",
        "summary": "Export supplier product prices",
        "tags": [
          "Products & Inventory"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_pricings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_pricings"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_pricings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_pricings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/product/supplier-price/export/excel": {
      "post": {
        "operationId": "post_v1_product_supplier-price_export_excel",
        "summary": "Export supplier product prices as Excel",
        "tags": [
          "Products & Inventory"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_pricings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_pricings"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_pricings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_pricings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/product/supplier-price/import": {
      "post": {
        "operationId": "post_v1_product_supplier-price_import",
        "summary": "Import supplier product prices",
        "tags": [
          "Products & Inventory"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_edit_pricings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_pricings"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_pricings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_pricings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/product/supplier-price/list": {
      "post": {
        "operationId": "post_v1_product_supplier-price_list",
        "summary": "List supplier product prices",
        "tags": [
          "Products & Inventory"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_pricings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_pricings"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_pricings`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_pricings`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/product/unit": {
      "post": {
        "operationId": "post_v1_product_unit",
        "summary": "Retrieve a product unit",
        "tags": [
          "Products & Inventory"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_products`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_products"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_products`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_products`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "put": {
        "operationId": "put_v1_product_unit",
        "summary": "Create a product unit",
        "tags": [
          "Products & Inventory"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_add_products`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_add_products"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_add_products`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_add_products`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "patch": {
        "operationId": "patch_v1_product_unit",
        "summary": "Update a product unit",
        "tags": [
          "Products & Inventory"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_edit_products`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_products"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_products`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_products`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/product/unit/list": {
      "post": {
        "operationId": "post_v1_product_unit_list",
        "summary": "List product units",
        "tags": [
          "Products & Inventory"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_products`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_products"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_products`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_products`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/promotions": {
      "post": {
        "operationId": "getPromotion",
        "summary": "Retrieve a promotion",
        "tags": [
          "Promotions & Vouchers"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "id"
                ],
                "properties": {
                  "id": {
                    "type": "integer",
                    "description": "The promotion UUID"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "promotion": {
                      "$ref": "#/components/schemas/Promotion"
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_view_promotions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nFetches a single promotion by ID, including discount type, validity period, and usage limits.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_promotions"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_promotions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_promotions`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "put": {
        "operationId": "createPromotion",
        "summary": "Create a promotion",
        "tags": [
          "Promotions & Vouchers"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "name",
                  "date_start",
                  "date_end",
                  "pricing_id",
                  "threshold_json"
                ],
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "status": {
                    "type": "boolean"
                  },
                  "requires_qr": {
                    "type": "boolean"
                  },
                  "date_start": {
                    "type": "string"
                  },
                  "date_end": {
                    "type": "string"
                  },
                  "pricing_id": {
                    "type": "integer"
                  },
                  "is_voucher": {
                    "type": "boolean"
                  },
                  "voucher_amount": {
                    "type": "number"
                  },
                  "threshold_json": {
                    "type": "object",
                    "description": "Threshold configuration"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "promotion": {
                      "$ref": "#/components/schemas/Promotion"
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_add_promotions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nCreates a new promotion with discount rules, validity dates, and optional usage limits.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_add_promotions"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_add_promotions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_add_promotions`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "patch": {
        "operationId": "updatePromotion",
        "summary": "Update a promotion",
        "tags": [
          "Promotions & Vouchers"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "id"
                ],
                "properties": {
                  "id": {
                    "type": "integer",
                    "description": "The promotion UUID to update"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "promotion": {
                      "$ref": "#/components/schemas/Promotion"
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_edit_promotions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nModifies an existing promotion's discount rules, dates, or usage limits.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_promotions"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_promotions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_promotions`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "delete": {
        "operationId": "deletePromotion",
        "summary": "Delete a promotion",
        "tags": [
          "Promotions & Vouchers"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "id"
                ],
                "properties": {
                  "id": {
                    "type": "integer",
                    "description": "The promotion UUID to delete"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessResponse"
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_delete_promotions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nPermanently deletes a promotion and all its associated codes.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_delete_promotions"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_delete_promotions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_delete_promotions`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/promotions/code": {
      "post": {
        "operationId": "getPromotionCode",
        "summary": "Retrieve a promotion code",
        "tags": [
          "Promotions & Vouchers"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "integer",
                    "description": "The promotion code UUID"
                  },
                  "code": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "promotion_code": {
                      "$ref": "#/components/schemas/PromotionCode"
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_view_promotions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nFetches a single promotion code by ID, including its linked promotion and redemption status.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_promotions"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_promotions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_promotions`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "put": {
        "operationId": "createPromotionCode",
        "summary": "Create a promotion code",
        "tags": [
          "Promotions & Vouchers"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "promotion_id",
                  "code"
                ],
                "properties": {
                  "promotion_id": {
                    "type": "integer"
                  },
                  "code": {
                    "type": "string"
                  },
                  "status": {
                    "type": "boolean"
                  },
                  "unique_usage": {
                    "type": "boolean"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "promotion_code": {
                      "$ref": "#/components/schemas/PromotionCode"
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_add_promotions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nGenerates a new voucher code linked to an existing promotion.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_add_promotions"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_add_promotions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_add_promotions`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "patch": {
        "operationId": "updatePromotionCode",
        "summary": "Update a promotion code",
        "tags": [
          "Promotions & Vouchers"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "id"
                ],
                "properties": {
                  "id": {
                    "type": "integer",
                    "description": "The promotion code UUID to update"
                  },
                  "code": {
                    "type": "string"
                  },
                  "status": {
                    "type": "boolean"
                  },
                  "unique_usage": {
                    "type": "boolean"
                  },
                  "used": {
                    "type": "boolean"
                  },
                  "used_date": {
                    "type": "string"
                  },
                  "used_access_card_id": {
                    "type": "integer"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "promotion_code": {
                      "$ref": "#/components/schemas/PromotionCode"
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_edit_promotions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nModifies an existing promotion code's status or linked promotion.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_promotions"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_promotions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_promotions`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "delete": {
        "operationId": "deletePromotionCode",
        "summary": "Delete a promotion code",
        "tags": [
          "Promotions & Vouchers"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "id"
                ],
                "properties": {
                  "id": {
                    "type": "integer",
                    "description": "The promotion code UUID to delete"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessResponse"
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_delete_promotions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nPermanently deletes a single promotion code.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_delete_promotions"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_delete_promotions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_delete_promotions`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/promotions/code/apply": {
      "post": {
        "operationId": "applyVoucher",
        "summary": "Apply a voucher code",
        "tags": [
          "Promotions & Vouchers"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "entry_id": {
                    "type": "integer"
                  },
                  "code": {
                    "type": "string",
                    "description": "The voucher code string to apply"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessResponse"
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nValidates and redeems a promotion voucher code against a parking transaction.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/promotions/code/list": {
      "post": {
        "operationId": "listPromotionCodes",
        "summary": "List promotion codes",
        "tags": [
          "Promotions & Vouchers"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "page": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "page_limit": {
                    "type": "integer"
                  },
                  "search": {
                    "type": "string"
                  },
                  "promotion_id": {
                    "type": "integer"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "count": {
                      "type": "integer"
                    },
                    "promotion_codes": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PromotionCode"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_view_promotions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns a paginated list of promotion codes with their redemption status.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_promotions"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_promotions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_promotions`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/promotions/device": {
      "post": {
        "operationId": "sendPromotionDevice",
        "summary": "Send promotion to device",
        "tags": [
          "Promotions & Vouchers"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "id"
                ],
                "properties": {
                  "id": {
                    "type": "integer",
                    "description": "The promotion UUID"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessResponse"
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nPushes a promotion display to a kiosk or gate device.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/promotions/email": {
      "post": {
        "operationId": "sendPromotionEmail",
        "summary": "Send promotion via email",
        "tags": [
          "Promotions & Vouchers"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "integer",
                    "description": "The promotion UUID"
                  },
                  "to": {
                    "type": "string"
                  },
                  "name": {
                    "type": "string"
                  },
                  "subject": {
                    "type": "string"
                  },
                  "title": {
                    "type": "string"
                  },
                  "message": {
                    "type": "string"
                  },
                  "zones": {
                    "type": "string"
                  },
                  "locale": {
                    "type": "string"
                  },
                  "outro": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessResponse"
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nSends a promotion message to a customer's email address.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/promotions/filters": {
      "post": {
        "operationId": "getPromotionFilters",
        "summary": "Get promotion filter options",
        "tags": [
          "Promotions & Vouchers"
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "count": {
                      "type": "integer"
                    },
                    "promotions": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/FilterItem"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns a list of promotions formatted for use in dropdown/filter UI components.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/promotions/list": {
      "post": {
        "operationId": "listPromotions",
        "summary": "List promotions",
        "tags": [
          "Promotions & Vouchers"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "page": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "page_limit": {
                    "type": "integer"
                  },
                  "search": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "count": {
                      "type": "integer"
                    },
                    "promotions": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Promotion"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_view_promotions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns a paginated list of promotions with their discount details and active status.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_promotions"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_promotions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_promotions`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/promotions/sms": {
      "post": {
        "operationId": "sendPromotionSms",
        "summary": "Send promotion via SMS",
        "tags": [
          "Promotions & Vouchers"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "id",
                  "to"
                ],
                "properties": {
                  "id": {
                    "type": "integer",
                    "description": "The promotion UUID"
                  },
                  "to": {
                    "type": "string"
                  },
                  "message": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessResponse"
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nSends a promotion message to a customer's phone via SMS.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/public/commercial-document/customer-portal": {
      "post": {
        "operationId": "post_v1_public_commercial-document_customer-portal",
        "summary": "Public customer invoice portal payload",
        "tags": [
          "Customer Portal"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/public/commercial-document/customer-portal/creditcard": {
      "put": {
        "operationId": "put_v1_public_commercial-document_customer-portal_creditcard",
        "summary": "Public customer invoice portal saved credit card create",
        "tags": [
          "Customer Portal"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "patch": {
        "operationId": "patch_v1_public_commercial-document_customer-portal_creditcard",
        "summary": "Public customer invoice portal saved credit card update",
        "tags": [
          "Customer Portal"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "delete": {
        "operationId": "delete_v1_public_commercial-document_customer-portal_creditcard",
        "summary": "Public customer invoice portal saved credit card delete",
        "tags": [
          "Customer Portal"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/public/commercial-document/customer-portal/invoice/pdf": {
      "post": {
        "operationId": "post_v1_public_commercial-document_customer-portal_invoice_pdf",
        "summary": "Public customer invoice portal invoice PDF",
        "tags": [
          "Customer Portal"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/public/commercial-document/customer-portal/pay": {
      "post": {
        "operationId": "post_v1_public_commercial-document_customer-portal_pay",
        "summary": "Public customer invoice portal online card payment",
        "tags": [
          "Customer Portal"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/public/commercial-document/customer-portal/payment/receipt/pdf": {
      "post": {
        "operationId": "post_v1_public_commercial-document_customer-portal_payment_receipt_pdf",
        "summary": "Public customer invoice portal payment receipt PDF",
        "tags": [
          "Customer Portal"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/public/commercial-document/customer-portal/quote/pdf": {
      "post": {
        "operationId": "post_v1_public_commercial-document_customer-portal_quote_pdf",
        "summary": "Public customer invoice portal visible quote PDF",
        "tags": [
          "Customer Portal"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/qrcode": {
      "get": {
        "operationId": "getQrCode",
        "summary": "Generate QR code image",
        "tags": [
          "QR Codes"
        ],
        "responses": {
          "200": {
            "description": "PNG image",
            "content": {
              "image/png": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "The text or URL to encode into the QR code"
          }
        ],
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nGenerates a PNG QR code from the provided text. Returns image/png content type.",
        "security": [],
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/report/generate": {
      "get": {
        "operationId": "generateReportGet",
        "summary": "Generate report (GET)",
        "tags": [
          "Reports & Exports"
        ],
        "responses": {
          "200": {
            "description": "Excel file",
            "content": {
              "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "description": "### Required permissions\n\n- `can_export_reports`\n\nThe following checks depend on the action, filters or requested resource; they are not all required for every request:\n\n- `can_view_guests`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nGenerates a report using query parameters. Supports multiple formats (JSON, PDF, Excel) based on the Accept header.",
        "x-lexoh-permissions": {
          "status": "conditional",
          "required": [
            {
              "permission": "can_export_reports"
            }
          ],
          "conditional": [
            {
              "checked": [
                "can_view_guests"
              ]
            }
          ],
          "description": {
            "en": "- `can_export_reports`\n\nThe following checks depend on the action, filters or requested resource; they are not all required for every request:\n\n- `can_view_guests`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_export_reports`\n\nLes vérifications suivantes dépendent de l’action, des filtres ou de la ressource demandée; elles ne sont pas toutes requises pour chaque requête :\n\n- `can_view_guests`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "post": {
        "operationId": "generateReport",
        "summary": "Generate report (POST)",
        "tags": [
          "Reports & Exports"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "integer"
                  },
                  "search": {
                    "type": "string"
                  },
                  "status": {
                    "type": "integer"
                  },
                  "companies": {
                    "type": "array",
                    "items": {
                      "type": "integer"
                    }
                  },
                  "last_visit_start_date": {
                    "type": "string"
                  },
                  "last_visit_end_date": {
                    "type": "string"
                  },
                  "entry_start_date": {
                    "type": "string"
                  },
                  "entry_end_date": {
                    "type": "string"
                  },
                  "exit_start_date": {
                    "type": "string"
                  },
                  "exit_end_date": {
                    "type": "string"
                  },
                  "validation_start_date": {
                    "type": "string"
                  },
                  "validation_end_date": {
                    "type": "string"
                  },
                  "expiration_start_date": {
                    "type": "string"
                  },
                  "expiration_end_date": {
                    "type": "string"
                  },
                  "access_card_status": {
                    "type": "integer"
                  },
                  "currently_inside": {
                    "type": "integer"
                  },
                  "last_visited_zones": {
                    "type": "array",
                    "items": {
                      "type": "integer"
                    }
                  },
                  "customer_id": {
                    "type": "integer"
                  },
                  "user_id": {
                    "type": "integer"
                  },
                  "parent_access_id": {
                    "type": "integer"
                  },
                  "type": {
                    "type": "string"
                  },
                  "business_ids": {
                    "type": "array",
                    "items": {
                      "type": "integer"
                    }
                  },
                  "device_ids": {
                    "type": "array",
                    "items": {
                      "type": "integer"
                    }
                  },
                  "customer_ids": {
                    "type": "array",
                    "items": {
                      "type": "integer"
                    }
                  },
                  "user_ids": {
                    "type": "array",
                    "items": {
                      "type": "integer"
                    }
                  },
                  "access_card_id": {
                    "type": "integer"
                  },
                  "access_card_ids": {
                    "type": "array",
                    "items": {
                      "type": "integer"
                    }
                  },
                  "tag_ids": {
                    "type": "array",
                    "items": {
                      "type": "integer"
                    }
                  },
                  "zone_ids": {
                    "type": "array",
                    "items": {
                      "type": "integer"
                    }
                  },
                  "types": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "transaction_amount_min": {
                    "type": "number"
                  },
                  "transaction_amount_max": {
                    "type": "number"
                  },
                  "start_date": {
                    "type": "string"
                  },
                  "end_date": {
                    "type": "string"
                  },
                  "payment_status": {
                    "type": "integer"
                  },
                  "with_exit": {
                    "type": "boolean"
                  },
                  "client_ids": {
                    "type": "array",
                    "items": {
                      "type": "integer"
                    }
                  },
                  "card_brands": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "amount_min": {
                    "type": "number"
                  },
                  "amount_max": {
                    "type": "number"
                  },
                  "date_from": {
                    "type": "string"
                  },
                  "date_to": {
                    "type": "string"
                  },
                  "page_limit": {
                    "type": "integer"
                  },
                  "page": {
                    "type": "integer"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Excel file",
            "content": {
              "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_export_reports`\n\nThe following checks depend on the action, filters or requested resource; they are not all required for every request:\n\n- `can_view_guests`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nGenerates a report using JSON body parameters. Supports filtering by date range, zone, and type.",
        "x-lexoh-permissions": {
          "status": "conditional",
          "required": [
            {
              "permission": "can_export_reports"
            }
          ],
          "conditional": [
            {
              "checked": [
                "can_view_guests"
              ]
            }
          ],
          "description": {
            "en": "- `can_export_reports`\n\nThe following checks depend on the action, filters or requested resource; they are not all required for every request:\n\n- `can_view_guests`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_export_reports`\n\nLes vérifications suivantes dépendent de l’action, des filtres ou de la ressource demandée; elles ne sont pas toutes requises pour chaque requête :\n\n- `can_view_guests`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/report/pdf/daily": {
      "post": {
        "operationId": "generateDailyPdf",
        "summary": "Generate daily PDF report",
        "tags": [
          "Reports & Exports"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "date": {
                    "type": "string",
                    "description": "YYYY-MM-DD"
                  },
                  "language": {
                    "type": "string",
                    "default": "en"
                  },
                  "include_cover": {
                    "type": "boolean"
                  },
                  "include_toc": {
                    "type": "boolean"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "PDF file",
            "content": {
              "application/pdf": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\nThe following checks depend on the action, filters or requested resource; they are not all required for every request:\n\n- `can_export_reports`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nGenerates a PDF report summarizing the day's parking activity, entries, exits, and revenue.",
        "x-lexoh-permissions": {
          "status": "conditional",
          "required": [],
          "conditional": [
            {
              "checked": [
                "can_export_reports"
              ]
            }
          ],
          "description": {
            "en": "The following checks depend on the action, filters or requested resource; they are not all required for every request:\n\n- `can_export_reports`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les vérifications suivantes dépendent de l’action, des filtres ou de la ressource demandée; elles ne sont pas toutes requises pour chaque requête :\n\n- `can_export_reports`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/report/pdf/financial": {
      "post": {
        "operationId": "generateFinancialPdf",
        "summary": "Generate financial PDF report",
        "tags": [
          "Reports & Exports"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "start_date": {
                    "type": "string"
                  },
                  "end_date": {
                    "type": "string"
                  },
                  "language": {
                    "type": "string"
                  },
                  "include_cover": {
                    "type": "boolean"
                  },
                  "include_toc": {
                    "type": "boolean"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "PDF file",
            "content": {
              "application/pdf": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\nThe following checks depend on the action, filters or requested resource; they are not all required for every request:\n\n- `can_export_reports`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nGenerates a financial PDF report with revenue breakdown, refunds, and payment method analysis.",
        "x-lexoh-permissions": {
          "status": "conditional",
          "required": [],
          "conditional": [
            {
              "checked": [
                "can_export_reports"
              ]
            }
          ],
          "description": {
            "en": "The following checks depend on the action, filters or requested resource; they are not all required for every request:\n\n- `can_export_reports`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les vérifications suivantes dépendent de l’action, des filtres ou de la ressource demandée; elles ne sont pas toutes requises pour chaque requête :\n\n- `can_export_reports`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/report/pdf/monthly": {
      "post": {
        "operationId": "generateMonthlyPdf",
        "summary": "Generate monthly PDF report",
        "tags": [
          "Reports & Exports"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "month": {
                    "type": "string",
                    "description": "YYYY-MM"
                  },
                  "language": {
                    "type": "string"
                  },
                  "include_cover": {
                    "type": "boolean"
                  },
                  "include_toc": {
                    "type": "boolean"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "PDF file",
            "content": {
              "application/pdf": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\nThe following checks depend on the action, filters or requested resource; they are not all required for every request:\n\n- `can_export_reports`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nGenerates a PDF report with monthly aggregations and year-over-year comparisons.",
        "x-lexoh-permissions": {
          "status": "conditional",
          "required": [],
          "conditional": [
            {
              "checked": [
                "can_export_reports"
              ]
            }
          ],
          "description": {
            "en": "The following checks depend on the action, filters or requested resource; they are not all required for every request:\n\n- `can_export_reports`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les vérifications suivantes dépendent de l’action, des filtres ou de la ressource demandée; elles ne sont pas toutes requises pour chaque requête :\n\n- `can_export_reports`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/report/pdf/weekly": {
      "post": {
        "operationId": "generateWeeklyPdf",
        "summary": "Generate weekly PDF report",
        "tags": [
          "Reports & Exports"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "start_date": {
                    "type": "string",
                    "description": "YYYY-MM-DD (Monday)"
                  },
                  "language": {
                    "type": "string"
                  },
                  "include_cover": {
                    "type": "boolean"
                  },
                  "include_toc": {
                    "type": "boolean"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "PDF file",
            "content": {
              "application/pdf": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\nThe following checks depend on the action, filters or requested resource; they are not all required for every request:\n\n- `can_export_reports`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nGenerates a PDF report with weekly trends and comparisons.",
        "x-lexoh-permissions": {
          "status": "conditional",
          "required": [],
          "conditional": [
            {
              "checked": [
                "can_export_reports"
              ]
            }
          ],
          "description": {
            "en": "The following checks depend on the action, filters or requested resource; they are not all required for every request:\n\n- `can_export_reports`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les vérifications suivantes dépendent de l’action, des filtres ou de la ressource demandée; elles ne sont pas toutes requises pour chaque requête :\n\n- `can_export_reports`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/report/pdf/yearly": {
      "post": {
        "operationId": "generateYearlyPdf",
        "summary": "Generate yearly PDF report",
        "tags": [
          "Reports & Exports"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "year": {
                    "type": "string",
                    "description": "YYYY"
                  },
                  "language": {
                    "type": "string"
                  },
                  "include_cover": {
                    "type": "boolean"
                  },
                  "include_toc": {
                    "type": "boolean"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "PDF file",
            "content": {
              "application/pdf": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\nThe following checks depend on the action, filters or requested resource; they are not all required for every request:\n\n- `can_export_reports`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nGenerates a comprehensive annual PDF report with all key metrics and trends.",
        "x-lexoh-permissions": {
          "status": "conditional",
          "required": [],
          "conditional": [
            {
              "checked": [
                "can_export_reports"
              ]
            }
          ],
          "description": {
            "en": "The following checks depend on the action, filters or requested resource; they are not all required for every request:\n\n- `can_export_reports`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les vérifications suivantes dépendent de l’action, des filtres ou de la ressource demandée; elles ne sont pas toutes requises pour chaque requête :\n\n- `can_export_reports`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/report/snow/catalog": {
      "get": {
        "operationId": "getSnowReportCatalog",
        "summary": "List bounded snow report definitions",
        "tags": [
          "Reports & Exports"
        ],
        "responses": {
          "200": {
            "description": "Snow report catalogue",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "schema": {
                      "type": "string",
                      "enum": [
                        "snow_report_catalog_v1"
                      ]
                    },
                    "pdf_status": {
                      "type": "string",
                      "enum": [
                        "template_required"
                      ]
                    },
                    "reports": {
                      "type": "array",
                      "items": {
                        "type": "object"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_export_reports`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns the reusable snow report catalog and truthful PDF-template readiness.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_export_reports"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_export_reports`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_export_reports`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/report/snow/export/{id}/download": {
      "get": {
        "operationId": "downloadSnowReportExport",
        "summary": "Download a completed durable snow report export",
        "tags": [
          "Reports & Exports"
        ],
        "responses": {
          "200": {
            "description": "Verified JSON, CSV, or XLSX artifact",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              },
              "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "400": {
            "description": "Invalid report key, filter, timestamp, cursor, or request"
          },
          "403": {
            "description": "Company outside the authenticated scope"
          },
          "404": {
            "description": "Export not found"
          },
          "409": {
            "description": "Version, idempotency, terminal-state, or result conflict"
          },
          "410": {
            "description": "Export artifact expired"
          },
          "422": {
            "description": "Reviewed PDF template is not configured"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[1-9][0-9]{0,18}$"
            }
          }
        ],
        "description": "### Required permissions\n\n- `can_export_reports`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nStreams the verified artifact through the owner-scoped report route.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_export_reports"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_export_reports`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_export_reports`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/report/snow/exports/cancel": {
      "post": {
        "operationId": "cancelSnowReportExport",
        "summary": "Cancel a durable snow report export",
        "tags": [
          "Reports & Exports"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "id"
                ],
                "properties": {
                  "id": {
                    "type": "string",
                    "pattern": "^[1-9][0-9]{0,18}$"
                  },
                  "expected_version": {
                    "type": "string",
                    "pattern": "^[1-9][0-9]{0,18}$"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful snow report response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "export": {
                      "$ref": "#/components/schemas/SnowReportExport"
                    },
                    "pdf_status": {
                      "type": "string",
                      "enum": [
                        "template_required"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid report key, filter, timestamp, cursor, or request"
          },
          "403": {
            "description": "Company outside the authenticated scope"
          },
          "404": {
            "description": "Export not found"
          },
          "409": {
            "description": "Version, idempotency, terminal-state, or result conflict"
          },
          "410": {
            "description": "Export artifact expired"
          },
          "422": {
            "description": "Reviewed PDF template is not configured"
          }
        },
        "parameters": [
          {
            "name": "If-Match",
            "in": "header",
            "required": true,
            "description": "Positive export row version, optionally quoted or weak.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "description": "### Required permissions\n\n- `can_export_reports`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nCancels queued work or requests cooperative cancellation of a running export.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_export_reports"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_export_reports`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_export_reports`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/report/snow/exports/create": {
      "post": {
        "operationId": "createSnowReportExport",
        "summary": "Queue a durable snow report export",
        "tags": [
          "Reports & Exports"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "report_key",
                  "period_from",
                  "period_to",
                  "output_format"
                ],
                "properties": {
                  "report_key": {
                    "type": "string",
                    "enum": [
                      "entries_consolidated",
                      "daily_volume",
                      "trips_anomalies",
                      "instruments",
                      "teams_presence",
                      "billed_costs",
                      "measurement_corrections",
                      "missing_evidence",
                      "sync",
                      "u4"
                    ]
                  },
                  "period_from": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "period_to": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "company_id": {
                    "type": "string",
                    "pattern": "^[1-9][0-9]{0,18}$"
                  },
                  "site_id": {
                    "type": "string",
                    "pattern": "^[1-9][0-9]{0,18}$"
                  },
                  "project_id": {
                    "type": "string",
                    "pattern": "^[1-9][0-9]{0,18}$"
                  },
                  "project_team_id": {
                    "type": "string",
                    "pattern": "^[1-9][0-9]{0,18}$"
                  },
                  "device_id": {
                    "type": "string",
                    "pattern": "^[1-9][0-9]{0,18}$"
                  },
                  "status": {
                    "type": "string",
                    "pattern": "^[a-z][a-z0-9_]{0,63}$"
                  },
                  "max_rows": {
                    "oneOf": [
                      {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 50000
                      },
                      {
                        "type": "string",
                        "pattern": "^[1-9][0-9]{0,4}$"
                      }
                    ],
                    "default": 10000
                  },
                  "output_format": {
                    "type": "string",
                    "enum": [
                      "json",
                      "csv",
                      "xlsx",
                      "pdf"
                    ]
                  },
                  "payload_version": {
                    "type": "string",
                    "enum": [
                      "snow_report_export_v1"
                    ]
                  },
                  "attempt_limit": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 10,
                    "default": 3
                  },
                  "expires_at": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "idempotency_key": {
                    "type": "string",
                    "maxLength": 255
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful snow report response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "export": {
                      "$ref": "#/components/schemas/SnowReportExport"
                    },
                    "pdf_status": {
                      "type": "string",
                      "enum": [
                        "template_required"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid report key, filter, timestamp, cursor, or request"
          },
          "403": {
            "description": "Company outside the authenticated scope"
          },
          "404": {
            "description": "Export not found"
          },
          "409": {
            "description": "Version, idempotency, terminal-state, or result conflict"
          },
          "410": {
            "description": "Export artifact expired"
          },
          "422": {
            "description": "Reviewed PDF template is not configured"
          }
        },
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 255
            }
          }
        ],
        "description": "### Required permissions\n\n- `can_export_reports`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nCaptures the report filters and owner scope, then queues JSON, CSV, or XLSX generation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_export_reports"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_export_reports`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_export_reports`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/report/snow/exports/detail": {
      "post": {
        "operationId": "getSnowReportExport",
        "summary": "Read one durable snow report export",
        "tags": [
          "Reports & Exports"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "id"
                ],
                "properties": {
                  "id": {
                    "type": "string",
                    "pattern": "^[1-9][0-9]{0,18}$"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful snow report response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "export": {
                      "$ref": "#/components/schemas/SnowReportExport"
                    },
                    "pdf_status": {
                      "type": "string",
                      "enum": [
                        "template_required"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid report key, filter, timestamp, cursor, or request"
          },
          "403": {
            "description": "Company outside the authenticated scope"
          },
          "404": {
            "description": "Export not found"
          },
          "409": {
            "description": "Version, idempotency, terminal-state, or result conflict"
          },
          "410": {
            "description": "Export artifact expired"
          },
          "422": {
            "description": "Reviewed PDF template is not configured"
          }
        },
        "description": "### Required permissions\n\n- `can_export_reports`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns one owner-scoped export and its current row version.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_export_reports"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_export_reports`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_export_reports`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/report/snow/exports/query": {
      "post": {
        "operationId": "querySnowReportExports",
        "summary": "Query durable snow report exports",
        "tags": [
          "Reports & Exports"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "limit": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 100
                  },
                  "cursor": {
                    "type": "string",
                    "pattern": "^[1-9][0-9]{0,18}$"
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "queued",
                      "running",
                      "succeeded",
                      "failed",
                      "cancelled"
                    ]
                  },
                  "output_format": {
                    "type": "string",
                    "enum": [
                      "json",
                      "csv",
                      "xlsx",
                      "pdf"
                    ]
                  },
                  "report_key": {
                    "type": "string",
                    "enum": [
                      "entries_consolidated",
                      "daily_volume",
                      "trips_anomalies",
                      "instruments",
                      "teams_presence",
                      "billed_costs",
                      "measurement_corrections",
                      "missing_evidence",
                      "sync",
                      "u4"
                    ]
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful snow report response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "exports": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/SnowReportExport"
                      }
                    },
                    "row_count": {
                      "type": "string",
                      "pattern": "^[0-9]+$"
                    },
                    "has_more": {
                      "type": "boolean"
                    },
                    "next_cursor": {
                      "type": "string",
                      "pattern": "^[1-9][0-9]{0,18}$",
                      "nullable": true
                    },
                    "pdf_status": {
                      "type": "string",
                      "enum": [
                        "template_required"
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid report key, filter, timestamp, cursor, or request"
          },
          "403": {
            "description": "Company outside the authenticated scope"
          },
          "404": {
            "description": "Export not found"
          },
          "409": {
            "description": "Version, idempotency, terminal-state, or result conflict"
          },
          "410": {
            "description": "Export artifact expired"
          },
          "422": {
            "description": "Reviewed PDF template is not configured"
          }
        },
        "description": "### Required permissions\n\n- `can_export_reports`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns the authenticated user's cursor-bounded export queue.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_export_reports"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_export_reports`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_export_reports`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/report/snow/preview": {
      "post": {
        "operationId": "previewSnowReport",
        "summary": "Preview a bounded snow report",
        "tags": [
          "Reports & Exports"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SnowReportPreviewRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful snow report response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "report_key": {
                      "type": "string",
                      "enum": [
                        "entries_consolidated",
                        "daily_volume",
                        "trips_anomalies",
                        "instruments",
                        "teams_presence",
                        "billed_costs",
                        "measurement_corrections",
                        "missing_evidence",
                        "sync",
                        "u4"
                      ]
                    },
                    "rows": {
                      "type": "array",
                      "items": {
                        "type": "object"
                      },
                      "maxItems": 100
                    },
                    "next_cursor": {
                      "type": "string",
                      "nullable": true
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid report key, filter, timestamp, cursor, or request"
          },
          "403": {
            "description": "Company outside the authenticated scope"
          },
          "404": {
            "description": "Export not found"
          },
          "409": {
            "description": "Version, idempotency, terminal-state, or result conflict"
          },
          "410": {
            "description": "Export artifact expired"
          },
          "422": {
            "description": "Reviewed PDF template is not configured"
          }
        },
        "description": "### Required permissions\n\n- `can_export_reports`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns at most 100 exact rows for an explicit period and optional operational filters.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_export_reports"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_export_reports`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_export_reports`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/roles": {
      "post": {
        "operationId": "getRole",
        "summary": "Retrieve a role",
        "tags": [
          "Roles & Permissions"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "id"
                ],
                "properties": {
                  "id": {
                    "type": "integer",
                    "description": "The role UUID"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "role": {
                      "$ref": "#/components/schemas/Role"
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_view_roles`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nFetches a single role by ID, including its name and permission set.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_roles"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_roles`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_roles`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "put": {
        "operationId": "createRole",
        "summary": "Create a role",
        "tags": [
          "Roles & Permissions"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "name",
                  "permissions"
                ],
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "dashboard": {
                    "type": "integer",
                    "description": "Dashboard layout type (frontend-defined)"
                  },
                  "permissions": {
                    "type": "string"
                  },
                  "restrict_tags": {
                    "type": "array",
                    "items": {
                      "type": "integer"
                    }
                  },
                  "restrict_companies": {
                    "type": "array",
                    "items": {
                      "type": "integer"
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "role": {
                      "$ref": "#/components/schemas/Role"
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_add_roles`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nCreates a new role with a defined set of permissions.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_add_roles"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_add_roles`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_add_roles`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "patch": {
        "operationId": "updateRole",
        "summary": "Update a role",
        "tags": [
          "Roles & Permissions"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "id"
                ],
                "properties": {
                  "id": {
                    "type": "integer",
                    "description": "The role UUID to update"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "role": {
                      "$ref": "#/components/schemas/Role"
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_edit_roles`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nModifies an existing role's name or permission set. Changes apply immediately to all assigned users.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_roles"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_roles`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_roles`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "delete": {
        "operationId": "deleteRole",
        "summary": "Delete a role",
        "tags": [
          "Roles & Permissions"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "id"
                ],
                "properties": {
                  "id": {
                    "type": "integer",
                    "description": "The role UUID to delete"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessResponse"
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_delete_roles`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nPermanently deletes a role. Users assigned to this role must be reassigned first.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_delete_roles"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_delete_roles`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_delete_roles`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/roles/list": {
      "post": {
        "operationId": "listRoles",
        "summary": "List roles",
        "tags": [
          "Roles & Permissions"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "page": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "page_limit": {
                    "type": "integer"
                  },
                  "search": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "count": {
                      "type": "integer"
                    },
                    "roles": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Role"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_view_roles`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns a list of all roles with their permission sets.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_roles"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_roles`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_roles`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/schedules": {
      "post": {
        "operationId": "getSchedule",
        "summary": "Retrieve a schedule",
        "tags": [
          "Schedules"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "id"
                ],
                "properties": {
                  "id": {
                    "type": "integer",
                    "description": "The schedule UUID"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "schedule": {
                      "$ref": "#/components/schemas/Schedule"
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_view_schedules`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nFetches a single schedule by ID, including time slots, days of week, and linked access rules.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_schedules"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_schedules`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_schedules`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "put": {
        "operationId": "createSchedule",
        "summary": "Create a schedule",
        "tags": [
          "Schedules"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "name"
                ],
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "allow_users": {
                    "type": "boolean"
                  },
                  "allow_customers": {
                    "type": "boolean"
                  },
                  "allow_guests": {
                    "type": "boolean"
                  },
                  "start_date": {
                    "type": "string"
                  },
                  "end_date": {
                    "type": "string"
                  },
                  "holidays_type": {
                    "type": "integer",
                    "description": "Holiday handling mode (frontend-defined)"
                  },
                  "holidays": {
                    "type": "array",
                    "items": {
                      "type": "integer"
                    }
                  },
                  "days": {
                    "type": "object"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "schedule": {
                      "$ref": "#/components/schemas/Schedule"
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_add_schedules`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nCreates a new schedule defining allowed access time windows by day of week.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_add_schedules"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_add_schedules`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_add_schedules`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "patch": {
        "operationId": "updateSchedule",
        "summary": "Update a schedule",
        "tags": [
          "Schedules"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "id"
                ],
                "properties": {
                  "id": {
                    "type": "integer",
                    "description": "The schedule UUID to update"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "schedule": {
                      "$ref": "#/components/schemas/Schedule"
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_edit_schedules`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nModifies an existing schedule's time slots or day-of-week configuration.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_schedules"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_schedules`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_schedules`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "delete": {
        "operationId": "deleteSchedule",
        "summary": "Delete a schedule",
        "tags": [
          "Schedules"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "id"
                ],
                "properties": {
                  "id": {
                    "type": "integer",
                    "description": "The schedule UUID to delete"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessResponse"
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_delete_schedules`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nPermanently deletes a schedule. Access cards using this schedule will become unrestricted.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_delete_schedules"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_delete_schedules`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_delete_schedules`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/schedules/filters": {
      "post": {
        "operationId": "getScheduleFilters",
        "summary": "Get schedule filter options",
        "tags": [
          "Schedules"
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "count": {
                      "type": "integer"
                    },
                    "schedules": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/FilterItem"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_view_schedules`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns a list of schedules formatted for use in dropdown/filter UI components.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_schedules"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_schedules`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_schedules`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/schedules/list": {
      "post": {
        "operationId": "listSchedules",
        "summary": "List schedules",
        "tags": [
          "Schedules"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "page": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "page_limit": {
                    "type": "integer"
                  },
                  "search": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "count": {
                      "type": "integer"
                    },
                    "schedules": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Schedule"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_view_schedules`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns a paginated list of all schedules with their time slot configurations.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_schedules"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_schedules`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_schedules`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/search": {
      "post": {
        "operationId": "globalSearch",
        "summary": "Global search",
        "tags": [
          "Search"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "query"
                ],
                "properties": {
                  "query": {
                    "type": "string",
                    "description": "The search text"
                  },
                  "limit": {
                    "type": "integer",
                    "default": 5
                  },
                  "smart": {
                    "type": "boolean",
                    "default": false
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Search results",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "results": {
                      "type": "array",
                      "items": {
                        "type": "object"
                      }
                    },
                    "count": {
                      "type": "integer"
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nPerforms a full-text search across entries, customers, vehicles, events, and transactions. Returns grouped results by entity type.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/search/reindex": {
      "post": {
        "operationId": "reindex",
        "summary": "Reindex search data",
        "tags": [
          "Search"
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessResponse"
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRebuilds the full-text search index. Use after bulk data imports or if search results appear stale.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/site": {
      "post": {
        "operationId": "getSite",
        "summary": "Retrieve a site",
        "tags": [
          "Sites"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "id"
                ],
                "properties": {
                  "id": {
                    "type": "integer",
                    "format": "int64",
                    "minimum": 1
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Site response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "success",
                    "site"
                  ],
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "site": {
                      "$ref": "#/components/schemas/SnowSite"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid site identifier"
          },
          "401": {
            "description": "Authentication required or invalid session"
          },
          "403": {
            "description": "Site view permission denied"
          },
          "404": {
            "description": "Site not found"
          },
          "500": {
            "description": "Site equipment could not be loaded"
          }
        },
        "description": "### Required permissions\n\n- `can_view_sites`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nFetches one physical site and its zone/device summary.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_sites"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_sites`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_sites`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "put": {
        "operationId": "createSite",
        "summary": "Create a site",
        "tags": [
          "Sites"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "code",
                  "name",
                  "zone_id"
                ],
                "properties": {
                  "company_id": {
                    "type": "integer",
                    "format": "int64",
                    "minimum": 0,
                    "description": "Owning company; zero means not assigned."
                  },
                  "code": {
                    "type": "string",
                    "minLength": 1
                  },
                  "name": {
                    "type": "string",
                    "minLength": 1
                  },
                  "description": {
                    "type": "string"
                  },
                  "status": {
                    "type": "boolean"
                  },
                  "site_type": {
                    "type": "string"
                  },
                  "zone_id": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "timezone": {
                    "type": "string"
                  },
                  "address": {
                    "type": "string"
                  },
                  "address2": {
                    "type": "string"
                  },
                  "city": {
                    "type": "string"
                  },
                  "province": {
                    "type": "string"
                  },
                  "postal_code": {
                    "type": "string"
                  },
                  "country": {
                    "type": "string"
                  },
                  "latitude": {
                    "type": "number",
                    "format": "double"
                  },
                  "longitude": {
                    "type": "number",
                    "format": "double"
                  },
                  "contact_name": {
                    "type": "string"
                  },
                  "contact_email": {
                    "type": "string"
                  },
                  "contact_phone": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Site created",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "success",
                    "site"
                  ],
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "site": {
                      "$ref": "#/components/schemas/SnowSite"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid company_id, zone_id, or required site field"
          },
          "401": {
            "description": "Authentication required or invalid session"
          },
          "403": {
            "description": "Site creation permission denied"
          },
          "409": {
            "description": "Site could not be created; code may already exist"
          }
        },
        "description": "### Required permissions\n\n- `can_add_sites`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nCreates a physical site inside a zone.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_add_sites"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_add_sites`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_add_sites`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "patch": {
        "operationId": "updateSite",
        "summary": "Update a site",
        "tags": [
          "Sites"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "id"
                ],
                "properties": {
                  "id": {
                    "type": "integer",
                    "format": "int64",
                    "minimum": 1
                  },
                  "company_id": {
                    "type": "integer",
                    "format": "int64",
                    "minimum": 0,
                    "description": "Owning company; zero means not assigned."
                  },
                  "code": {
                    "type": "string",
                    "minLength": 1
                  },
                  "name": {
                    "type": "string",
                    "minLength": 1
                  },
                  "description": {
                    "type": "string"
                  },
                  "status": {
                    "type": "boolean"
                  },
                  "site_type": {
                    "type": "string"
                  },
                  "zone_id": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "timezone": {
                    "type": "string"
                  },
                  "address": {
                    "type": "string"
                  },
                  "address2": {
                    "type": "string"
                  },
                  "city": {
                    "type": "string"
                  },
                  "province": {
                    "type": "string"
                  },
                  "postal_code": {
                    "type": "string"
                  },
                  "country": {
                    "type": "string"
                  },
                  "latitude": {
                    "type": "number",
                    "format": "double"
                  },
                  "longitude": {
                    "type": "number",
                    "format": "double"
                  },
                  "contact_name": {
                    "type": "string"
                  },
                  "contact_email": {
                    "type": "string"
                  },
                  "contact_phone": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Site updated",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "success",
                    "site"
                  ],
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "site": {
                      "$ref": "#/components/schemas/SnowSite"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid company_id, zone_id, or required site field"
          },
          "401": {
            "description": "Authentication required or invalid session"
          },
          "403": {
            "description": "Site update permission denied"
          },
          "404": {
            "description": "Site not found"
          },
          "409": {
            "description": "Site could not be updated"
          },
          "500": {
            "description": "Updated site could not be reloaded"
          }
        },
        "description": "### Required permissions\n\n- `can_edit_sites`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nUpdates a site's identity, address, contact, status, or parent zone.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_sites"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_sites`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_sites`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "delete": {
        "operationId": "deleteSite",
        "summary": "Delete a site",
        "tags": [
          "Sites"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "id"
                ],
                "properties": {
                  "id": {
                    "type": "integer",
                    "format": "int64",
                    "minimum": 1
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Site deleted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid site identifier"
          },
          "401": {
            "description": "Authentication required or invalid session"
          },
          "403": {
            "description": "Site deletion permission denied"
          },
          "404": {
            "description": "Site not found"
          },
          "409": {
            "description": "Assigned devices must be moved before deletion"
          }
        },
        "description": "### Required permissions\n\n- `can_delete_sites`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nDeletes an empty site. Assigned devices must be moved first.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_delete_sites"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_delete_sites`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_delete_sites`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/site/filters": {
      "post": {
        "operationId": "getSiteFilters",
        "summary": "Site filter options",
        "tags": [
          "Sites"
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "zone_id": {
                    "type": "integer",
                    "minimum": 0
                  },
                  "active_only": {
                    "type": "boolean",
                    "default": true
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Site selector options",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "success",
                    "sites"
                  ],
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "sites": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/SiteFilterItem"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid site-filter request"
          },
          "401": {
            "description": "Authentication required or invalid session"
          },
          "403": {
            "description": "Site view permission denied"
          }
        },
        "description": "### Required permissions\n\n- `can_view_sites`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns active sites for selectors, optionally restricted to a zone.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_sites"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_sites`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_sites`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/site/list": {
      "post": {
        "operationId": "listSites",
        "summary": "List sites",
        "tags": [
          "Sites"
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "page": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "limit": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 100
                  },
                  "search": {
                    "type": "string"
                  },
                  "zone_id": {
                    "type": "integer",
                    "minimum": 0
                  },
                  "status": {
                    "type": "integer",
                    "enum": [
                      -1,
                      0,
                      1
                    ]
                  },
                  "cursor_id": {
                    "type": "integer",
                    "format": "int64",
                    "minimum": 0
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Paged site portfolio",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "success",
                    "sites",
                    "count",
                    "summary",
                    "page",
                    "limit",
                    "next_cursor"
                  ],
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "sites": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/SnowSite"
                      }
                    },
                    "count": {
                      "type": "integer",
                      "format": "int64"
                    },
                    "summary": {
                      "type": "object",
                      "required": [
                        "total_sites",
                        "operational_sites",
                        "device_count",
                        "online_device_count"
                      ],
                      "properties": {
                        "total_sites": {
                          "type": "integer",
                          "format": "int64"
                        },
                        "operational_sites": {
                          "type": "integer",
                          "format": "int64"
                        },
                        "device_count": {
                          "type": "integer",
                          "format": "int64"
                        },
                        "online_device_count": {
                          "type": "integer",
                          "format": "int64"
                        }
                      }
                    },
                    "page": {
                      "type": "integer",
                      "minimum": 1
                    },
                    "limit": {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 100
                    },
                    "next_cursor": {
                      "type": "integer",
                      "format": "int64",
                      "minimum": 0
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid site-list filter"
          },
          "401": {
            "description": "Authentication required or invalid session"
          },
          "403": {
            "description": "Site view permission denied"
          }
        },
        "description": "### Required permissions\n\n- `can_view_sites`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns a paginated, filterable site-management list.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_sites"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_sites`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_sites`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/site/snow-features": {
      "patch": {
        "operationId": "updateSiteSnowFeatures",
        "summary": "Update snow features for a site",
        "tags": [
          "Sites"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "site_id",
                  "expected_revision",
                  "mode",
                  "flags",
                  "reason"
                ],
                "properties": {
                  "site_id": {
                    "type": "integer",
                    "format": "int64",
                    "minimum": 1
                  },
                  "expected_revision": {
                    "type": "integer",
                    "format": "int64",
                    "minimum": 0
                  },
                  "mode": {
                    "type": "string",
                    "enum": [
                      "off",
                      "shadow",
                      "active"
                    ]
                  },
                  "flags": {
                    "$ref": "#/components/schemas/SnowFeatureFlags"
                  },
                  "reason": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 1000
                  },
                  "snow_season_status": {
                    "type": "string",
                    "enum": [
                      "inactive",
                      "planned",
                      "active",
                      "suspended",
                      "closed"
                    ]
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Updated site snow configuration",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "success",
                    "site"
                  ],
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "site": {
                      "$ref": "#/components/schemas/SnowSite"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid mode, flag, season status, or reason"
          },
          "401": {
            "description": "Authentication required or invalid session"
          },
          "403": {
            "description": "Site update permission or company scope denied"
          },
          "404": {
            "description": "Site not found"
          },
          "409": {
            "description": "Snow feature revision conflict"
          },
          "500": {
            "description": "Site snow-feature update failed"
          }
        },
        "x-content-type-header-enforced": false,
        "description": "### Required permissions\n\n- `can_edit_sites`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nAtomically updates versioned per-site snow feature flags after revision and dependency validation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_sites"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_sites`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_sites`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/sms/logs": {
      "post": {
        "operationId": "post_v1_sms_logs",
        "summary": "SMS Logs",
        "tags": [
          "Email & SMS"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_edit_users`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns paginated SMS send logs. Requires can_edit_users permission.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_users"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_users`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_users`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/sms/summary": {
      "post": {
        "operationId": "post_v1_sms_summary",
        "summary": "SMS Summary",
        "tags": [
          "Email & SMS"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_edit_users`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns SMS send statistics (total/sent/failed, per-day, per-context). Requires can_edit_users permission.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_users"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_users`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_users`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/sso/admin/provider": {
      "put": {
        "operationId": "put_v1_sso_admin_provider",
        "summary": "Create SSO provider",
        "tags": [
          "Single Sign-On"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_edit_settings` **or** `can_edit_users`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nCreates a new SSO provider configuration. Requires admin permission.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "any": [
                {
                  "permission": "can_edit_settings"
                },
                {
                  "permission": "can_edit_users"
                }
              ]
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_settings` **or** `can_edit_users`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_settings` **ou** `can_edit_users`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "patch": {
        "operationId": "patch_v1_sso_admin_provider",
        "summary": "Update SSO provider",
        "tags": [
          "Single Sign-On"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_edit_settings` **or** `can_edit_users`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nUpdates an existing SSO provider configuration. Requires admin permission.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "any": [
                {
                  "permission": "can_edit_settings"
                },
                {
                  "permission": "can_edit_users"
                }
              ]
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_settings` **or** `can_edit_users`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_settings` **ou** `can_edit_users`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "delete": {
        "operationId": "delete_v1_sso_admin_provider",
        "summary": "Delete SSO provider",
        "tags": [
          "Single Sign-On"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_edit_settings` **or** `can_edit_users`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nDeletes an SSO provider configuration. Requires admin permission.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "any": [
                {
                  "permission": "can_edit_settings"
                },
                {
                  "permission": "can_edit_users"
                }
              ]
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_settings` **or** `can_edit_users`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_settings` **ou** `can_edit_users`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/sso/admin/providers": {
      "post": {
        "operationId": "post_v1_sso_admin_providers",
        "summary": "List SSO providers (admin)",
        "tags": [
          "Single Sign-On"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_edit_settings` **or** `can_edit_users`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns all SSO providers with configuration details (secrets masked). Requires admin permission.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "any": [
                {
                  "permission": "can_edit_settings"
                },
                {
                  "permission": "can_edit_users"
                }
              ]
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_settings` **or** `can_edit_users`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_settings` **ou** `can_edit_users`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/sso/authorize": {
      "post": {
        "operationId": "post_v1_sso_authorize",
        "summary": "Initiate SSO login",
        "tags": [
          "Single Sign-On"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nGenerates an OAuth2 authorization URL or SAML redirect for the specified provider.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "security": [],
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/sso/callback": {
      "post": {
        "operationId": "post_v1_sso_callback",
        "summary": "SSO OAuth2 callback",
        "tags": [
          "Single Sign-On"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nExchanges the OAuth2 authorization code for tokens, resolves the user, and creates a session.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "security": [],
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/sso/providers": {
      "get": {
        "operationId": "get_v1_sso_providers",
        "summary": "List enabled SSO providers",
        "tags": [
          "Single Sign-On"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns the list of enabled SSO providers for the login page. No authentication required.",
        "security": [],
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/sso/saml/acs": {
      "post": {
        "operationId": "post_v1_sso_saml_acs",
        "summary": "SAML Assertion Consumer Service",
        "tags": [
          "Single Sign-On"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReceives the SAML response from the IdP, validates it, resolves the user, and creates a session.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "security": [],
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/sso/saml/exchange": {
      "post": {
        "operationId": "source_post__v1_sso_saml_exchange",
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "session": {
                      "type": "string"
                    },
                    "sso_login": {
                      "type": "boolean"
                    },
                    "user": {
                      "type": "object",
                      "additionalProperties": true
                    },
                    "role": {
                      "type": "object",
                      "additionalProperties": true
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid request."
          },
          "401": {
            "description": "Invalid or expired handoff/session, or unavailable account."
          }
        },
        "summary": "Exchange a one-time SAML handoff code",
        "tags": [
          "Single Sign-On"
        ],
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nExchanges a SAML handoff code for the existing session. The handoff is consumed once; an expired, already consumed or invalid code is rejected.",
        "security": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "code": {
                    "type": "string",
                    "minLength": 16,
                    "maxLength": 128
                  }
                },
                "required": [
                  "code"
                ]
              }
            }
          }
        },
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/sso/saml/login": {
      "post": {
        "operationId": "post_v1_sso_saml_login",
        "summary": "Initiate SAML login",
        "tags": [
          "Single Sign-On"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nGenerates a SAML AuthnRequest and returns an auto-submit HTML form to redirect to the IdP.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "security": [],
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "get": {
        "operationId": "get_v1_sso_saml_login",
        "summary": "SAML Login",
        "tags": [
          "Single Sign-On"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "security": [],
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version."
      }
    },
    "/v1/sso/saml/metadata": {
      "get": {
        "operationId": "get_v1_sso_saml_metadata",
        "summary": "SAML SP metadata",
        "tags": [
          "Single Sign-On"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns the SAML Service Provider metadata XML for IdP configuration.",
        "security": [],
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/stats": {
      "post": {
        "operationId": "getStats",
        "summary": "Get dashboard statistics",
        "tags": [
          "Statistics"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "date_from",
                  "date_to"
                ],
                "properties": {
                  "v2": {
                    "type": "boolean"
                  },
                  "date_from": {
                    "type": "string"
                  },
                  "date_to": {
                    "type": "string"
                  },
                  "page_limit": {
                    "type": "integer"
                  },
                  "page": {
                    "type": "integer"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessResponse"
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns summary statistics for the main dashboard: current occupancy, today's entries/exits, revenue, and active devices.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/stats/accesses": {
      "post": {
        "operationId": "getStatsAccesses",
        "summary": "Get access card usage statistics",
        "tags": [
          "Statistics"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "date_from",
                  "date_to"
                ],
                "properties": {
                  "date_from": {
                    "type": "string"
                  },
                  "date_to": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessResponse"
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns statistics on access card usage including scan counts and most-used cards.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/stats/averages": {
      "post": {
        "operationId": "getStatsAverages",
        "summary": "Get average duration statistics",
        "tags": [
          "Statistics"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "time_group"
                ],
                "properties": {
                  "time_group": {
                    "type": "string",
                    "enum": [
                      "hour",
                      "day",
                      "week"
                    ]
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessResponse"
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns average parking durations, wait times, and peak hours analysis.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/stats/devices": {
      "post": {
        "operationId": "getStatsDevices",
        "summary": "Get device status statistics",
        "tags": [
          "Statistics"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "date_from",
                  "date_to"
                ],
                "properties": {
                  "date_from": {
                    "type": "string"
                  },
                  "date_to": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessResponse"
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns device health metrics: uptime, errors, offline count, and response times.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/stats/entries": {
      "post": {
        "operationId": "getStatsEntries",
        "summary": "Get entry statistics",
        "tags": [
          "Statistics"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "date_from",
                  "date_to"
                ],
                "properties": {
                  "date_from": {
                    "type": "string",
                    "description": "Start date (ISO 8601)"
                  },
                  "date_to": {
                    "type": "string",
                    "description": "End date (ISO 8601)"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessResponse"
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns entry volume statistics grouped by hour, day, or month for the specified date range.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/stats/exits": {
      "post": {
        "operationId": "getStatsExits",
        "summary": "Get exit statistics",
        "tags": [
          "Statistics"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "date_from",
                  "date_to"
                ],
                "properties": {
                  "date_from": {
                    "type": "string",
                    "description": "Start date (ISO 8601)"
                  },
                  "date_to": {
                    "type": "string",
                    "description": "End date (ISO 8601)"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessResponse"
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns exit volume statistics grouped by hour, day, or month for the specified date range.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/stats/finance": {
      "post": {
        "operationId": "getStatsFinance",
        "summary": "Get financial statistics",
        "tags": [
          "Statistics"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "date_from",
                  "date_to"
                ],
                "properties": {
                  "date_from": {
                    "type": "string"
                  },
                  "date_to": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessResponse"
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns financial summaries including revenue, refunds, and payment method breakdowns.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/stats/parking": {
      "post": {
        "operationId": "getStatsParking",
        "summary": "Get parking occupancy statistics",
        "tags": [
          "Statistics"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "date_from",
                  "date_to"
                ],
                "properties": {
                  "date_from": {
                    "type": "string"
                  },
                  "date_to": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessResponse"
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns occupancy data over time showing utilization percentage by zone.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/stats/transactions": {
      "post": {
        "operationId": "getStatsTransactions",
        "summary": "Get transaction statistics",
        "tags": [
          "Statistics"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "date_from",
                  "date_to"
                ],
                "properties": {
                  "date_from": {
                    "type": "string",
                    "description": "Start date (ISO 8601)"
                  },
                  "date_to": {
                    "type": "string",
                    "description": "End date (ISO 8601)"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessResponse"
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns payment transaction statistics by amount, type, and time period.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/supplier": {
      "post": {
        "operationId": "post_v1_supplier",
        "summary": "Retrieve a supplier",
        "tags": [
          "Suppliers"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_suppliers`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_suppliers"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_suppliers`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_suppliers`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "put": {
        "operationId": "put_v1_supplier",
        "summary": "Create a supplier",
        "tags": [
          "Suppliers"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_add_suppliers`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_add_suppliers"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_add_suppliers`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_add_suppliers`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "patch": {
        "operationId": "patch_v1_supplier",
        "summary": "Update a supplier",
        "tags": [
          "Suppliers"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_edit_suppliers`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_suppliers"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_suppliers`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_suppliers`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "delete": {
        "operationId": "delete_v1_supplier",
        "summary": "Delete a supplier",
        "tags": [
          "Suppliers"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_delete_suppliers`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_delete_suppliers"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_delete_suppliers`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_delete_suppliers`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/supplier/email/list": {
      "post": {
        "operationId": "source_post__v1_supplier_email_list",
        "responses": {
          "default": {
            "description": "Response status and schema are not yet specified for this operation."
          }
        },
        "summary": "Retrieve Email Activity",
        "tags": [
          "Suppliers"
        ],
        "description": "### Required permissions\n\n- `can_view_suppliers`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_suppliers"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_suppliers`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_suppliers`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/supplier/list": {
      "post": {
        "operationId": "post_v1_supplier_list",
        "summary": "List suppliers",
        "tags": [
          "Suppliers"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_suppliers`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_suppliers"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_suppliers`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_suppliers`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/supplier/reminder": {
      "put": {
        "operationId": "source_put__v1_supplier_reminder",
        "responses": {
          "default": {
            "description": "Response status and schema are not yet specified for this operation."
          }
        },
        "summary": "Insert Reminder",
        "tags": [
          "Suppliers"
        ],
        "description": "### Required permissions\n\n- `can_edit_suppliers`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_suppliers"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_suppliers`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_suppliers`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "patch": {
        "operationId": "source_patch__v1_supplier_reminder",
        "responses": {
          "default": {
            "description": "Response status and schema are not yet specified for this operation."
          }
        },
        "summary": "Update Reminder",
        "tags": [
          "Suppliers"
        ],
        "description": "### Required permissions\n\n- `can_edit_suppliers`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_suppliers"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_suppliers`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_suppliers`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "delete": {
        "operationId": "source_delete__v1_supplier_reminder",
        "responses": {
          "default": {
            "description": "Response status and schema are not yet specified for this operation."
          }
        },
        "summary": "Delete Reminder",
        "tags": [
          "Suppliers"
        ],
        "description": "### Required permissions\n\n- `can_edit_suppliers`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_suppliers"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_suppliers`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_suppliers`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/supplier/reminder/list": {
      "post": {
        "operationId": "source_post__v1_supplier_reminder_list",
        "responses": {
          "default": {
            "description": "Response status and schema are not yet specified for this operation."
          }
        },
        "summary": "Retrieve Reminders",
        "tags": [
          "Suppliers"
        ],
        "description": "### Required permissions\n\n- `can_view_suppliers`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_suppliers"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_suppliers`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_suppliers`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/tag": {
      "post": {
        "operationId": "getTag",
        "summary": "Retrieve a tag",
        "tags": [
          "Tags"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "id"
                ],
                "properties": {
                  "id": {
                    "type": "integer",
                    "description": "The tag UUID"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "tag": {
                      "$ref": "#/components/schemas/Tag"
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_view_tags`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nFetches a single tag by ID, including its name, color, and usage count.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_tags"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_tags`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_tags`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "put": {
        "operationId": "createTag",
        "summary": "Create a tag",
        "tags": [
          "Tags"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "name",
                  "color"
                ],
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "color": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "tag": {
                      "$ref": "#/components/schemas/Tag"
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_add_tags`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nCreates a new tag that can be assigned to entries, customers, or vehicles for categorization.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_add_tags"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_add_tags`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_add_tags`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "patch": {
        "operationId": "updateTag",
        "summary": "Update a tag",
        "tags": [
          "Tags"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "id"
                ],
                "properties": {
                  "id": {
                    "type": "integer",
                    "description": "The tag UUID to update"
                  },
                  "name": {
                    "type": "string"
                  },
                  "color": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "tag": {
                      "$ref": "#/components/schemas/Tag"
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_edit_tags`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nModifies an existing tag's name or color.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_tags"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_tags`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_tags`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "delete": {
        "operationId": "deleteTag",
        "summary": "Delete a tag",
        "tags": [
          "Tags"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "id"
                ],
                "properties": {
                  "id": {
                    "type": "integer",
                    "description": "The tag UUID to delete"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessResponse"
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_delete_tags`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nPermanently deletes a tag and removes it from all associated records.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_delete_tags"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_delete_tags`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_delete_tags`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/tag/filters": {
      "post": {
        "operationId": "getTagFilters",
        "summary": "Get tag filter options",
        "tags": [
          "Tags"
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "count": {
                      "type": "integer"
                    },
                    "tags": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/FilterItem"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_view_tags`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns a list of tags formatted for use in dropdown/filter UI components.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_tags"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_tags`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_tags`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/tag/list": {
      "post": {
        "operationId": "listTags",
        "summary": "List tags",
        "tags": [
          "Tags"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "page": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "page_limit": {
                    "type": "integer"
                  },
                  "search": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "count": {
                      "type": "integer"
                    },
                    "tags": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Tag"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_view_tags`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns a paginated list of all tags.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_tags"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_tags`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_tags`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/tasks": {
      "post": {
        "operationId": "getTask",
        "summary": "Retrieve a task",
        "tags": [
          "Automated Tasks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "id"
                ],
                "properties": {
                  "id": {
                    "type": "integer",
                    "description": "The task UUID"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "task": {
                      "$ref": "#/components/schemas/Task"
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_view_tasks`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nFetches a single automated task by ID, including schedule, action type, and last run status.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_tasks"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_tasks`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_tasks`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "put": {
        "operationId": "createTask",
        "summary": "Create a task",
        "tags": [
          "Automated Tasks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "enabled": {
                    "type": "boolean"
                  },
                  "running": {
                    "type": "boolean"
                  },
                  "scheduled": {
                    "type": "boolean"
                  },
                  "schedule_frequency": {
                    "type": "string"
                  },
                  "schedule_day_of_week": {
                    "type": "integer"
                  },
                  "schedule_day_of_month": {
                    "type": "integer"
                  },
                  "schedule_month": {
                    "type": "integer"
                  },
                  "schedule_day": {
                    "type": "integer"
                  },
                  "schedule_date": {
                    "type": "string"
                  },
                  "time_type": {
                    "type": "string"
                  },
                  "time": {
                    "type": "string"
                  },
                  "task_type": {
                    "type": "string"
                  },
                  "report_type": {
                    "type": "string"
                  },
                  "action_type": {
                    "type": "string"
                  },
                  "action_duration_minutes": {
                    "type": "integer"
                  },
                  "action_ssh_command": {
                    "type": "string"
                  },
                  "action_device_ids": {
                    "type": "array",
                    "items": {
                      "type": "integer"
                    }
                  },
                  "run_task_ids": {
                    "type": "array",
                    "items": {
                      "type": "integer"
                    }
                  },
                  "entity_type": {
                    "type": "string"
                  },
                  "entity_filters": {
                    "type": "array",
                    "items": {
                      "type": "object"
                    }
                  },
                  "entity_field": {
                    "type": "string"
                  },
                  "entity_field_value": {
                    "type": "string"
                  },
                  "entity_payload": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "task": {
                      "$ref": "#/components/schemas/Task"
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_add_tasks`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nCreates a new automated task with a schedule, trigger conditions, and action to execute.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_add_tasks"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_add_tasks`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_add_tasks`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "patch": {
        "operationId": "updateTask",
        "summary": "Update a task",
        "tags": [
          "Automated Tasks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "id"
                ],
                "properties": {
                  "id": {
                    "type": "integer",
                    "description": "The task UUID to update"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "task": {
                      "$ref": "#/components/schemas/Task"
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_edit_tasks`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nModifies an existing task's schedule, conditions, or action configuration.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_tasks"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_tasks`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_tasks`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "delete": {
        "operationId": "deleteTask",
        "summary": "Delete a task",
        "tags": [
          "Automated Tasks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "id"
                ],
                "properties": {
                  "id": {
                    "type": "integer",
                    "description": "The task UUID to delete"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessResponse"
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_delete_tasks`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nPermanently deletes an automated task and its run history.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_delete_tasks"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_delete_tasks`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_delete_tasks`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/tasks/filters": {
      "post": {
        "operationId": "getTaskFilters",
        "summary": "Get task filter options",
        "tags": [
          "Automated Tasks"
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "count": {
                      "type": "integer"
                    },
                    "tasks": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/FilterItem"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_view_tasks`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns a list of tasks formatted for use in dropdown/filter UI components.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_tasks"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_tasks`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_tasks`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/tasks/list": {
      "post": {
        "operationId": "listTasks",
        "summary": "List tasks",
        "tags": [
          "Automated Tasks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "page": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "page_limit": {
                    "type": "integer"
                  },
                  "search": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "count": {
                      "type": "integer"
                    },
                    "tasks": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Task"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_view_tasks`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns a paginated list of all automated tasks with their schedules and last run status.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_tasks"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_tasks`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_tasks`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/tasks/run": {
      "post": {
        "operationId": "runTask",
        "summary": "Run a task immediately",
        "tags": [
          "Automated Tasks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "id"
                ],
                "properties": {
                  "id": {
                    "type": "integer",
                    "description": "The task UUID to run"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessResponse"
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_run_tasks`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nTriggers immediate execution of a task regardless of its schedule.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_run_tasks"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_run_tasks`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_run_tasks`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/tasks/runs": {
      "post": {
        "operationId": "getTaskRuns",
        "summary": "List task runs",
        "tags": [
          "Automated Tasks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "task_id"
                ],
                "properties": {
                  "task_id": {
                    "type": "integer"
                  },
                  "page": {
                    "type": "integer"
                  },
                  "page_limit": {
                    "type": "integer"
                  },
                  "search": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessResponse"
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_view_tasks`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns the execution history for a task, including status, duration, and result summary.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_tasks"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_tasks`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_tasks`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/tasks/runs/details": {
      "post": {
        "operationId": "getTaskRunDetails",
        "summary": "Get task run details",
        "tags": [
          "Automated Tasks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "run_id"
                ],
                "properties": {
                  "run_id": {
                    "type": "integer"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessResponse"
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_view_tasks`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nFetches detailed output and logs for a specific task run.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_tasks"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_tasks`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_tasks`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/tasks/runs/reverse": {
      "post": {
        "operationId": "reverseTaskRun",
        "summary": "Reverse a task run",
        "tags": [
          "Automated Tasks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "run_id"
                ],
                "properties": {
                  "run_id": {
                    "type": "integer"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessResponse"
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_run_tasks`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nAttempts to undo the actions performed by a specific task run.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_run_tasks"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_run_tasks`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_run_tasks`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/tasks/simulate": {
      "post": {
        "operationId": "simulateTask",
        "summary": "Simulate a task",
        "tags": [
          "Automated Tasks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "id"
                ],
                "properties": {
                  "id": {
                    "type": "integer",
                    "description": "The task UUID to simulate"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessResponse"
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_run_tasks`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nPerforms a dry run of a task to preview what actions it would take without actually executing them.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_run_tasks"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_run_tasks`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_run_tasks`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/transaction": {
      "post": {
        "operationId": "getTransaction",
        "summary": "Retrieve a transaction",
        "tags": [
          "Transactions"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "id"
                ],
                "properties": {
                  "id": {
                    "type": "integer",
                    "description": "The transaction UUID"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "transaction": {
                      "$ref": "#/components/schemas/Transaction"
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_view_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nFetches a single payment transaction by ID, including amount, status, method, and linked entry.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_transactions"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_transactions`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "put": {
        "operationId": "createTransaction",
        "summary": "Create a transaction",
        "tags": [
          "Transactions"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "company_id": {
                    "type": "integer"
                  },
                  "customer_id": {
                    "type": "integer"
                  },
                  "vehicle_ids": {
                    "type": "array",
                    "items": {
                      "type": "integer"
                    }
                  },
                  "parent_transaction": {
                    "type": "integer"
                  },
                  "entry_id": {
                    "type": "integer"
                  },
                  "device_id": {
                    "type": "integer"
                  },
                  "access_card_id": {
                    "type": "integer"
                  },
                  "type": {
                    "type": "integer",
                    "enum": [
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7
                    ],
                    "description": "0 = Payment on equipment, 1 = Online payment, 2 = Point of sale, 3 = Manual / offline, 4 = Online refund, 5 = POS refund, 6 = Partial refund, 7 = Automatic refund"
                  },
                  "status": {
                    "type": "integer",
                    "enum": [
                      0,
                      1,
                      2,
                      3
                    ],
                    "description": "0 = Completed, 1 = Pending, 2 = Refunded, 3 = Cancelled"
                  },
                  "identifier": {
                    "type": "string"
                  },
                  "masked_pan": {
                    "type": "string"
                  },
                  "card_brand": {
                    "type": "string"
                  },
                  "refunded": {
                    "type": "boolean"
                  },
                  "creation_date": {
                    "type": "string"
                  },
                  "amount": {
                    "type": "number"
                  },
                  "subtotal": {
                    "type": "number"
                  },
                  "tax1": {
                    "type": "number"
                  },
                  "tax2": {
                    "type": "number"
                  },
                  "tax1_name": {
                    "type": "string"
                  },
                  "tax2_name": {
                    "type": "string"
                  },
                  "receipt": {
                    "type": "string"
                  },
                  "description": {
                    "type": "string"
                  },
                  "transaction_data": {
                    "type": "object"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "transaction": {
                      "$ref": "#/components/schemas/Transaction"
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_add_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nManually inserts a payment transaction record.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_add_transactions"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_add_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_add_transactions`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/transaction/email": {
      "post": {
        "operationId": "emailTransaction",
        "summary": "Send transaction receipt via email",
        "tags": [
          "Transactions"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "id"
                ],
                "properties": {
                  "id": {
                    "type": "integer",
                    "description": "The transaction UUID"
                  },
                  "to": {
                    "type": "string"
                  },
                  "name": {
                    "type": "string"
                  },
                  "subject": {
                    "type": "string"
                  },
                  "title": {
                    "type": "string"
                  },
                  "message": {
                    "type": "string"
                  },
                  "outro": {
                    "type": "string"
                  },
                  "locale": {
                    "type": "string",
                    "default": "fr"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessResponse"
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nEmails a payment receipt to the customer.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/transaction/excel": {
      "post": {
        "operationId": "exportTransactionExcel",
        "summary": "Download transactions as Excel",
        "tags": [
          "Transactions"
        ],
        "responses": {
          "200": {
            "description": "Excel file",
            "content": {
              "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_view_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nGenerates an .xlsx spreadsheet of transactions matching the filter criteria.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_transactions"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_transactions`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/transaction/list": {
      "post": {
        "operationId": "listTransactions",
        "summary": "List transactions",
        "tags": [
          "Transactions"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "page": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "page_limit": {
                    "type": "integer"
                  },
                  "search": {
                    "type": "string"
                  },
                  "type": {
                    "type": "integer",
                    "enum": [
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7
                    ],
                    "description": "0 = Payment on equipment, 1 = Online payment, 2 = Point of sale, 3 = Manual / offline, 4 = Online refund, 5 = POS refund, 6 = Partial refund, 7 = Automatic refund"
                  },
                  "statuses": {
                    "type": "array",
                    "items": {
                      "type": "integer"
                    }
                  },
                  "entity_types": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "client_ids": {
                    "type": "array",
                    "items": {
                      "type": "integer"
                    }
                  },
                  "user_ids": {
                    "type": "array",
                    "items": {
                      "type": "integer"
                    }
                  },
                  "types": {
                    "type": "array",
                    "items": {
                      "type": "integer"
                    }
                  },
                  "business_ids": {
                    "type": "array",
                    "items": {
                      "type": "integer"
                    }
                  },
                  "device_ids": {
                    "type": "array",
                    "items": {
                      "type": "integer"
                    }
                  },
                  "access_card_ids": {
                    "type": "array",
                    "items": {
                      "type": "integer"
                    }
                  },
                  "tag_ids": {
                    "type": "array",
                    "items": {
                      "type": "integer"
                    }
                  },
                  "zone_ids": {
                    "type": "array",
                    "items": {
                      "type": "integer"
                    }
                  },
                  "card_brands": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "date_from": {
                    "type": "string"
                  },
                  "date_to": {
                    "type": "string"
                  },
                  "amount_min": {
                    "type": "number"
                  },
                  "amount_max": {
                    "type": "number"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "count": {
                      "type": "integer"
                    },
                    "transactions": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Transaction"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_view_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns a paginated list of payment transactions. Supports filtering by date, amount, method, and status.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_transactions"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_transactions`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/transaction/refund": {
      "post": {
        "operationId": "refundTransaction",
        "summary": "Refund a transaction",
        "tags": [
          "Transactions"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "id"
                ],
                "properties": {
                  "id": {
                    "type": "integer",
                    "description": "The transaction UUID to refund"
                  },
                  "reason": {
                    "type": "string"
                  },
                  "amount": {
                    "type": "number"
                  },
                  "subtotal": {
                    "type": "number"
                  },
                  "tax1": {
                    "type": "number"
                  },
                  "tax2": {
                    "type": "number"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessResponse"
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_add_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nProcesses a full or partial refund for a transaction. The refund is sent back to the original payment method.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_add_transactions"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_add_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_add_transactions`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/transaction/reportExcel": {
      "post": {
        "operationId": "exportTransactionReportExcel",
        "summary": "Download transaction report as Excel",
        "tags": [
          "Transactions"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "type"
                ],
                "properties": {
                  "search": {
                    "type": "string"
                  },
                  "client_ids": {
                    "type": "array",
                    "items": {
                      "type": "integer"
                    }
                  },
                  "user_ids": {
                    "type": "array",
                    "items": {
                      "type": "integer"
                    }
                  },
                  "date_from": {
                    "type": "string"
                  },
                  "date_to": {
                    "type": "string"
                  },
                  "page_limit": {
                    "type": "integer"
                  },
                  "type": {
                    "type": "integer",
                    "enum": [
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6,
                      7
                    ],
                    "description": "0 = Payment on equipment, 1 = Online payment, 2 = Point of sale, 3 = Manual / offline, 4 = Online refund, 5 = POS refund, 6 = Partial refund, 7 = Automatic refund"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Excel file",
            "content": {
              "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_view_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nGenerates a formatted Excel report of transactions with summary and totals.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_transactions"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_transactions`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_transactions`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/transaction/sms": {
      "post": {
        "operationId": "smsTransaction",
        "summary": "Send transaction receipt via SMS",
        "tags": [
          "Transactions"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "id"
                ],
                "properties": {
                  "id": {
                    "type": "integer",
                    "description": "The transaction UUID"
                  },
                  "to": {
                    "type": "string"
                  },
                  "message": {
                    "type": "string"
                  },
                  "locale": {
                    "type": "string",
                    "default": "fr"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessResponse"
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nSends a payment receipt to the customer's phone via SMS.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/user": {
      "get": {
        "operationId": "getCurrentUser",
        "summary": "Get current user from session",
        "tags": [
          "Users"
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "user": {
                      "$ref": "#/components/schemas/User"
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns the user profile for the currently authenticated session. No request body needed.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "post": {
        "operationId": "getUser",
        "summary": "Retrieve a user by ID",
        "tags": [
          "Users"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "id"
                ],
                "properties": {
                  "id": {
                    "type": "integer",
                    "description": "The user UUID"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "user": {
                      "$ref": "#/components/schemas/User"
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_view_users`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nFetches a single user's profile including role, company, and permissions.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_users"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_users`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_users`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "put": {
        "operationId": "createUser",
        "summary": "Create a new user",
        "tags": [
          "Users"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "username",
                  "email",
                  "name",
                  "password",
                  "notifications",
                  "role",
                  "adjust_daylight_timezone",
                  "daylight_offset"
                ],
                "properties": {
                  "is_ldap": {
                    "type": "boolean"
                  },
                  "username": {
                    "type": "string"
                  },
                  "email": {
                    "type": "string"
                  },
                  "name": {
                    "type": "string"
                  },
                  "password": {
                    "type": "string"
                  },
                  "status": {
                    "type": "boolean"
                  },
                  "notifications": {
                    "type": "boolean"
                  },
                  "role": {
                    "type": "integer"
                  },
                  "timezone": {
                    "type": "string"
                  },
                  "adjust_daylight_timezone": {
                    "type": "boolean"
                  },
                  "daylight_offset": {
                    "type": "number"
                  },
                  "locale": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "user": {
                      "$ref": "#/components/schemas/User"
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_add_users`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nCreates a new user account with the specified role and company assignment.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_add_users"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_add_users`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_add_users`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "patch": {
        "operationId": "updateUser",
        "summary": "Update a user",
        "tags": [
          "Users"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "id"
                ],
                "properties": {
                  "id": {
                    "type": "integer",
                    "description": "The user UUID to update"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "user": {
                      "$ref": "#/components/schemas/User"
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\nThe following checks depend on the action, filters or requested resource; they are not all required for every request:\n\n- `can_edit_users`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nUpdates user profile fields. Only provided fields are changed.",
        "x-lexoh-permissions": {
          "status": "conditional",
          "required": [],
          "conditional": [
            {
              "permission": "can_edit_users"
            }
          ],
          "description": {
            "en": "The following checks depend on the action, filters or requested resource; they are not all required for every request:\n\n- `can_edit_users`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les vérifications suivantes dépendent de l’action, des filtres ou de la ressource demandée; elles ne sont pas toutes requises pour chaque requête :\n\n- `can_edit_users`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "delete": {
        "operationId": "deleteUser",
        "summary": "Delete a user",
        "tags": [
          "Users"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "id"
                ],
                "properties": {
                  "id": {
                    "type": "integer",
                    "description": "The user UUID to delete"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessResponse"
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_delete_users`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nPermanently deletes a user account and invalidates their active sessions.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_delete_users"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_delete_users`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_delete_users`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/user/filters": {
      "post": {
        "operationId": "getUserFilters",
        "summary": "Get user filter options",
        "tags": [
          "Users"
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "count": {
                      "type": "integer"
                    },
                    "users": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/FilterItem"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_view_users`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns a list of users formatted for use in dropdown/filter UI components.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_users"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_users`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_users`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/user/invite": {
      "post": {
        "operationId": "inviteUser",
        "summary": "Invite a user by email",
        "tags": [
          "Users"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "username",
                  "email",
                  "name",
                  "notifications",
                  "role",
                  "timezone"
                ],
                "properties": {
                  "username": {
                    "type": "string"
                  },
                  "email": {
                    "type": "string"
                  },
                  "name": {
                    "type": "string"
                  },
                  "notifications": {
                    "type": "boolean"
                  },
                  "role": {
                    "type": "integer"
                  },
                  "timezone": {
                    "type": "string"
                  },
                  "is_ldap": {
                    "type": "boolean"
                  },
                  "adjust_daylight_timezone": {
                    "type": "boolean"
                  },
                  "daylight_offset": {
                    "type": "number"
                  },
                  "locale": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Invite result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "user": {
                      "$ref": "#/components/schemas/User"
                    },
                    "email_sent": {
                      "type": "boolean"
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_add_users`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nSends an email invitation to a new user with a link to set their password.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_add_users"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_add_users`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_add_users`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/user/list": {
      "post": {
        "operationId": "listUsers",
        "summary": "List users",
        "tags": [
          "Users"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "page": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "page_limit": {
                    "type": "integer"
                  },
                  "search": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "count": {
                      "type": "integer"
                    },
                    "users": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/User"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_view_users`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns a paginated list of users. Supports filtering by role, company, and status.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_users"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_users`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_users`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/user/mfa": {
      "post": {
        "operationId": "generateMfaSecret",
        "summary": "Generate MFA secret",
        "tags": [
          "Users"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "integer"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "MFA secret",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "totp": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nGenerates a new TOTP secret and QR code for setting up multi-factor authentication.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/user/mfa/confirm": {
      "post": {
        "operationId": "confirmMfa",
        "summary": "Confirm MFA setup",
        "tags": [
          "Users"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "id",
                  "code",
                  "totp"
                ],
                "properties": {
                  "id": {
                    "type": "integer"
                  },
                  "code": {
                    "type": "string",
                    "description": "The 6-digit TOTP code from the authenticator app"
                  },
                  "totp": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "user": {
                      "$ref": "#/components/schemas/User"
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\nThe following checks depend on the action, filters or requested resource; they are not all required for every request:\n\n- `can_edit_users`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nValidates a TOTP code to confirm MFA enrollment. After confirmation, MFA is required on login.",
        "x-lexoh-permissions": {
          "status": "conditional",
          "required": [],
          "conditional": [
            {
              "permission": "can_edit_users"
            }
          ],
          "description": {
            "en": "The following checks depend on the action, filters or requested resource; they are not all required for every request:\n\n- `can_edit_users`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les vérifications suivantes dépendent de l’action, des filtres ou de la ressource demandée; elles ne sont pas toutes requises pour chaque requête :\n\n- `can_edit_users`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/user/new_password": {
      "post": {
        "operationId": "sendNewPassword",
        "summary": "Send password reset",
        "tags": [
          "Users"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "integer",
                    "description": "The user UUID"
                  },
                  "email": {
                    "type": "string"
                  },
                  "username": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessResponse"
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\nThe following checks depend on the action, filters or requested resource; they are not all required for every request:\n\n- `can_edit_users`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nGenerates a new temporary password and sends it to the user's email.",
        "x-lexoh-permissions": {
          "status": "conditional",
          "required": [],
          "conditional": [
            {
              "permission": "can_edit_users"
            }
          ],
          "description": {
            "en": "The following checks depend on the action, filters or requested resource; they are not all required for every request:\n\n- `can_edit_users`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les vérifications suivantes dépendent de l’action, des filtres ou de la ressource demandée; elles ne sont pas toutes requises pour chaque requête :\n\n- `can_edit_users`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/user/save_fcm": {
      "post": {
        "operationId": "saveFcmToken",
        "summary": "Save FCM push token",
        "tags": [
          "Users"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "token": {
                    "type": "string",
                    "description": "The FCM registration token"
                  },
                  "account_data": {
                    "type": "string"
                  },
                  "fcm_token": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessResponse"
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nStores a Firebase Cloud Messaging token for the current user to enable push notifications.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/vehicle": {
      "post": {
        "operationId": "getVehicle",
        "summary": "Retrieve a vehicle",
        "tags": [
          "Vehicles"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "id"
                ],
                "properties": {
                  "id": {
                    "type": "integer",
                    "description": "The vehicle UUID"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "vehicle": {
                      "$ref": "#/components/schemas/Vehicle"
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_view_vehicles`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nFetches a single vehicle by ID, including license plate, make, model, and linked customer.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_vehicles"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_vehicles`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_vehicles`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "put": {
        "operationId": "createVehicle",
        "summary": "Create a vehicle",
        "tags": [
          "Vehicles"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "customer_id": {
                    "type": "integer"
                  },
                  "user_id": {
                    "type": "integer"
                  },
                  "plate_number": {
                    "type": "string"
                  },
                  "brand": {
                    "type": "string"
                  },
                  "model": {
                    "type": "string"
                  },
                  "color": {
                    "type": "string"
                  },
                  "year": {
                    "type": "string"
                  },
                  "description": {
                    "type": "string"
                  },
                  "tags": {
                    "type": "array",
                    "items": {
                      "type": "integer"
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "vehicle": {
                      "$ref": "#/components/schemas/Vehicle"
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_add_vehicles`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRegisters a new vehicle with its license plate, make, model, and optional customer link.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_add_vehicles"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_add_vehicles`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_add_vehicles`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "patch": {
        "operationId": "updateVehicle",
        "summary": "Update a vehicle",
        "tags": [
          "Vehicles"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "id"
                ],
                "properties": {
                  "id": {
                    "type": "integer",
                    "description": "The vehicle UUID to update"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "vehicle": {
                      "$ref": "#/components/schemas/Vehicle"
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_edit_vehicles`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nModifies an existing vehicle's details such as license plate or customer assignment.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_vehicles"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_vehicles`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_vehicles`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "delete": {
        "operationId": "deleteVehicle",
        "summary": "Delete a vehicle",
        "tags": [
          "Vehicles"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "id"
                ],
                "properties": {
                  "id": {
                    "type": "integer",
                    "description": "The vehicle UUID to delete"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessResponse"
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_delete_vehicles`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nPermanently deletes a vehicle record.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_delete_vehicles"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_delete_vehicles`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_delete_vehicles`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/vehicle/excel": {
      "post": {
        "operationId": "exportVehicleExcel",
        "summary": "Download vehicles as Excel",
        "tags": [
          "Vehicles"
        ],
        "responses": {
          "200": {
            "description": "Excel file",
            "content": {
              "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_view_vehicles`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nGenerates an .xlsx spreadsheet of vehicles matching the filter criteria.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_vehicles"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_vehicles`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_vehicles`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/vehicle/filters": {
      "post": {
        "operationId": "getVehicleFilters",
        "summary": "Get vehicle filter options",
        "tags": [
          "Vehicles"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "customer_id": {
                    "type": "integer"
                  },
                  "user_id": {
                    "type": "integer"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessResponse"
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_view_vehicles` **or** `can_add_access_cards`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns a list of vehicles formatted for use in dropdown/filter UI components.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "any": [
                {
                  "permission": "can_view_vehicles"
                },
                {
                  "permission": "can_add_access_cards"
                }
              ]
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_vehicles` **or** `can_add_access_cards`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_vehicles` **ou** `can_add_access_cards`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/vehicle/inventory/list": {
      "post": {
        "operationId": "post_v1_vehicle_inventory_list",
        "summary": "Retrieve Vehicle Inventory",
        "tags": [
          "Vehicles"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_vehicles`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_vehicles"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_vehicles`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_vehicles`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/vehicle/list": {
      "post": {
        "operationId": "listVehicles",
        "summary": "List vehicles",
        "tags": [
          "Vehicles"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "page": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "page_limit": {
                    "type": "integer"
                  },
                  "search": {
                    "type": "string"
                  },
                  "customer_id": {
                    "type": "integer"
                  },
                  "user_id": {
                    "type": "integer"
                  },
                  "companies": {
                    "type": "array",
                    "items": {
                      "type": "integer"
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "count": {
                      "type": "integer"
                    },
                    "vehicles": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Vehicle"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_view_vehicles`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns a paginated list of vehicles. Supports filtering by license plate, customer, and make.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_vehicles"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_vehicles`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_vehicles`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/vehicle/load-profiles": {
      "post": {
        "operationId": "getVehicleLoadProfile",
        "summary": "Retrieve a vehicle load profile",
        "tags": [
          "Vehicles"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "profile_id"
                ],
                "properties": {
                  "profile_id": {
                    "type": "integer",
                    "format": "int64",
                    "minimum": 1
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful load-profile response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "profile": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/SnowVehicleLoadProfile"
                        }
                      ],
                      "nullable": true
                    },
                    "current_row_version": {
                      "type": "integer",
                      "format": "int64"
                    },
                    "current_load_profile_id": {
                      "type": "integer",
                      "nullable": true,
                      "format": "int64"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid request"
          },
          "409": {
            "description": "Optimistic version or lifecycle transition conflict"
          }
        },
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version."
      },
      "put": {
        "operationId": "createVehicleLoadProfileDraft",
        "summary": "Create a vehicle load-profile draft",
        "tags": [
          "Vehicles"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "vehicle_id",
                  "reason",
                  "profile"
                ],
                "properties": {
                  "vehicle_id": {
                    "type": "integer",
                    "format": "int64",
                    "minimum": 1
                  },
                  "reason": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 1000
                  },
                  "profile": {
                    "$ref": "#/components/schemas/SnowVehicleLoadProfileDraft"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful load-profile response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "profile": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/SnowVehicleLoadProfile"
                        }
                      ],
                      "nullable": true
                    },
                    "current_row_version": {
                      "type": "integer",
                      "format": "int64"
                    },
                    "current_load_profile_id": {
                      "type": "integer",
                      "nullable": true,
                      "format": "int64"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid request"
          },
          "409": {
            "description": "Optimistic version or lifecycle transition conflict"
          }
        },
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version."
      },
      "patch": {
        "operationId": "updateVehicleLoadProfileDraft",
        "summary": "Update a vehicle load-profile draft",
        "tags": [
          "Vehicles"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "profile_id",
                  "expected_row_version",
                  "reason",
                  "changes"
                ],
                "properties": {
                  "profile_id": {
                    "type": "integer",
                    "format": "int64",
                    "minimum": 1
                  },
                  "expected_row_version": {
                    "type": "integer",
                    "format": "int64",
                    "minimum": 0
                  },
                  "reason": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 1000
                  },
                  "changes": {
                    "$ref": "#/components/schemas/SnowVehicleLoadProfileDraft"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful load-profile response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "profile": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/SnowVehicleLoadProfile"
                        }
                      ],
                      "nullable": true
                    },
                    "current_row_version": {
                      "type": "integer",
                      "format": "int64"
                    },
                    "current_load_profile_id": {
                      "type": "integer",
                      "nullable": true,
                      "format": "int64"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid request"
          },
          "409": {
            "description": "Optimistic version or lifecycle transition conflict"
          }
        },
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version."
      }
    },
    "/v1/vehicle/load-profiles/approve": {
      "patch": {
        "operationId": "approveVehicleLoadProfile",
        "summary": "Approve a vehicle load-profile draft",
        "tags": [
          "Vehicles"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "profile_id",
                  "expected_row_version",
                  "reason"
                ],
                "properties": {
                  "profile_id": {
                    "type": "integer",
                    "format": "int64",
                    "minimum": 1
                  },
                  "expected_row_version": {
                    "type": "integer",
                    "format": "int64",
                    "minimum": 1
                  },
                  "reason": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 1000
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful load-profile response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "profile": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/SnowVehicleLoadProfile"
                        }
                      ],
                      "nullable": true
                    },
                    "current_row_version": {
                      "type": "integer",
                      "format": "int64"
                    },
                    "current_load_profile_id": {
                      "type": "integer",
                      "nullable": true,
                      "format": "int64"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid request"
          },
          "409": {
            "description": "Optimistic version or lifecycle transition conflict"
          }
        },
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version."
      }
    },
    "/v1/vehicle/load-profiles/history": {
      "post": {
        "operationId": "getVehicleLoadProfileHistory",
        "summary": "Retrieve vehicle load-profile history",
        "tags": [
          "Vehicles"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "profile_id"
                ],
                "properties": {
                  "profile_id": {
                    "type": "integer",
                    "format": "int64",
                    "minimum": 1
                  },
                  "cursor_id": {
                    "type": "integer",
                    "format": "int64",
                    "minimum": 0
                  },
                  "page_limit": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 100
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful load-profile response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "history": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/SnowVehicleLoadProfileHistoryEntry"
                      }
                    },
                    "next_cursor": {
                      "type": "integer",
                      "nullable": true,
                      "format": "int64"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid request"
          },
          "409": {
            "description": "Optimistic version or lifecycle transition conflict"
          }
        },
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version."
      }
    },
    "/v1/vehicle/load-profiles/list": {
      "post": {
        "operationId": "listVehicleLoadProfiles",
        "summary": "List versioned vehicle load profiles",
        "tags": [
          "Vehicles"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "vehicle_id"
                ],
                "properties": {
                  "vehicle_id": {
                    "type": "integer",
                    "format": "int64",
                    "minimum": 1
                  },
                  "cursor_id": {
                    "type": "integer",
                    "format": "int64",
                    "minimum": 0
                  },
                  "page_limit": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 100
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful load-profile response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "profiles": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/SnowVehicleLoadProfile"
                      }
                    },
                    "next_cursor": {
                      "type": "integer",
                      "nullable": true,
                      "format": "int64"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid request"
          },
          "409": {
            "description": "Optimistic version or lifecycle transition conflict"
          }
        },
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version."
      }
    },
    "/v1/vehicle/load-profiles/publish": {
      "patch": {
        "operationId": "publishVehicleLoadProfile",
        "summary": "Publish an approved vehicle load profile",
        "tags": [
          "Vehicles"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "profile_id",
                  "expected_row_version",
                  "reason"
                ],
                "properties": {
                  "profile_id": {
                    "type": "integer",
                    "format": "int64",
                    "minimum": 1
                  },
                  "expected_row_version": {
                    "type": "integer",
                    "format": "int64",
                    "minimum": 1
                  },
                  "reason": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 1000
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful load-profile response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "profile": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/SnowVehicleLoadProfile"
                        }
                      ],
                      "nullable": true
                    },
                    "current_row_version": {
                      "type": "integer",
                      "format": "int64"
                    },
                    "current_load_profile_id": {
                      "type": "integer",
                      "nullable": true,
                      "format": "int64"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid request"
          },
          "409": {
            "description": "Optimistic version or lifecycle transition conflict"
          }
        },
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version."
      }
    },
    "/v1/vehicle/load-profiles/reject": {
      "patch": {
        "operationId": "rejectVehicleLoadProfile",
        "summary": "Reject a vehicle load-profile draft",
        "tags": [
          "Vehicles"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "profile_id",
                  "expected_row_version",
                  "reason"
                ],
                "properties": {
                  "profile_id": {
                    "type": "integer",
                    "format": "int64",
                    "minimum": 1
                  },
                  "expected_row_version": {
                    "type": "integer",
                    "format": "int64",
                    "minimum": 1
                  },
                  "reason": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 1000
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful load-profile response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "profile": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/SnowVehicleLoadProfile"
                        }
                      ],
                      "nullable": true
                    },
                    "current_row_version": {
                      "type": "integer",
                      "format": "int64"
                    },
                    "current_load_profile_id": {
                      "type": "integer",
                      "nullable": true,
                      "format": "int64"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid request"
          },
          "409": {
            "description": "Optimistic version or lifecycle transition conflict"
          }
        },
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version."
      }
    },
    "/v1/vehicle/load-profiles/retire": {
      "patch": {
        "operationId": "retireVehicleLoadProfile",
        "summary": "Retire a published vehicle load profile",
        "tags": [
          "Vehicles"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "profile_id",
                  "expected_row_version",
                  "reason"
                ],
                "properties": {
                  "profile_id": {
                    "type": "integer",
                    "format": "int64",
                    "minimum": 1
                  },
                  "expected_row_version": {
                    "type": "integer",
                    "format": "int64",
                    "minimum": 1
                  },
                  "reason": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 1000
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful load-profile response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "profile": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/SnowVehicleLoadProfile"
                        }
                      ],
                      "nullable": true
                    },
                    "current_row_version": {
                      "type": "integer",
                      "format": "int64"
                    },
                    "current_load_profile_id": {
                      "type": "integer",
                      "nullable": true,
                      "format": "int64"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid request"
          },
          "409": {
            "description": "Optimistic version or lifecycle transition conflict"
          }
        },
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version."
      }
    },
    "/v1/vehicle/operational-profile": {
      "patch": {
        "operationId": "updateVehicleOperationalProfile",
        "summary": "Update truck or trailer operational data",
        "tags": [
          "Vehicles"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "vehicle_id",
                  "expected_version",
                  "reason",
                  "changes"
                ],
                "properties": {
                  "vehicle_id": {
                    "type": "integer",
                    "format": "int64",
                    "minimum": 1
                  },
                  "expected_version": {
                    "type": "integer",
                    "format": "int64",
                    "minimum": 0
                  },
                  "reason": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 1000
                  },
                  "changes": {
                    "type": "object",
                    "additionalProperties": false,
                    "minProperties": 1,
                    "properties": {
                      "asset_kind": {
                        "type": "string",
                        "enum": [
                          "legacy",
                          "truck",
                          "trailer",
                          "other"
                        ]
                      },
                      "parent_vehicle_id": {
                        "type": "integer",
                        "format": "int64",
                        "minimum": 1,
                        "nullable": true
                      },
                      "supplier_id": {
                        "type": "integer",
                        "format": "int64",
                        "minimum": 1,
                        "nullable": true
                      },
                      "default_tare_kg": {
                        "type": "string",
                        "pattern": "^(0|[1-9][0-9]{0,11})(\\.[0-9]{1,6})?$",
                        "nullable": true
                      },
                      "maximum_gross_kg": {
                        "type": "string",
                        "pattern": "^(0|[1-9][0-9]{0,11})(\\.[0-9]{1,6})?$",
                        "nullable": true
                      },
                      "operational_status": {
                        "type": "string",
                        "enum": [
                          "unknown",
                          "operational",
                          "maintenance",
                          "out_of_service",
                          "retired"
                        ]
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Updated operational vehicle",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "success",
                    "vehicle",
                    "current_version"
                  ],
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "vehicle": {
                      "$ref": "#/components/schemas/Vehicle"
                    },
                    "current_version": {
                      "type": "integer",
                      "format": "int64"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid truck, trailer, supplier, or exact weight data"
          },
          "401": {
            "description": "Authentication required or invalid session"
          },
          "403": {
            "description": "Vehicle update permission denied"
          },
          "404": {
            "description": "Vehicle not found"
          },
          "409": {
            "description": "Vehicle version conflict"
          },
          "500": {
            "description": "Vehicle operational update failed"
          }
        },
        "x-content-type-header-enforced": false,
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_vehicles"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_vehicles`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_vehicles`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        },
        "description": "### Required permissions\n\n- `can_edit_vehicles`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version."
      }
    },
    "/v1/work/billing/command": {
      "post": {
        "operationId": "post_v1_work_billing_command",
        "summary": "Execute append-only project billing command",
        "tags": [
          "Projects & Work Orders"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/work/billing/sources/query": {
      "post": {
        "operationId": "post_v1_work_billing_sources_query",
        "summary": "Query billable project-work sources for Sales",
        "tags": [
          "Projects & Work Orders"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_project_financials`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns only approved time and completed work-order lines with remaining billable quantity.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_project_financials"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_project_financials`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_project_financials`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/work/my-work/query": {
      "post": {
        "operationId": "post_v1_work_my-work_query",
        "summary": "Retrieve work assigned to the signed-in user",
        "tags": [
          "Projects & Work Orders"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_projects`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_projects"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_projects`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_projects`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/work/order/command": {
      "post": {
        "operationId": "post_v1_work_order_command",
        "summary": "Execute idempotent work-order command",
        "tags": [
          "Projects & Work Orders"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/work/orders/query": {
      "post": {
        "operationId": "post_v1_work_orders_query",
        "summary": "Query work orders",
        "tags": [
          "Projects & Work Orders"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_work_orders`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns a stable dispatch queue, KPIs, and facets.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_work_orders"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_work_orders`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_work_orders`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/work/orders/{id}/documents": {
      "post": {
        "operationId": "post_v1_work_orders_{id}_documents",
        "summary": "Upload evidence to one work order",
        "tags": [
          "Projects & Work Orders"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9]+$"
            }
          }
        ],
        "description": "### Required permissions\n\n- `can_manage_work_orders`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_manage_work_orders"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_manage_work_orders`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_manage_work_orders`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "put": {
        "operationId": "put_v1_work_orders_{id}_documents",
        "summary": "Upload evidence to one work order (legacy multipart compatibility)",
        "tags": [
          "Projects & Work Orders"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9]+$"
            }
          }
        ],
        "description": "### Required permissions\n\n- `can_manage_work_orders`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_manage_work_orders"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_manage_work_orders`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_manage_work_orders`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/work/orders/{id}/documents/{param}/download": {
      "get": {
        "operationId": "get_v1_work_orders_{id}_documents_{param}_download",
        "summary": "Download evidence from one work order",
        "tags": [
          "Projects & Work Orders"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9]+$"
            }
          },
          {
            "name": "param",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9]+$"
            }
          }
        ],
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_work_orders"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_work_orders`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_work_orders`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        },
        "description": "### Required permissions\n\n- `can_view_work_orders`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version."
      }
    },
    "/v1/work/orders/{id}/workspace": {
      "post": {
        "operationId": "post_v1_work_orders_{id}_workspace",
        "summary": "Retrieve one work-order workspace",
        "tags": [
          "Projects & Work Orders"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_work_orders`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns the selected order with its checklist, billable lines,\nbilling totals, and bounded activity in one inspector query.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9]+$"
            }
          }
        ],
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_work_orders"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_work_orders`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_work_orders`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/work/project/command": {
      "post": {
        "operationId": "executeWorkProjectCommand",
        "summary": "Execute idempotent project command",
        "tags": [
          "Projects & Work Orders"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WorkProjectCommandRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Updated project or project member",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WorkProjectCommandResponse"
                }
              }
            }
          },
          "201": {
            "description": "Created project or project member",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WorkProjectCommandResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid command, payload, project type, operation_data, snow site, idempotency key, or version",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WorkApiErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required or invalid session"
          },
          "403": {
            "description": "Project permission or company scope denied"
          },
          "404": {
            "description": "Project or project member not found"
          },
          "409": {
            "description": "Version, state, idempotency, or concurrent-command conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WorkApiErrorResponse"
                }
              }
            }
          },
          "503": {
            "description": "Work-command database unavailable"
          }
        },
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Required here or as idempotency_key in the JSON body for every project command.",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 255
            }
          },
          {
            "name": "If-Match",
            "in": "header",
            "required": false,
            "description": "Expected project version for every command except create. A positive expected_version in the JSON body takes precedence; otherwise this header is used.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "x-required-one-of": [
          {
            "in": "header",
            "name": "Idempotency-Key"
          },
          {
            "in": "body",
            "name": "idempotency_key"
          }
        ],
        "x-version-required-one-of": {
          "commands": [
            "update",
            "set_status",
            "archive",
            "restore",
            "add_member",
            "update_member",
            "remove_member"
          ],
          "sources": [
            {
              "in": "header",
              "name": "If-Match"
            },
            {
              "in": "body",
              "name": "expected_version"
            }
          ],
          "precedence": "A positive body expected_version wins; otherwise If-Match is used."
        },
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version."
      }
    },
    "/v1/work/projects/query": {
      "post": {
        "operationId": "queryWorkProjects",
        "summary": "Query projects",
        "tags": [
          "Projects & Work Orders"
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WorkProjectQueryRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Filtered project portfolio, summary, facets, and cursor",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WorkProjectQueryResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid filter, cursor, project type, or query failure",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WorkApiErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required or invalid session"
          },
          "403": {
            "description": "Project-view permission denied"
          }
        },
        "description": "### Required permissions\n\n- `can_view_projects`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns a stable project portfolio page, aggregate KPIs, and facets.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_projects"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_projects`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_projects`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/work/projects/{id}/workspace": {
      "post": {
        "operationId": "post_v1_work_projects_{id}_workspace",
        "summary": "Retrieve one project workspace tab",
        "tags": [
          "Projects & Work Orders"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_projects`\n\nThe following checks depend on the action, filters or requested resource; they are not all required for every request:\n\n- `can_view_project_time`, `can_view_work_orders`, `can_view_project_financials`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns the stable project header and only the requested tab payload.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9]+$"
            }
          }
        ],
        "x-lexoh-permissions": {
          "status": "conditional",
          "required": [
            {
              "permission": "can_view_projects"
            }
          ],
          "conditional": [
            {
              "checked": [
                "can_view_project_time",
                "can_view_work_orders",
                "can_view_project_financials"
              ]
            }
          ],
          "description": {
            "en": "- `can_view_projects`\n\nThe following checks depend on the action, filters or requested resource; they are not all required for every request:\n\n- `can_view_project_time`, `can_view_work_orders`, `can_view_project_financials`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_projects`\n\nLes vérifications suivantes dépendent de l’action, des filtres ou de la ressource demandée; elles ne sont pas toutes requises pour chaque requête :\n\n- `can_view_project_time`, `can_view_work_orders`, `can_view_project_financials`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/work/task/command": {
      "post": {
        "operationId": "post_v1_work_task_command",
        "summary": "Execute idempotent project-task command",
        "tags": [
          "Projects & Work Orders"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/work/tasks/query": {
      "post": {
        "operationId": "post_v1_work_tasks_query",
        "summary": "Query human project tasks",
        "tags": [
          "Projects & Work Orders"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_projects`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns the bounded task list or Kanban board, aggregate KPIs,\nfacets, and a stable cursor from one shared server filter contract.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_projects"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_projects`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_projects`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/work/tasks/{id}/workspace": {
      "post": {
        "operationId": "post_v1_work_tasks_{id}_workspace",
        "summary": "Retrieve one project task workspace tab",
        "tags": [
          "Projects & Work Orders"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_projects`\n\nThe following checks depend on the action, filters or requested resource; they are not all required for every request:\n\n- `can_view_project_time`, `can_view_work_orders`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns a stable task header plus only the selected inspector tab.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9]+$"
            }
          }
        ],
        "x-lexoh-permissions": {
          "status": "conditional",
          "required": [
            {
              "permission": "can_view_projects"
            }
          ],
          "conditional": [
            {
              "checked": [
                "can_view_project_time",
                "can_view_work_orders"
              ]
            }
          ],
          "description": {
            "en": "- `can_view_projects`\n\nThe following checks depend on the action, filters or requested resource; they are not all required for every request:\n\n- `can_view_project_time`, `can_view_work_orders`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_projects`\n\nLes vérifications suivantes dépendent de l’action, des filtres ou de la ressource demandée; elles ne sont pas toutes requises pour chaque requête :\n\n- `can_view_project_time`, `can_view_work_orders`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/work/team/command": {
      "post": {
        "operationId": "executeSnowTeamCommand",
        "summary": "Execute idempotent snow-operation team command",
        "tags": [
          "Projects & Work Orders"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "command"
                ],
                "properties": {
                  "command": {
                    "type": "string",
                    "enum": [
                      "create_team",
                      "update_team",
                      "archive_team",
                      "create_assignment",
                      "update_assignment",
                      "cancel_assignment"
                    ]
                  },
                  "idempotency_key": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 255
                  },
                  "reason": {
                    "type": "string"
                  },
                  "entity_id": {
                    "oneOf": [
                      {
                        "type": "integer",
                        "format": "int64",
                        "minimum": 0
                      },
                      {
                        "type": "string",
                        "pattern": "^(0|[1-9][0-9]*)$"
                      }
                    ]
                  },
                  "project_id": {
                    "oneOf": [
                      {
                        "type": "integer",
                        "format": "int64",
                        "minimum": 0
                      },
                      {
                        "type": "string",
                        "pattern": "^(0|[1-9][0-9]*)$"
                      }
                    ]
                  },
                  "expected_version": {
                    "oneOf": [
                      {
                        "type": "integer",
                        "format": "int64",
                        "minimum": 0
                      },
                      {
                        "type": "string",
                        "pattern": "^(0|[1-9][0-9]*)$"
                      }
                    ]
                  },
                  "payload": {
                    "anyOf": [
                      {
                        "$ref": "#/components/schemas/SnowTeamPayload"
                      },
                      {
                        "$ref": "#/components/schemas/SnowTeamAssignmentPayload"
                      }
                    ]
                  }
                },
                "oneOf": [
                  {
                    "required": [
                      "command",
                      "project_id",
                      "payload"
                    ],
                    "properties": {
                      "command": {
                        "type": "string",
                        "enum": [
                          "create_team"
                        ]
                      },
                      "project_id": {
                        "oneOf": [
                          {
                            "type": "integer",
                            "format": "int64",
                            "minimum": 1
                          },
                          {
                            "type": "string",
                            "pattern": "^[1-9][0-9]*$"
                          }
                        ]
                      },
                      "payload": {
                        "allOf": [
                          {
                            "$ref": "#/components/schemas/SnowTeamPayload"
                          },
                          {
                            "type": "object",
                            "required": [
                              "name",
                              "effective_from"
                            ],
                            "properties": {
                              "name": {
                                "type": "string",
                                "minLength": 1
                              },
                              "effective_from": {
                                "type": "string",
                                "format": "date-time",
                                "minLength": 1
                              }
                            }
                          }
                        ]
                      }
                    }
                  },
                  {
                    "required": [
                      "command",
                      "entity_id"
                    ],
                    "properties": {
                      "command": {
                        "type": "string",
                        "enum": [
                          "update_team"
                        ]
                      },
                      "entity_id": {
                        "oneOf": [
                          {
                            "type": "integer",
                            "format": "int64",
                            "minimum": 1
                          },
                          {
                            "type": "string",
                            "pattern": "^[1-9][0-9]*$"
                          }
                        ]
                      },
                      "expected_version": {
                        "oneOf": [
                          {
                            "type": "integer",
                            "format": "int64",
                            "minimum": 1
                          },
                          {
                            "type": "string",
                            "pattern": "^[1-9][0-9]*$"
                          }
                        ]
                      },
                      "payload": {
                        "$ref": "#/components/schemas/SnowTeamPayload"
                      }
                    }
                  },
                  {
                    "required": [
                      "command",
                      "entity_id"
                    ],
                    "properties": {
                      "command": {
                        "type": "string",
                        "enum": [
                          "archive_team"
                        ]
                      },
                      "entity_id": {
                        "oneOf": [
                          {
                            "type": "integer",
                            "format": "int64",
                            "minimum": 1
                          },
                          {
                            "type": "string",
                            "pattern": "^[1-9][0-9]*$"
                          }
                        ]
                      },
                      "expected_version": {
                        "oneOf": [
                          {
                            "type": "integer",
                            "format": "int64",
                            "minimum": 1
                          },
                          {
                            "type": "string",
                            "pattern": "^[1-9][0-9]*$"
                          }
                        ]
                      },
                      "payload": {
                        "$ref": "#/components/schemas/SnowTeamPayload"
                      }
                    }
                  },
                  {
                    "required": [
                      "command",
                      "payload"
                    ],
                    "properties": {
                      "command": {
                        "type": "string",
                        "enum": [
                          "create_assignment"
                        ]
                      },
                      "expected_version": {
                        "oneOf": [
                          {
                            "type": "integer",
                            "format": "int64",
                            "minimum": 1
                          },
                          {
                            "type": "string",
                            "pattern": "^[1-9][0-9]*$"
                          }
                        ]
                      },
                      "payload": {
                        "allOf": [
                          {
                            "$ref": "#/components/schemas/SnowTeamAssignmentPayload"
                          },
                          {
                            "type": "object",
                            "required": [
                              "truck_vehicle_id",
                              "effective_from",
                              "effective_until"
                            ]
                          }
                        ]
                      }
                    },
                    "anyOf": [
                      {
                        "required": [
                          "entity_id"
                        ],
                        "properties": {
                          "entity_id": {
                            "oneOf": [
                              {
                                "type": "integer",
                                "format": "int64",
                                "minimum": 1
                              },
                              {
                                "type": "string",
                                "pattern": "^[1-9][0-9]*$"
                              }
                            ]
                          }
                        }
                      },
                      {
                        "properties": {
                          "payload": {
                            "type": "object",
                            "required": [
                              "project_team_id"
                            ],
                            "properties": {
                              "project_team_id": {
                                "oneOf": [
                                  {
                                    "type": "integer",
                                    "format": "int64",
                                    "minimum": 1
                                  },
                                  {
                                    "type": "string",
                                    "pattern": "^[1-9][0-9]*$"
                                  }
                                ]
                              }
                            }
                          }
                        }
                      }
                    ]
                  },
                  {
                    "required": [
                      "command",
                      "entity_id"
                    ],
                    "properties": {
                      "command": {
                        "type": "string",
                        "enum": [
                          "update_assignment"
                        ]
                      },
                      "entity_id": {
                        "oneOf": [
                          {
                            "type": "integer",
                            "format": "int64",
                            "minimum": 1
                          },
                          {
                            "type": "string",
                            "pattern": "^[1-9][0-9]*$"
                          }
                        ]
                      },
                      "expected_version": {
                        "oneOf": [
                          {
                            "type": "integer",
                            "format": "int64",
                            "minimum": 1
                          },
                          {
                            "type": "string",
                            "pattern": "^[1-9][0-9]*$"
                          }
                        ]
                      },
                      "payload": {
                        "$ref": "#/components/schemas/SnowTeamAssignmentPayload"
                      }
                    }
                  },
                  {
                    "required": [
                      "command",
                      "entity_id"
                    ],
                    "properties": {
                      "command": {
                        "type": "string",
                        "enum": [
                          "cancel_assignment"
                        ]
                      },
                      "entity_id": {
                        "oneOf": [
                          {
                            "type": "integer",
                            "format": "int64",
                            "minimum": 1
                          },
                          {
                            "type": "string",
                            "pattern": "^[1-9][0-9]*$"
                          }
                        ]
                      },
                      "expected_version": {
                        "oneOf": [
                          {
                            "type": "integer",
                            "format": "int64",
                            "minimum": 1
                          },
                          {
                            "type": "string",
                            "pattern": "^[1-9][0-9]*$"
                          }
                        ]
                      },
                      "payload": {
                        "$ref": "#/components/schemas/SnowTeamAssignmentPayload"
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Updated team or assignment",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SnowTeamCommandResponse"
                }
              }
            }
          },
          "201": {
            "description": "Created team or assignment",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SnowTeamCommandResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid team command or payload"
          },
          "401": {
            "description": "Authentication required or invalid session"
          },
          "403": {
            "description": "Project-team permission or company scope denied"
          },
          "404": {
            "description": "Team or assignment not found"
          },
          "409": {
            "description": "Version, project scope, overlap, or idempotency conflict"
          },
          "503": {
            "description": "Work-command database unavailable"
          }
        },
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Required here or as idempotency_key in the JSON body.",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 255
            }
          },
          {
            "name": "If-Match",
            "in": "header",
            "required": false,
            "description": "Expected entity/team version for every command except create_team. A positive expected_version in the JSON body takes precedence; otherwise this header is used.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "x-required-one-of": [
          {
            "in": "header",
            "name": "Idempotency-Key"
          },
          {
            "in": "body",
            "name": "idempotency_key"
          }
        ],
        "x-version-required-one-of": {
          "commands": [
            "update_team",
            "archive_team",
            "create_assignment",
            "update_assignment",
            "cancel_assignment"
          ],
          "sources": [
            {
              "in": "header",
              "name": "If-Match"
            },
            {
              "in": "body",
              "name": "expected_version"
            }
          ],
          "precedence": "A positive body expected_version wins; otherwise If-Match is used."
        },
        "x-content-type-header-enforced": false,
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version."
      }
    },
    "/v1/work/time/command": {
      "post": {
        "operationId": "post_v1_work_time_command",
        "summary": "Execute idempotent time-entry command",
        "tags": [
          "Projects & Work Orders"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\nThe exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "unresolved",
          "required": [],
          "conditional": [],
          "description": {
            "en": "The exact permissions for this operation are not yet confirmed in this reference. Confirm the role requirements with Lexoh; this does not mean access is public.\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "Les permissions exactes de cette opération ne sont pas encore confirmées dans cette référence. Vérifiez les droits du rôle auprès de Lexoh; cela ne signifie pas que l’accès est public.\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/work/time/query": {
      "post": {
        "operationId": "post_v1_work_time_query",
        "summary": "Query project time entries",
        "tags": [
          "Projects & Work Orders"
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "description": "### Required permissions\n\n- `can_view_project_time`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns a bounded timesheet, approval and billing KPIs, facets,\nand a stable date/id cursor from one optimized database query.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_project_time"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_project_time`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_project_time`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/zone": {
      "post": {
        "operationId": "getZone",
        "summary": "Retrieve a zone",
        "tags": [
          "Zones"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "id"
                ],
                "properties": {
                  "id": {
                    "type": "integer",
                    "description": "The zone UUID"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "zone": {
                      "$ref": "#/components/schemas/Zone"
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_view_zones`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nFetches a single parking zone by ID, including capacity, current occupancy, and linked devices.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_zones"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_zones`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_zones`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "put": {
        "operationId": "createZone",
        "summary": "Create a new zone",
        "tags": [
          "Zones"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "name"
                ],
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "description": {
                    "type": "string"
                  },
                  "status": {
                    "type": "boolean"
                  },
                  "color": {
                    "type": "string"
                  },
                  "points": {
                    "type": "string"
                  },
                  "currently_inside": {
                    "type": "integer"
                  },
                  "inside_offset": {
                    "type": "integer"
                  },
                  "max_inside": {
                    "type": "integer"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "zone": {
                      "$ref": "#/components/schemas/Zone"
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_add_zones`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nCreates a new parking zone with capacity, pricing rules, and device assignments.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_add_zones"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_add_zones`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_add_zones`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "patch": {
        "operationId": "updateZone",
        "summary": "Update a zone",
        "tags": [
          "Zones"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "id"
                ],
                "properties": {
                  "id": {
                    "type": "integer",
                    "description": "The zone UUID to update"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "zone": {
                      "$ref": "#/components/schemas/Zone"
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_edit_zones`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nUpdates zone properties like name, capacity, or pricing rules.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_edit_zones"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_edit_zones`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_edit_zones`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      },
      "delete": {
        "operationId": "deleteZone",
        "summary": "Delete a zone",
        "tags": [
          "Zones"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "id"
                ],
                "properties": {
                  "id": {
                    "type": "integer",
                    "description": "The zone UUID to delete"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessResponse"
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_delete_zones`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nPermanently deletes a parking zone. Devices linked to this zone will be unassigned.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_delete_zones"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_delete_zones`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_delete_zones`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/zone/availability": {
      "post": {
        "operationId": "getZoneAvailability",
        "summary": "Get zone availability",
        "tags": [
          "Zones"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "id"
                ],
                "properties": {
                  "id": {
                    "type": "integer"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Zone availability",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "zone_id": {
                      "type": "integer"
                    },
                    "availability": {
                      "type": "integer"
                    },
                    "currently_inside": {
                      "type": "integer"
                    },
                    "max_inside": {
                      "type": "integer"
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_view_zones`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns real-time availability for each zone: total spots, occupied spots, and available spots.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_zones"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_zones`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_zones`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/zone/filters": {
      "post": {
        "operationId": "getZoneFilters",
        "summary": "Get zone filter options",
        "tags": [
          "Zones"
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "count": {
                      "type": "integer"
                    },
                    "zones": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/FilterItem"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_view_zones`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns a list of zones formatted for use in dropdown/filter UI components.\n\nRequest fields are not yet specified in this reference. Obtain the request contract for your installed version from Lexoh before integrating this operation.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_zones"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_zones`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_zones`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    },
    "/v1/zone/list": {
      "post": {
        "operationId": "listZones",
        "summary": "List zones",
        "tags": [
          "Zones"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "page": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "page_limit": {
                    "type": "integer"
                  },
                  "search": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "count": {
                      "type": "integer"
                    },
                    "zones": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Zone"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "description": "### Required permissions\n\n- `can_view_zones`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.\n\nReturns a paginated list of all parking zones with their current occupancy.",
        "x-lexoh-permissions": {
          "status": "explicit",
          "required": [
            {
              "permission": "can_view_zones"
            }
          ],
          "conditional": [],
          "description": {
            "en": "- `can_view_zones`\n\nAuthentication, MFA and resource/company-scope restrictions still apply. Additional rules may depend on your installed version.",
            "fr": "- `can_view_zones`\n\nL’authentification, la MFA et les restrictions de portée ou d’entreprise restent applicables. Des règles supplémentaires peuvent dépendre de votre version."
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "AccessCard": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "user_id": {
            "type": "integer"
          },
          "customer_id": {
            "type": "integer"
          },
          "username": {
            "type": "string"
          },
          "totp": {
            "type": "string"
          },
          "status": {
            "type": "boolean"
          },
          "type": {
            "type": "integer",
            "enum": [
              0,
              1,
              2,
              3,
              10,
              11
            ],
            "description": "0 = Dynamic QR, 1 = Static QR, 2 = Barcode, 3 = Debit / physical card, 10 = License plate / auto-created, 11 = Lost ticket"
          },
          "max_entrance": {
            "type": "integer"
          },
          "zones": {
            "type": "array",
            "items": {
              "type": "integer"
            }
          },
          "creation_date": {
            "type": "string"
          },
          "validation_date": {
            "type": "string"
          },
          "expiration_date": {
            "type": "string"
          },
          "last_use_date": {
            "type": "string"
          },
          "between_hours_start": {
            "type": "string"
          },
          "between_hours_end": {
            "type": "string"
          },
          "allow_monday": {
            "type": "boolean"
          },
          "allow_tuesday": {
            "type": "boolean"
          },
          "allow_wednesday": {
            "type": "boolean"
          },
          "allow_thursday": {
            "type": "boolean"
          },
          "allow_friday": {
            "type": "boolean"
          },
          "allow_saturday": {
            "type": "boolean"
          },
          "allow_sunday": {
            "type": "boolean"
          },
          "one_time_only": {
            "type": "boolean"
          },
          "locale": {
            "type": "string"
          },
          "has_subscription": {
            "type": "boolean"
          }
        }
      },
      "Alert": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "device_id": {
            "type": "integer"
          },
          "customer_id": {
            "type": "integer"
          },
          "user_id": {
            "type": "integer"
          },
          "type": {
            "type": "integer",
            "enum": [
              1,
              2,
              3,
              4,
              5,
              6,
              7,
              8,
              9,
              10,
              11,
              12,
              13,
              14,
              15,
              16,
              17,
              18,
              19,
              20,
              21,
              22,
              23,
              24,
              25,
              26,
              27,
              28,
              29,
              30,
              31,
              32,
              33,
              34,
              35
            ],
            "description": "1 = Device disconnected, 2 = Device connected, 3 = High temperature, 4 = Low temperature, 5 = Device presence blocked, 6 = Device presence cleared, 7 = Printer Offline, 8 = Printer Online, 9 = Printer Missing Paper, 10 = Printer Paper OK, 11 = Printer Paper Near End, 12 = Barrier Communication Error, 13 = Barrier Operational Error, 14 = Barrier OK, 15 = Device altered, 16 = Device security blocked, 17 = Device security cleared, 18 = Device confirmation blocked, 19 = Device confirmation cleared, 20 = Device kiosk door opened, 21 = Device kiosk door closed, 22 = Device tailgating detected, 23 = High packet drops, 24 = Packet drops cleared, 25 = High latency, 26 = Latency cleared, 27 = High download speed, 28 = Download speed cleared, 29 = High upload speed, 30 = Upload speed cleared, 31 = Temperature cleared, 32 = Low download speed, 33 = Low download speed cleared, 34 = Low upload speed, 35 = Low upload speed cleared"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "date_at": {
            "type": "string"
          }
        }
      },
      "Camera": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "name": {
            "type": "string"
          },
          "secret": {
            "type": "string"
          },
          "zone_id": {
            "type": "integer"
          },
          "type": {
            "type": "integer",
            "description": "Camera connection type (frontend-defined)"
          },
          "path": {
            "type": "string"
          },
          "username": {
            "type": "string"
          },
          "password": {
            "type": "string"
          },
          "showtext": {
            "type": "boolean"
          },
          "textpositionx": {
            "type": "integer"
          },
          "textpositiony": {
            "type": "integer"
          },
          "textboxpadding": {
            "type": "integer"
          },
          "textboxopacity": {
            "type": "number"
          },
          "fontsize": {
            "type": "integer"
          },
          "width": {
            "type": "integer"
          },
          "height": {
            "type": "integer"
          },
          "maxfps": {
            "type": "integer"
          },
          "maxrate": {
            "type": "integer"
          },
          "buffersize": {
            "type": "integer"
          },
          "audio": {
            "type": "boolean"
          },
          "reolink": {
            "type": "boolean"
          },
          "ptz": {
            "type": "boolean"
          },
          "detection_zones": {
            "type": "string"
          },
          "blackout_zones": {
            "type": "string"
          },
          "counter_lines": {
            "type": "string"
          }
        }
      },
      "CameraEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "event_id": {
            "type": "string"
          },
          "camera_id": {
            "type": "integer"
          },
          "monitorid": {
            "type": "string"
          },
          "data": {
            "type": "string"
          },
          "start_time": {
            "type": "string"
          },
          "end_time": {
            "type": "string"
          },
          "label": {
            "type": "string"
          },
          "score": {
            "type": "string"
          },
          "ongoing": {
            "type": "boolean"
          },
          "summary": {
            "type": "string"
          },
          "summary_fr": {
            "type": "string"
          },
          "thumbnail": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "Company": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "status": {
            "type": "boolean"
          },
          "creation_date": {
            "type": "string"
          },
          "max_entrance": {
            "type": "integer"
          },
          "bad_cycles": {
            "type": "integer"
          }
        }
      },
      "Config": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "name": {
            "type": "string"
          },
          "value": {
            "type": "string"
          },
          "category": {
            "type": "string"
          }
        }
      },
      "CreditCard": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "customer_id": {
            "type": "integer"
          },
          "token": {
            "type": "string"
          },
          "expiration_year": {
            "type": "integer"
          },
          "expiration_month": {
            "type": "integer"
          },
          "masked_pan": {
            "type": "string"
          },
          "brand": {
            "type": "string"
          },
          "deleted": {
            "type": "boolean"
          }
        }
      },
      "Customer": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "name": {
            "type": "string"
          },
          "email": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "license_plate": {
            "type": "string"
          },
          "address": {
            "type": "string"
          },
          "status": {
            "type": "boolean"
          },
          "locale": {
            "type": "string"
          },
          "creation_date": {
            "type": "string"
          },
          "last_seen_date": {
            "type": "string"
          }
        }
      },
      "Device": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "name": {
            "type": "string"
          },
          "brand": {
            "type": "string"
          },
          "model": {
            "type": "string"
          },
          "zone_id": {
            "type": "integer"
          },
          "sub_zones": {
            "type": "array",
            "items": {
              "type": "integer"
            }
          },
          "type": {
            "type": "string"
          },
          "ipaddr": {
            "type": "string"
          },
          "macaddr": {
            "type": "string"
          },
          "serial_number": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "state": {
            "type": "string"
          },
          "present": {
            "type": "boolean"
          },
          "door_open": {
            "type": "boolean"
          },
          "security": {
            "type": "boolean"
          },
          "exit": {
            "type": "boolean"
          },
          "creation_date": {
            "type": "string"
          },
          "last_seen_date": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "hostname": {
            "type": "string"
          },
          "port": {
            "type": "string"
          },
          "serverurl": {
            "type": "string"
          },
          "barrier_type": {
            "type": "integer",
            "enum": [
              0,
              1,
              2,
              3,
              4
            ],
            "description": "0 = None, 1 = ELKA, 2 = AutomaticSystems, 3 = Waveshare Modbus, 4 = Lexoh Modbus 2.0 (ZLAN)"
          },
          "elka_settings": {
            "type": "string"
          },
          "relay_settings": {
            "type": "string"
          },
          "latitude": {
            "type": "number"
          },
          "longitude": {
            "type": "number"
          },
          "icon": {
            "type": "integer",
            "description": "Device icon index (frontend-defined)"
          },
          "camera_id": {
            "type": "integer"
          },
          "printer_statuses": {
            "type": "string"
          },
          "cpu_temperature": {
            "type": "number"
          },
          "ping_latency_ms": {
            "type": "integer"
          },
          "allow_offline": {
            "type": "boolean"
          },
          "open_offline": {
            "type": "boolean"
          },
          "enable_uhf": {
            "type": "boolean"
          },
          "has_printer": {
            "type": "boolean"
          },
          "show_close_device_button": {
            "type": "boolean"
          },
          "site_id": {
            "type": "integer"
          },
          "lane_code": {
            "type": "string",
            "nullable": true
          },
          "lane_direction": {
            "type": "string",
            "enum": [
              "entry",
              "exit",
              "bidirectional"
            ],
            "nullable": true
          },
          "operational_status": {
            "type": "string",
            "enum": [
              "unknown",
              "operational",
              "degraded",
              "maintenance",
              "offline",
              "disabled"
            ]
          },
          "maintenance_until": {
            "type": "string",
            "nullable": true
          },
          "config_version": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          },
          "parent_device_id": {
            "type": "integer",
            "nullable": true
          },
          "native_unit_id": {
            "type": "integer",
            "nullable": true
          },
          "metrology_status": {
            "type": "string",
            "enum": [
              "not_applicable",
              "unknown",
              "valid",
              "due",
              "expired",
              "suspended"
            ]
          },
          "last_calibrated_at": {
            "type": "string",
            "nullable": true
          },
          "calibration_valid_until": {
            "type": "string",
            "nullable": true
          },
          "calibration_document_id": {
            "type": "integer",
            "nullable": true
          },
          "calibration_certificate_reference": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "Entry": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "access_card_id": {
            "type": "integer"
          },
          "user_id": {
            "type": "integer"
          },
          "customer_id": {
            "type": "integer"
          },
          "enter_device_id": {
            "type": "integer"
          },
          "exit_device_id": {
            "type": "integer"
          },
          "zone_id": {
            "type": "integer"
          },
          "enter_date_at": {
            "type": "string"
          },
          "exit_date_at": {
            "type": "string"
          },
          "total_duration": {
            "type": "integer"
          },
          "subtotal": {
            "type": "number"
          },
          "tax1": {
            "type": "number"
          },
          "tax1_name": {
            "type": "string"
          },
          "tax2": {
            "type": "number"
          },
          "tax2_name": {
            "type": "string"
          },
          "total_price": {
            "type": "number"
          },
          "transaction_id": {
            "type": "integer"
          },
          "payment_required": {
            "type": "boolean"
          },
          "paid": {
            "type": "boolean"
          },
          "paid_amount": {
            "type": "number"
          },
          "calculation_data": {
            "type": "string"
          }
        }
      },
      "Event": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "device_id": {
            "type": "integer"
          },
          "customer_id": {
            "type": "integer"
          },
          "user_id": {
            "type": "integer"
          },
          "access_card_id": {
            "type": "integer"
          },
          "zone_id": {
            "type": "integer"
          },
          "price_id": {
            "type": "integer"
          },
          "type": {
            "type": "integer",
            "description": "Reserved (currently always 0)"
          },
          "category": {
            "type": "integer",
            "enum": [
              0,
              1,
              2,
              3,
              4,
              5,
              6,
              7,
              8,
              9,
              10,
              11,
              12,
              13
            ],
            "description": "0 = Access, 1 = Entry, 2 = Device, 3 = User, 4 = Customer, 5 = System, 6 = Transaction, 7 = Other, 8 = Validation, 9 = Company, 10 = Role, 11 = Schedule, 12 = Portal, 13 = Call"
          },
          "subcategory": {
            "type": "integer",
            "description": "Depends on category. Access: 0=Created, 1=Updated, 2=Deleted, 3=Other, 4=Lost Ticket, 5=Opened Remotely. Entry: 0=Entry, 1=Exit, 2=Customer Entered, 3=Customer Exited, 4=User Entered, 5=User Exited, 6=Guest Entered, 7=Guest Exited. Device: 0=Connected, 1=Disconnected, 2=Error, 3=Warning, 4=Info, 5=Printer Online, 6=Printer Offline, 7=Printer Missing Paper, 8=Printer Paper OK, 9=Printer Paper Near End, 10=Barrier Communication Error, 11=Barrier Operational Error, 12=Barrier OK, 13=Device Presence Set, 14=Device Presence Cleared, 15=Other, 16=Restart Sent, 17=Open Signal Sent, 18=Close Signal Sent, 19=Keep Open Signal Sent, 20=State Opening, 21=State Closing, 22=State Opened, 23=State Closed, 24=State Blocked, 25=State Error, 26=Pin State Changed, 27=Reboot Sent, 28=Ticket Lost Signal Sent, 29=Device Security Set, 30=Device Security Cleared, 31=Device Input Set, 32=Device Input Cleared, 33=Device Analog Value Changed, 34=Device Confirmation Set, 35=Device Confirmation Cleared, 36=Device Door Opened, 37=Device Door Closed, 38=OSDP Connected, 39=OSDP Disconnected. User: 0=Created, 1=Updated, 2=Deleted, 3=Password Changed, 4=Password Reset, 5=Locked Out, 6=Unlocked, 7=Other, 8=Login Success, 9=Login Failed, 10=2FA Enabled, 11=2FA Disabled, 12=API Key Created, 13=API Key Revoked, 14=Session Revoked, 15=Session Revoked All. Customer: 0=Created, 1=Updated, 2=Deleted, 3=Other. System: 0=Backup Created, 1=Restore Completed, 2=Configuration Changed, 3=Software Updated, 4=Other. Transaction: 0=Created, 1=Updated, 2=Deleted, 3=Refunded, 4=Other. Other: 0=General, 1=Other. Validation: 0=Started, 1=Completed, 2=Failed, 3=Other, 4=Cancelled, 5=Timeout, 6=Granted, 7=Declined, 8=Expired, 9=Max Entrances Reached, 10=No Entrance Entry, 11=Not Allowed In Timeframe, 12=Not Allowed In Zone, 13=Failed To Retrieve Access Card, 14=Cannot Validate Card, 15=Does Not Exists, 16=Validation Failed, 17=Customer Inactive, 18=Access Card Inactive, 19=User Inactive, 20=Too Many Attempts, 21=Card Scanned, 22=Coupon Scanned, 23=Pin Code Entered, 24=Invalid State, 25=Staff Entered, 26=Staff Exited, 27=Customer Entered, 28=Customer Exited, 29=Guest Entered, 30=Guest Exited, 31=Company Inactive, 32=Company Max Entrances Reached, 33=Presence Missing. Company: 0=Created, 1=Updated, 2=Deleted, 3=Other. Role: 0=Created, 1=Updated, 2=Deleted, 3=Other. Schedule: 0=Created, 1=Updated, 2=Deleted, 3=Other."
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "data": {
            "type": "string"
          },
          "date_at": {
            "type": "string"
          }
        }
      },
      "Holiday": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "name": {
            "type": "string"
          },
          "rule_type": {
            "type": "string"
          },
          "rule_expression": {
            "type": "string"
          },
          "move_to_monday": {
            "type": "boolean"
          },
          "status": {
            "type": "boolean"
          },
          "next_occurrence": {
            "type": "string"
          }
        }
      },
      "Price": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "status": {
            "type": "boolean"
          },
          "creation_date": {
            "type": "string"
          },
          "type": {
            "type": "integer",
            "enum": [
              0,
              1,
              2
            ],
            "description": "0 = Fixed, 1 = Time of day, 2 = Duration grid"
          },
          "days": {
            "type": "array",
            "items": {
              "type": "integer"
            }
          },
          "hour_min": {
            "type": "string"
          },
          "hour_max": {
            "type": "string"
          },
          "date_min": {
            "type": "string"
          },
          "date_max": {
            "type": "string"
          },
          "priority": {
            "type": "integer"
          },
          "zones": {
            "type": "array",
            "items": {
              "type": "integer"
            }
          },
          "hourly_rate": {
            "type": "number"
          },
          "off_peak_hourly_rate": {
            "type": "number"
          },
          "off_peak_hour_morning_start": {
            "type": "string"
          },
          "off_peak_hour_morning_end": {
            "type": "string"
          },
          "off_peak_hour_evening_start": {
            "type": "string"
          },
          "off_peak_hour_evening_end": {
            "type": "string"
          },
          "daily_max_rate": {
            "type": "number"
          },
          "weekly_max_rate": {
            "type": "number"
          },
          "monthly_max_rate": {
            "type": "number"
          }
        }
      },
      "Promotion": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "name": {
            "type": "string"
          },
          "status": {
            "type": "boolean"
          },
          "requires_qr": {
            "type": "boolean"
          },
          "pricing_id": {
            "type": "integer"
          },
          "date_start": {
            "type": "string"
          },
          "date_end": {
            "type": "string"
          },
          "pricing_name": {
            "type": "string"
          },
          "is_voucher": {
            "type": "boolean"
          },
          "voucher_amount": {
            "type": "number"
          },
          "threshold_json": {
            "type": "string"
          }
        }
      },
      "PromotionCode": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "promotion_id": {
            "type": "integer"
          },
          "code": {
            "type": "string"
          },
          "status": {
            "type": "boolean"
          },
          "unique_usage": {
            "type": "boolean"
          },
          "used": {
            "type": "boolean"
          },
          "used_date": {
            "type": "string"
          },
          "used_access_card_id": {
            "type": "integer"
          }
        }
      },
      "Role": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "name": {
            "type": "string"
          },
          "dashboard": {
            "type": "integer",
            "description": "Dashboard layout type (frontend-defined)"
          },
          "restrict_tags": {
            "type": "array",
            "items": {
              "type": "integer"
            }
          },
          "restrict_companies": {
            "type": "array",
            "items": {
              "type": "integer"
            }
          },
          "permissions": {
            "type": "string"
          },
          "creation_date": {
            "type": "string"
          }
        }
      },
      "Schedule": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "name": {
            "type": "string"
          },
          "allow_users": {
            "type": "boolean"
          },
          "allow_customers": {
            "type": "boolean"
          },
          "allow_guests": {
            "type": "boolean"
          },
          "start_date": {
            "type": "string"
          },
          "end_date": {
            "type": "string"
          },
          "holidays_type": {
            "type": "integer",
            "description": "Holiday handling mode (frontend-defined)"
          },
          "holidays": {
            "type": "array",
            "items": {
              "type": "integer"
            }
          },
          "days": {
            "type": "object"
          }
        }
      },
      "Tag": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "name": {
            "type": "string"
          },
          "color": {
            "type": "string"
          },
          "group_id": {
            "type": "integer"
          },
          "creation_date": {
            "type": "string"
          }
        }
      },
      "Task": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "name": {
            "type": "string"
          },
          "enabled": {
            "type": "boolean"
          },
          "running": {
            "type": "boolean"
          },
          "scheduled": {
            "type": "boolean"
          },
          "schedule_frequency": {
            "type": "string"
          },
          "schedule_day_of_week": {
            "type": "integer"
          },
          "schedule_day_of_month": {
            "type": "integer"
          },
          "schedule_month": {
            "type": "integer"
          },
          "schedule_day": {
            "type": "integer"
          },
          "schedule_date": {
            "type": "string"
          },
          "time_type": {
            "type": "string"
          },
          "time": {
            "type": "string"
          },
          "task_type": {
            "type": "string"
          },
          "report_type": {
            "type": "string"
          },
          "action_type": {
            "type": "string"
          },
          "action_duration_minutes": {
            "type": "integer"
          },
          "action_ssh_command": {
            "type": "string"
          },
          "action_device_ids": {
            "type": "array",
            "items": {
              "type": "integer"
            }
          },
          "run_task_ids": {
            "type": "array",
            "items": {
              "type": "integer"
            }
          },
          "entity_type": {
            "type": "string"
          },
          "entity_filters": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "entity_field": {
            "type": "string"
          },
          "entity_field_value": {
            "type": "string"
          },
          "entity_payload": {
            "type": "string"
          }
        }
      },
      "Transaction": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "parent_transaction": {
            "type": "integer"
          },
          "entry_id": {
            "type": "integer"
          },
          "access_card_id": {
            "type": "integer"
          },
          "identifier": {
            "type": "string"
          },
          "masked_pan": {
            "type": "string"
          },
          "card_brand": {
            "type": "string"
          },
          "amount": {
            "type": "number"
          },
          "refunded_amount": {
            "type": "number"
          },
          "type": {
            "type": "integer",
            "enum": [
              0,
              1,
              2,
              3,
              4,
              5,
              6,
              7
            ],
            "description": "0 = Payment on equipment, 1 = Online payment, 2 = Point of sale, 3 = Manual / offline, 4 = Online refund, 5 = POS refund, 6 = Partial refund, 7 = Automatic refund"
          },
          "status": {
            "type": "integer",
            "enum": [
              0,
              1,
              2,
              3
            ],
            "description": "0 = Completed, 1 = Pending, 2 = Refunded, 3 = Cancelled"
          },
          "refunded": {
            "type": "boolean"
          },
          "creation_date": {
            "type": "string"
          },
          "subtotal": {
            "type": "number"
          },
          "tax1": {
            "type": "number"
          },
          "tax2": {
            "type": "number"
          },
          "tax1_name": {
            "type": "string"
          },
          "tax2_name": {
            "type": "string"
          },
          "receipt": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "transaction_data": {
            "type": "string"
          },
          "total_duration": {
            "type": "integer"
          },
          "refund_reason": {
            "type": "string"
          },
          "refund_date": {
            "type": "string"
          }
        }
      },
      "User": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "is_ldap": {
            "type": "boolean"
          },
          "username": {
            "type": "string"
          },
          "email": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "status": {
            "type": "boolean"
          },
          "notifications": {
            "type": "boolean"
          },
          "role": {
            "type": "integer"
          },
          "creation_date": {
            "type": "string"
          },
          "last_seen_date": {
            "type": "string"
          },
          "timezone": {
            "type": "number"
          },
          "adjust_daylight_timezone": {
            "type": "boolean"
          },
          "daylight_offset": {
            "type": "number"
          },
          "locale": {
            "type": "string"
          },
          "banned": {
            "type": "boolean"
          },
          "mfa_enabled": {
            "type": "boolean"
          }
        }
      },
      "Vehicle": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "customer_id": {
            "type": "integer"
          },
          "user_id": {
            "type": "integer"
          },
          "plate_number": {
            "type": "string"
          },
          "brand": {
            "type": "string"
          },
          "model": {
            "type": "string"
          },
          "color": {
            "type": "string"
          },
          "year": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "integer"
            }
          },
          "created_at": {
            "type": "string"
          },
          "updated_at": {
            "type": "string"
          },
          "public_id": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "asset_kind": {
            "type": "string",
            "enum": [
              "legacy",
              "truck",
              "trailer",
              "other"
            ]
          },
          "parent_vehicle_id": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "supplier_id": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "default_tare_kg": {
            "type": "string",
            "pattern": "^(0|[1-9][0-9]{0,11})(\\.[0-9]{1,6})?$",
            "nullable": true
          },
          "maximum_gross_kg": {
            "type": "string",
            "pattern": "^(0|[1-9][0-9]{0,11})(\\.[0-9]{1,6})?$",
            "nullable": true
          },
          "operational_status": {
            "type": "string",
            "enum": [
              "unknown",
              "operational",
              "maintenance",
              "out_of_service",
              "retired"
            ]
          },
          "version": {
            "type": "integer",
            "format": "int64",
            "minimum": 1
          },
          "current_load_profile_id": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          }
        }
      },
      "Zone": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "color": {
            "type": "string"
          },
          "points": {
            "type": "string"
          },
          "status": {
            "type": "boolean"
          },
          "currently_inside": {
            "type": "integer"
          },
          "inside_offset": {
            "type": "integer"
          },
          "max_inside": {
            "type": "integer"
          },
          "creation_date": {
            "type": "string"
          }
        }
      },
      "FilterItem": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "SuccessResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean"
          }
        }
      },
      "ErrorResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": false
          },
          "error": {
            "type": "string"
          }
        }
      },
      "SnowFinanceId": {
        "type": "string",
        "pattern": "^[1-9][0-9]*$"
      },
      "SnowFinanceNullableId": {
        "allOf": [
          {
            "$ref": "#/components/schemas/SnowFinanceId"
          }
        ],
        "nullable": true
      },
      "SnowFinanceSha256": {
        "type": "string",
        "pattern": "^[0-9a-f]{64}$"
      },
      "SnowFinanceUuid": {
        "type": "string",
        "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"
      },
      "SnowFinanceDecimal6": {
        "type": "string",
        "pattern": "^-?(0|[1-9][0-9]*)\\.[0-9]{6}$"
      },
      "SnowFinanceNonNegativeDecimalInput": {
        "type": "string",
        "pattern": "^(0|[1-9][0-9]{0,11})(\\.[0-9]{1,6})?$"
      },
      "SnowFinanceNullableDecimal6": {
        "allOf": [
          {
            "$ref": "#/components/schemas/SnowFinanceDecimal6"
          }
        ],
        "nullable": true
      },
      "SnowFinanceMoney2": {
        "type": "string",
        "pattern": "^-?(0|[1-9][0-9]*)\\.[0-9]{2}$"
      },
      "SnowFinanceRole": {
        "type": "string",
        "enum": [
          "supplier_payable",
          "customer_receivable"
        ]
      },
      "SnowFinancePricingFinancialRole": {
        "type": "string",
        "enum": [
          "supplier_payable",
          "customer_receivable",
          "shared"
        ]
      },
      "SnowFinanceBillingComponent": {
        "type": "string",
        "enum": [
          "base",
          "fuel_adjustment",
          "retention",
          "penalty",
          "tax",
          "adjustment"
        ]
      },
      "SnowFinanceSuccess": {
        "enum": [
          true
        ]
      },
      "SnowFinanceNullableText": {
        "type": "string",
        "nullable": true
      },
      "SnowFinancePriceListRow": {
        "type": "object",
        "additionalProperties": true,
        "required": [
          "id",
          "list_family_id",
          "company_id",
          "supplier_id",
          "customer_ids",
          "scope_kind",
          "currency",
          "financial_role",
          "status",
          "version"
        ],
        "properties": {
          "id": {
            "$ref": "#/components/schemas/SnowFinanceId"
          },
          "list_family_id": {
            "$ref": "#/components/schemas/SnowFinanceUuid"
          },
          "company_id": {
            "$ref": "#/components/schemas/SnowFinanceId"
          },
          "supplier_id": {
            "$ref": "#/components/schemas/SnowFinanceNullableId"
          },
          "customer_ids": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SnowFinanceId"
            },
            "uniqueItems": true
          },
          "scope_kind": {
            "enum": [
              "supplier",
              "customer",
              "global"
            ]
          },
          "currency": {
            "type": "string",
            "pattern": "^[A-Z]{3}$"
          },
          "financial_role": {
            "$ref": "#/components/schemas/SnowFinancePricingFinancialRole"
          },
          "status": {
            "enum": [
              "draft",
              "approved",
              "retired",
              "superseded"
            ]
          },
          "version": {
            "$ref": "#/components/schemas/SnowFinanceId"
          }
        }
      },
      "SnowFinancePricingRow": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/SnowFinancePriceListRow"
          },
          {
            "type": "object",
            "additionalProperties": true,
            "required": [
              "id",
              "version",
              "status"
            ],
            "properties": {
              "id": {
                "$ref": "#/components/schemas/SnowFinanceId"
              },
              "version": {
                "$ref": "#/components/schemas/SnowFinanceId"
              },
              "status": {
                "enum": [
                  "draft",
                  "approved",
                  "retired",
                  "superseded"
                ]
              }
            }
          }
        ]
      },
      "SnowFinancePricingEntryRequest": {
        "type": "object",
        "additionalProperties": true,
        "required": [
          "entry_id",
          "entry_version",
          "billing_role"
        ],
        "properties": {
          "entry_id": {
            "$ref": "#/components/schemas/SnowFinanceId"
          },
          "entry_version": {
            "$ref": "#/components/schemas/SnowFinanceId"
          },
          "product_id": {
            "$ref": "#/components/schemas/SnowFinanceId"
          },
          "price_list_id": {
            "$ref": "#/components/schemas/SnowFinanceId"
          },
          "product_price_id": {
            "$ref": "#/components/schemas/SnowFinanceId"
          },
          "pricing_basis": {
            "enum": [
              "WEIGHT",
              "VOLUME",
              "TRIP",
              "DISTANCE",
              "WEIGHT_DISTANCE",
              "VOLUME_DISTANCE",
              "FIXED"
            ]
          },
          "billing_role": {
            "$ref": "#/components/schemas/SnowFinancePricingFinancialRole"
          }
        }
      },
      "SnowFinancePricingPreviewResponse": {
        "type": "object",
        "additionalProperties": true,
        "required": [
          "success",
          "valid",
          "already_priced",
          "algorithm_version",
          "entry_version",
          "preview_hash",
          "snapshot"
        ],
        "properties": {
          "success": {
            "$ref": "#/components/schemas/SnowFinanceSuccess"
          },
          "valid": {
            "enum": [
              true
            ]
          },
          "already_priced": {
            "type": "boolean"
          },
          "algorithm_version": {
            "enum": [
              "measured_pricing_v1"
            ]
          },
          "entry_version": {
            "$ref": "#/components/schemas/SnowFinanceId"
          },
          "preview_hash": {
            "$ref": "#/components/schemas/SnowFinanceSha256"
          },
          "snapshot": {
            "type": "object",
            "required": [
              "schema"
            ],
            "properties": {
              "schema": {
                "enum": [
                  "pricing_snapshot_v2"
                ]
              }
            }
          }
        }
      },
      "SnowFinanceMeasuredSimulationScenario": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "effective_at",
          "financial_role",
          "product_id",
          "price_list_id",
          "product_price_id",
          "pricing_basis",
          "company_id",
          "site_id",
          "zone_id",
          "project_id",
          "project_customer_id",
          "supplier_id",
          "measurements"
        ],
        "properties": {
          "effective_at": {
            "type": "string",
            "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}\\.[0-9]{6}Z$"
          },
          "financial_role": {
            "$ref": "#/components/schemas/SnowFinanceRole"
          },
          "product_id": {
            "$ref": "#/components/schemas/SnowFinanceId"
          },
          "price_list_id": {
            "$ref": "#/components/schemas/SnowFinanceNullableId"
          },
          "product_price_id": {
            "$ref": "#/components/schemas/SnowFinanceNullableId"
          },
          "pricing_basis": {
            "enum": [
              "WEIGHT",
              "VOLUME",
              "TRIP",
              "DISTANCE",
              "WEIGHT_DISTANCE",
              "VOLUME_DISTANCE",
              "FIXED"
            ],
            "nullable": true
          },
          "company_id": {
            "$ref": "#/components/schemas/SnowFinanceId"
          },
          "site_id": {
            "$ref": "#/components/schemas/SnowFinanceNullableId"
          },
          "zone_id": {
            "$ref": "#/components/schemas/SnowFinanceNullableId"
          },
          "project_id": {
            "$ref": "#/components/schemas/SnowFinanceNullableId"
          },
          "project_customer_id": {
            "$ref": "#/components/schemas/SnowFinanceNullableId"
          },
          "supplier_id": {
            "$ref": "#/components/schemas/SnowFinanceNullableId"
          },
          "measurements": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "gross_weight_kg",
              "tare_weight_kg",
              "net_weight_kg",
              "volume_m3",
              "distance_km",
              "trip_count"
            ],
            "properties": {
              "gross_weight_kg": {
                "$ref": "#/components/schemas/SnowFinanceNullableDecimal6"
              },
              "tare_weight_kg": {
                "$ref": "#/components/schemas/SnowFinanceNullableDecimal6"
              },
              "net_weight_kg": {
                "$ref": "#/components/schemas/SnowFinanceNullableDecimal6"
              },
              "volume_m3": {
                "$ref": "#/components/schemas/SnowFinanceNullableDecimal6"
              },
              "distance_km": {
                "$ref": "#/components/schemas/SnowFinanceNullableDecimal6"
              },
              "trip_count": {
                "$ref": "#/components/schemas/SnowFinanceNullableDecimal6"
              }
            }
          }
        }
      },
      "SnowFinanceMeasuredSimulateRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "effective_at",
          "financial_role",
          "company_id",
          "product_id"
        ],
        "properties": {
          "effective_at": {
            "type": "string",
            "description": "Explicit RFC3339 instant; relative PostgreSQL values such as now are forbidden.",
            "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}(\\.[0-9]{1,9})?(Z|[+-][0-9]{2}:[0-9]{2})$"
          },
          "financial_role": {
            "$ref": "#/components/schemas/SnowFinanceRole"
          },
          "company_id": {
            "$ref": "#/components/schemas/SnowFinanceId"
          },
          "product_id": {
            "$ref": "#/components/schemas/SnowFinanceId"
          },
          "price_list_id": {
            "$ref": "#/components/schemas/SnowFinanceId"
          },
          "product_price_id": {
            "$ref": "#/components/schemas/SnowFinanceId"
          },
          "pricing_basis": {
            "enum": [
              "WEIGHT",
              "VOLUME",
              "TRIP",
              "DISTANCE",
              "WEIGHT_DISTANCE",
              "VOLUME_DISTANCE",
              "FIXED"
            ]
          },
          "site_id": {
            "$ref": "#/components/schemas/SnowFinanceId"
          },
          "zone_id": {
            "$ref": "#/components/schemas/SnowFinanceId"
          },
          "project_id": {
            "$ref": "#/components/schemas/SnowFinanceId"
          },
          "project_customer_id": {
            "$ref": "#/components/schemas/SnowFinanceId"
          },
          "supplier_id": {
            "$ref": "#/components/schemas/SnowFinanceId"
          },
          "gross_weight_kg": {
            "$ref": "#/components/schemas/SnowFinanceNonNegativeDecimalInput"
          },
          "tare_weight_kg": {
            "$ref": "#/components/schemas/SnowFinanceNonNegativeDecimalInput"
          },
          "net_weight_kg": {
            "$ref": "#/components/schemas/SnowFinanceNonNegativeDecimalInput"
          },
          "volume_m3": {
            "$ref": "#/components/schemas/SnowFinanceNonNegativeDecimalInput"
          },
          "distance_km": {
            "$ref": "#/components/schemas/SnowFinanceNonNegativeDecimalInput"
          },
          "trip_count": {
            "$ref": "#/components/schemas/SnowFinanceNonNegativeDecimalInput"
          }
        }
      },
      "SnowFinanceMeasuredSimulationWarning": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "code",
          "severity"
        ],
        "properties": {
          "code": {
            "type": "string",
            "minLength": 1
          },
          "severity": {
            "enum": [
              "blocking"
            ]
          }
        }
      },
      "SnowFinanceMeasuredSimulationSelection": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "product",
          "price_list",
          "rate",
          "taxes"
        ],
        "properties": {
          "product": {
            "type": "object"
          },
          "price_list": {
            "type": "object"
          },
          "rate": {
            "type": "object"
          },
          "taxes": {
            "type": "array",
            "items": {
              "type": "object"
            }
          }
        }
      },
      "SnowFinanceMeasuredSimulationSnapshot": {
        "type": "object",
        "additionalProperties": true,
        "required": [
          "schema",
          "algorithm_version",
          "effective_at",
          "persisted",
          "scenario",
          "measurements",
          "product",
          "price_list",
          "rate",
          "calculation",
          "taxes",
          "totals"
        ],
        "properties": {
          "schema": {
            "enum": [
              "measured_pricing_simulation_v1"
            ]
          },
          "algorithm_version": {
            "enum": [
              "measured_pricing_v1"
            ]
          },
          "effective_at": {
            "type": "string"
          },
          "persisted": {
            "enum": [
              false
            ]
          },
          "scenario": {
            "$ref": "#/components/schemas/SnowFinanceMeasuredSimulationScenario"
          },
          "measurements": {
            "type": "object"
          },
          "product": {
            "type": "object"
          },
          "price_list": {
            "type": "object"
          },
          "rate": {
            "type": "object"
          },
          "calculation": {
            "type": "object"
          },
          "taxes": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "totals": {
            "type": "object"
          }
        }
      },
      "SnowFinanceMeasuredSimulateResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "success",
          "persisted",
          "resolved",
          "algorithm_version",
          "scenario",
          "selection",
          "calculation",
          "totals",
          "warnings",
          "snapshot"
        ],
        "properties": {
          "success": {
            "$ref": "#/components/schemas/SnowFinanceSuccess"
          },
          "persisted": {
            "enum": [
              false
            ]
          },
          "resolved": {
            "type": "boolean"
          },
          "algorithm_version": {
            "enum": [
              "measured_pricing_v1"
            ]
          },
          "scenario": {
            "$ref": "#/components/schemas/SnowFinanceMeasuredSimulationScenario"
          },
          "selection": {
            "allOf": [
              {
                "$ref": "#/components/schemas/SnowFinanceMeasuredSimulationSelection"
              }
            ],
            "nullable": true
          },
          "calculation": {
            "type": "object",
            "nullable": true
          },
          "totals": {
            "type": "object",
            "nullable": true
          },
          "warnings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SnowFinanceMeasuredSimulationWarning"
            }
          },
          "snapshot": {
            "allOf": [
              {
                "$ref": "#/components/schemas/SnowFinanceMeasuredSimulationSnapshot"
              }
            ],
            "nullable": true
          }
        }
      },
      "SnowFinanceMeasuredListRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "resource",
          "limit"
        ],
        "properties": {
          "resource": {
            "enum": [
              "price_list",
              "rate",
              "tax",
              "catalog"
            ]
          },
          "status": {
            "type": "string"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 200
          },
          "cursor_id": {
            "$ref": "#/components/schemas/SnowFinanceId"
          },
          "company_id": {
            "$ref": "#/components/schemas/SnowFinanceId"
          },
          "financial_role": {
            "$ref": "#/components/schemas/SnowFinancePricingFinancialRole"
          },
          "price_list_id": {
            "$ref": "#/components/schemas/SnowFinanceId"
          },
          "product_id": {
            "$ref": "#/components/schemas/SnowFinanceId"
          },
          "tax_rule_id": {
            "$ref": "#/components/schemas/SnowFinanceId"
          }
        }
      },
      "SnowFinanceMeasuredListResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "success",
          "resource",
          "rows"
        ],
        "properties": {
          "success": {
            "$ref": "#/components/schemas/SnowFinanceSuccess"
          },
          "resource": {
            "enum": [
              "price_list",
              "rate",
              "tax"
            ]
          },
          "rows": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SnowFinancePricingRow"
            }
          },
          "next_cursor": {
            "$ref": "#/components/schemas/SnowFinanceId"
          }
        }
      },
      "SnowFinanceMeasuredSaveDraftRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "resource",
          "data"
        ],
        "properties": {
          "resource": {
            "enum": [
              "price_list",
              "rate",
              "tax"
            ]
          },
          "data": {
            "type": "object",
            "required": [
              "reason"
            ],
            "properties": {
              "reason": {
                "type": "string",
                "minLength": 1
              },
              "calculation_parameters": {
                "description": "Rate drafts only. The component is frozen into pricing_snapshot_v2 when this rate is selected and committed.",
                "type": "object",
                "properties": {
                  "billing_component": {
                    "$ref": "#/components/schemas/SnowFinanceBillingComponent"
                  }
                },
                "additionalProperties": true
              }
            },
            "additionalProperties": true
          }
        }
      },
      "SnowFinanceMeasuredSaveDraftResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "success",
          "resource",
          "row"
        ],
        "properties": {
          "success": {
            "$ref": "#/components/schemas/SnowFinanceSuccess"
          },
          "resource": {
            "enum": [
              "price_list",
              "rate",
              "tax"
            ]
          },
          "row": {
            "$ref": "#/components/schemas/SnowFinancePricingRow"
          }
        }
      },
      "SnowFinanceMeasuredTransitionRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "resource",
          "id"
        ],
        "properties": {
          "resource": {
            "enum": [
              "price_list",
              "rate",
              "tax"
            ]
          },
          "id": {
            "$ref": "#/components/schemas/SnowFinanceId"
          }
        }
      },
      "SnowFinanceMeasuredTransitionResponse": {
        "$ref": "#/components/schemas/SnowFinanceMeasuredSaveDraftResponse"
      },
      "SnowFinanceMeasuredPreviewRequest": {
        "$ref": "#/components/schemas/SnowFinancePricingEntryRequest"
      },
      "SnowFinanceMeasuredPreviewResponse": {
        "$ref": "#/components/schemas/SnowFinancePricingPreviewResponse"
      },
      "SnowFinanceMeasuredCommitRequest": {
        "allOf": [
          {
            "$ref": "#/components/schemas/SnowFinancePricingEntryRequest"
          },
          {
            "type": "object",
            "required": [
              "preview_hash"
            ],
            "properties": {
              "preview_hash": {
                "$ref": "#/components/schemas/SnowFinanceSha256"
              }
            }
          }
        ]
      },
      "SnowFinanceMeasuredCommitResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/SnowFinancePricingPreviewResponse"
          },
          {
            "type": "object",
            "required": [
              "committed",
              "idempotent_replay"
            ],
            "properties": {
              "committed": {
                "enum": [
                  true
                ]
              },
              "idempotent_replay": {
                "type": "boolean"
              }
            }
          }
        ]
      },
      "SnowFinanceSourceRow": {
        "type": "object",
        "additionalProperties": true,
        "required": [
          "entry_id",
          "entry_public_id",
          "entry_version",
          "project_id",
          "project_number",
          "project_name",
          "supplier_id",
          "supplier_name",
          "product_id",
          "product_code",
          "product_name",
          "unit_id",
          "unit_code",
          "pricing_basis",
          "quantity",
          "unit_rate",
          "subtotal",
          "tax",
          "total",
          "currency",
          "pricing_snapshot_hash",
          "occurred_at"
        ],
        "properties": {
          "entry_id": {
            "$ref": "#/components/schemas/SnowFinanceId"
          },
          "entry_public_id": {
            "$ref": "#/components/schemas/SnowFinanceUuid"
          },
          "entry_version": {
            "$ref": "#/components/schemas/SnowFinanceId"
          },
          "project_id": {
            "$ref": "#/components/schemas/SnowFinanceId"
          },
          "project_number": {
            "type": "string"
          },
          "project_name": {
            "type": "string"
          },
          "supplier_id": {
            "type": "string",
            "pattern": "^(|[1-9][0-9]*)$"
          },
          "supplier_name": {
            "type": "string"
          },
          "product_id": {
            "$ref": "#/components/schemas/SnowFinanceId"
          },
          "product_code": {
            "type": "string"
          },
          "product_name": {
            "type": "string"
          },
          "unit_id": {
            "$ref": "#/components/schemas/SnowFinanceId"
          },
          "unit_code": {
            "type": "string"
          },
          "pricing_basis": {
            "type": "string"
          },
          "quantity": {
            "$ref": "#/components/schemas/SnowFinanceDecimal6"
          },
          "unit_rate": {
            "$ref": "#/components/schemas/SnowFinanceDecimal6"
          },
          "subtotal": {
            "$ref": "#/components/schemas/SnowFinanceMoney2"
          },
          "tax": {
            "$ref": "#/components/schemas/SnowFinanceMoney2"
          },
          "total": {
            "$ref": "#/components/schemas/SnowFinanceMoney2"
          },
          "currency": {
            "type": "string",
            "pattern": "^[A-Z]{3}$"
          },
          "pricing_snapshot_hash": {
            "$ref": "#/components/schemas/SnowFinanceSha256"
          },
          "occurred_at": {
            "type": "string",
            "minLength": 1
          }
        }
      },
      "SnowFinanceBillingListSourcesRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "project_id",
          "billing_role",
          "billing_component",
          "limit"
        ],
        "properties": {
          "project_id": {
            "$ref": "#/components/schemas/SnowFinanceId"
          },
          "billing_role": {
            "$ref": "#/components/schemas/SnowFinanceRole"
          },
          "billing_component": {
            "$ref": "#/components/schemas/SnowFinanceBillingComponent"
          },
          "date_from": {
            "type": "string"
          },
          "date_to": {
            "type": "string"
          },
          "search": {
            "type": "string"
          },
          "cursor_id": {
            "$ref": "#/components/schemas/SnowFinanceId"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100
          }
        }
      },
      "SnowFinanceBillingListSourcesResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "success",
          "sources",
          "next_cursor_id",
          "limit",
          "billing_role",
          "billing_component"
        ],
        "properties": {
          "success": {
            "$ref": "#/components/schemas/SnowFinanceSuccess"
          },
          "sources": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SnowFinanceSourceRow"
            }
          },
          "next_cursor_id": {
            "$ref": "#/components/schemas/SnowFinanceNullableId"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100
          },
          "billing_role": {
            "$ref": "#/components/schemas/SnowFinanceRole"
          },
          "billing_component": {
            "$ref": "#/components/schemas/SnowFinanceBillingComponent"
          }
        }
      },
      "SnowFinanceBillingSelectionRequest": {
        "type": "object",
        "additionalProperties": true,
        "required": [
          "project_id",
          "billing_role",
          "billing_component",
          "billing_period_from",
          "billing_period_to",
          "entry_ids"
        ],
        "properties": {
          "project_id": {
            "$ref": "#/components/schemas/SnowFinanceId"
          },
          "billing_role": {
            "$ref": "#/components/schemas/SnowFinanceRole"
          },
          "billing_component": {
            "$ref": "#/components/schemas/SnowFinanceBillingComponent"
          },
          "billing_period_from": {
            "type": "string",
            "minLength": 1
          },
          "billing_period_to": {
            "type": "string",
            "minLength": 1
          },
          "entry_ids": {
            "type": "array",
            "minItems": 1,
            "uniqueItems": true,
            "items": {
              "$ref": "#/components/schemas/SnowFinanceId"
            }
          },
          "issue_date": {
            "type": "string"
          },
          "due_date": {
            "type": "string"
          },
          "reference": {
            "type": "string"
          },
          "notes": {
            "type": "string"
          },
          "reason": {
            "type": "string"
          }
        }
      },
      "SnowFinanceBillingPreviewRequest": {
        "$ref": "#/components/schemas/SnowFinanceBillingSelectionRequest"
      },
      "SnowFinanceBillingPreviewResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "success",
          "valid",
          "preview_hash",
          "snapshot",
          "entry_count"
        ],
        "properties": {
          "success": {
            "$ref": "#/components/schemas/SnowFinanceSuccess"
          },
          "valid": {
            "enum": [
              true
            ]
          },
          "preview_hash": {
            "$ref": "#/components/schemas/SnowFinanceSha256"
          },
          "snapshot": {
            "type": "object",
            "required": [
              "schema"
            ],
            "properties": {
              "schema": {
                "enum": [
                  "snow_billing_snapshot_v1"
                ]
              }
            }
          },
          "entry_count": {
            "type": "integer",
            "minimum": 1
          }
        }
      },
      "SnowFinanceBillingCreateRequest": {
        "allOf": [
          {
            "$ref": "#/components/schemas/SnowFinanceBillingSelectionRequest"
          },
          {
            "type": "object",
            "required": [
              "preview_hash",
              "idempotency_key"
            ],
            "properties": {
              "preview_hash": {
                "$ref": "#/components/schemas/SnowFinanceSha256"
              },
              "idempotency_key": {
                "type": "string",
                "minLength": 1,
                "maxLength": 240
              }
            }
          }
        ]
      },
      "SnowFinanceDocumentLine": {
        "type": "object",
        "additionalProperties": true,
        "required": [
          "id",
          "entry_id",
          "quantity",
          "unit_price",
          "subtotal",
          "tax",
          "total",
          "pricing_snapshot_hash"
        ],
        "properties": {
          "id": {
            "$ref": "#/components/schemas/SnowFinanceId"
          },
          "entry_id": {
            "$ref": "#/components/schemas/SnowFinanceId"
          },
          "quantity": {
            "$ref": "#/components/schemas/SnowFinanceDecimal6"
          },
          "unit_price": {
            "$ref": "#/components/schemas/SnowFinanceDecimal6"
          },
          "subtotal": {
            "$ref": "#/components/schemas/SnowFinanceMoney2"
          },
          "tax": {
            "$ref": "#/components/schemas/SnowFinanceMoney2"
          },
          "total": {
            "$ref": "#/components/schemas/SnowFinanceMoney2"
          },
          "pricing_snapshot_hash": {
            "$ref": "#/components/schemas/SnowFinanceSha256"
          }
        }
      },
      "SnowFinanceDocument": {
        "type": "object",
        "additionalProperties": true,
        "required": [
          "id",
          "number",
          "document_type",
          "status",
          "active",
          "version",
          "project_id",
          "currency",
          "subtotal",
          "tax_total",
          "total",
          "balance_due",
          "billing_source",
          "billing_snapshot",
          "billing_snapshot_hash",
          "lines"
        ],
        "properties": {
          "id": {
            "$ref": "#/components/schemas/SnowFinanceId"
          },
          "number": {
            "type": "string",
            "minLength": 1
          },
          "document_type": {
            "enum": [
              "sales_invoice",
              "purchase_invoice",
              "sales_credit_note",
              "purchase_credit_note"
            ]
          },
          "status": {
            "type": "string"
          },
          "active": {
            "type": "boolean"
          },
          "version": {
            "$ref": "#/components/schemas/SnowFinanceId"
          },
          "project_id": {
            "$ref": "#/components/schemas/SnowFinanceId"
          },
          "currency": {
            "type": "string",
            "pattern": "^[A-Z]{3}$"
          },
          "subtotal": {
            "$ref": "#/components/schemas/SnowFinanceMoney2"
          },
          "tax_total": {
            "$ref": "#/components/schemas/SnowFinanceMoney2"
          },
          "total": {
            "$ref": "#/components/schemas/SnowFinanceMoney2"
          },
          "balance_due": {
            "$ref": "#/components/schemas/SnowFinanceMoney2"
          },
          "billing_source": {
            "enum": [
              "snow"
            ]
          },
          "billing_snapshot": {
            "type": "object",
            "required": [
              "schema"
            ]
          },
          "billing_snapshot_hash": {
            "$ref": "#/components/schemas/SnowFinanceSha256"
          },
          "lines": {
            "type": "array",
            "minItems": 1,
            "items": {
              "$ref": "#/components/schemas/SnowFinanceDocumentLine"
            }
          }
        }
      },
      "SnowFinanceBillingCreateResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "success",
          "created",
          "idempotent_replay",
          "document"
        ],
        "properties": {
          "success": {
            "$ref": "#/components/schemas/SnowFinanceSuccess"
          },
          "created": {
            "type": "boolean"
          },
          "idempotent_replay": {
            "type": "boolean"
          },
          "document": {
            "$ref": "#/components/schemas/SnowFinanceDocument"
          },
          "billing_link_ids": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SnowFinanceId"
            }
          }
        }
      },
      "SnowFinanceBillingCreditRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "document_id",
          "document_version",
          "reason",
          "idempotency_key"
        ],
        "properties": {
          "document_id": {
            "$ref": "#/components/schemas/SnowFinanceId"
          },
          "document_version": {
            "$ref": "#/components/schemas/SnowFinanceId"
          },
          "reason": {
            "type": "string",
            "minLength": 1
          },
          "idempotency_key": {
            "type": "string",
            "minLength": 1,
            "maxLength": 240
          }
        }
      },
      "SnowFinanceBillingCreditResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "success",
          "created",
          "idempotent_replay",
          "document"
        ],
        "properties": {
          "success": {
            "$ref": "#/components/schemas/SnowFinanceSuccess"
          },
          "created": {
            "type": "boolean"
          },
          "idempotent_replay": {
            "type": "boolean"
          },
          "document": {
            "$ref": "#/components/schemas/SnowFinanceDocument"
          }
        }
      },
      "SnowFinanceBillingListDocumentsRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "project_id",
          "limit"
        ],
        "properties": {
          "project_id": {
            "$ref": "#/components/schemas/SnowFinanceId"
          },
          "cursor_id": {
            "$ref": "#/components/schemas/SnowFinanceId"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100
          },
          "status": {
            "type": "string"
          },
          "document_type": {
            "type": "string"
          },
          "search": {
            "type": "string"
          }
        }
      },
      "SnowFinanceDocumentSummary": {
        "type": "object",
        "additionalProperties": true,
        "required": [
          "id",
          "number",
          "document_type",
          "status",
          "version",
          "project_id",
          "currency",
          "subtotal",
          "tax_total",
          "total",
          "billing_role",
          "billing_snapshot_hash"
        ],
        "properties": {
          "id": {
            "$ref": "#/components/schemas/SnowFinanceId"
          },
          "number": {
            "type": "string"
          },
          "document_type": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "version": {
            "$ref": "#/components/schemas/SnowFinanceId"
          },
          "project_id": {
            "$ref": "#/components/schemas/SnowFinanceId"
          },
          "currency": {
            "type": "string",
            "pattern": "^[A-Z]{3}$"
          },
          "subtotal": {
            "$ref": "#/components/schemas/SnowFinanceMoney2"
          },
          "tax_total": {
            "$ref": "#/components/schemas/SnowFinanceMoney2"
          },
          "total": {
            "$ref": "#/components/schemas/SnowFinanceMoney2"
          },
          "billing_role": {
            "$ref": "#/components/schemas/SnowFinanceRole"
          },
          "billing_snapshot_hash": {
            "$ref": "#/components/schemas/SnowFinanceSha256"
          }
        }
      },
      "SnowFinanceBillingListDocumentsResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "success",
          "documents",
          "next_cursor_id",
          "limit"
        ],
        "properties": {
          "success": {
            "$ref": "#/components/schemas/SnowFinanceSuccess"
          },
          "documents": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SnowFinanceDocumentSummary"
            }
          },
          "next_cursor_id": {
            "$ref": "#/components/schemas/SnowFinanceNullableId"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100
          }
        }
      },
      "SnowFinanceBillingGetDocumentRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "document_id"
        ],
        "properties": {
          "document_id": {
            "$ref": "#/components/schemas/SnowFinanceId"
          }
        }
      },
      "SnowFinanceBillingGetDocumentResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "success",
          "document"
        ],
        "properties": {
          "success": {
            "$ref": "#/components/schemas/SnowFinanceSuccess"
          },
          "document": {
            "$ref": "#/components/schemas/SnowFinanceDocument"
          }
        }
      },
      "SnowFinanceTransmission": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "public_id",
          "document_id",
          "document_version",
          "document_number",
          "document_type",
          "project_id",
          "project_number",
          "project_name",
          "payload_version",
          "message_id",
          "payload_sha256",
          "status",
          "attempt_count",
          "next_attempt_at",
          "external_reference",
          "external_status",
          "response",
          "error_code",
          "queued_at",
          "last_attempt_at",
          "accepted_at",
          "rejected_at",
          "reconciled_at",
          "row_version",
          "created_at",
          "updated_at",
          "transport_mode",
          "connector_status"
        ],
        "properties": {
          "id": {
            "$ref": "#/components/schemas/SnowFinanceId"
          },
          "public_id": {
            "$ref": "#/components/schemas/SnowFinanceUuid"
          },
          "document_id": {
            "$ref": "#/components/schemas/SnowFinanceId"
          },
          "document_version": {
            "$ref": "#/components/schemas/SnowFinanceId"
          },
          "document_number": {
            "type": "string"
          },
          "document_type": {
            "type": "string"
          },
          "project_id": {
            "$ref": "#/components/schemas/SnowFinanceId"
          },
          "project_number": {
            "type": "string"
          },
          "project_name": {
            "type": "string"
          },
          "payload_version": {
            "enum": [
              "u4_snow_document_v1"
            ]
          },
          "message_id": {
            "type": "string",
            "minLength": 1
          },
          "payload_sha256": {
            "$ref": "#/components/schemas/SnowFinanceSha256"
          },
          "status": {
            "enum": [
              "pending",
              "accepted",
              "rejected",
              "retryable",
              "reconcile_required",
              "cancelled"
            ]
          },
          "attempt_count": {
            "type": "integer",
            "minimum": 0
          },
          "next_attempt_at": {
            "type": "string"
          },
          "external_reference": {
            "type": "string"
          },
          "external_status": {
            "type": "string"
          },
          "response": {
            "type": "object"
          },
          "error_code": {
            "type": "string"
          },
          "queued_at": {
            "type": "string"
          },
          "last_attempt_at": {
            "type": "string"
          },
          "accepted_at": {
            "type": "string"
          },
          "rejected_at": {
            "type": "string"
          },
          "reconciled_at": {
            "type": "string"
          },
          "row_version": {
            "$ref": "#/components/schemas/SnowFinanceId"
          },
          "created_at": {
            "type": "string",
            "minLength": 1
          },
          "updated_at": {
            "type": "string",
            "minLength": 1
          },
          "transport_mode": {
            "enum": [
              "disabled"
            ]
          },
          "connector_status": {
            "enum": [
              "municipal_contract_required"
            ]
          }
        }
      },
      "SnowFinanceU4ListResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "success",
          "transmissions",
          "next_cursor_id",
          "limit",
          "transport_mode",
          "connector_status"
        ],
        "properties": {
          "success": {
            "$ref": "#/components/schemas/SnowFinanceSuccess"
          },
          "transmissions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SnowFinanceTransmission"
            }
          },
          "next_cursor_id": {
            "$ref": "#/components/schemas/SnowFinanceNullableId"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100
          },
          "transport_mode": {
            "enum": [
              "disabled"
            ]
          },
          "connector_status": {
            "enum": [
              "municipal_contract_required"
            ]
          },
          "transmission": {
            "$ref": "#/components/schemas/SnowFinanceTransmission"
          },
          "created": {
            "type": "boolean"
          },
          "idempotent_replay": {
            "type": "boolean"
          },
          "duplicate_payload": {
            "type": "boolean"
          },
          "adapter": {
            "type": "string"
          }
        }
      },
      "SnowFinanceU4QueueRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "document_id",
          "document_version",
          "idempotency_key"
        ],
        "properties": {
          "document_id": {
            "$ref": "#/components/schemas/SnowFinanceId"
          },
          "document_version": {
            "$ref": "#/components/schemas/SnowFinanceId"
          },
          "idempotency_key": {
            "type": "string",
            "minLength": 1,
            "maxLength": 240
          }
        }
      },
      "SnowFinanceU4QueueResponse": {
        "$ref": "#/components/schemas/SnowFinanceU4ListResponse"
      },
      "SnowFinanceU4ListRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "project_id",
          "limit"
        ],
        "properties": {
          "transmission_id": {
            "$ref": "#/components/schemas/SnowFinanceId"
          },
          "document_id": {
            "$ref": "#/components/schemas/SnowFinanceId"
          },
          "project_id": {
            "$ref": "#/components/schemas/SnowFinanceId"
          },
          "cursor_id": {
            "$ref": "#/components/schemas/SnowFinanceId"
          },
          "status": {
            "type": "string"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100
          }
        }
      },
      "SnowFinanceU4ListResponseContract": {
        "$ref": "#/components/schemas/SnowFinanceU4ListResponse"
      },
      "SnowFinanceU4SimulateRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "transmission_id",
          "row_version",
          "outcome",
          "response"
        ],
        "properties": {
          "transmission_id": {
            "$ref": "#/components/schemas/SnowFinanceId"
          },
          "row_version": {
            "$ref": "#/components/schemas/SnowFinanceId"
          },
          "outcome": {
            "enum": [
              "accepted",
              "rejected",
              "retryable",
              "reconcile_required"
            ]
          },
          "external_reference": {
            "type": "string"
          },
          "error_code": {
            "type": "string"
          },
          "response": {
            "type": "object"
          }
        }
      },
      "SnowFinanceU4SimulateResponse": {
        "$ref": "#/components/schemas/SnowFinanceU4ListResponse"
      },
      "SnowVehicleLoadProfileDraft": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "effective_from": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "effective_until": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "volume_without_panels_m3": {
            "type": "string",
            "pattern": "^[0-9]{1,12}(\\.[0-9]{1,6})?$",
            "nullable": true
          },
          "volume_with_panels_m3": {
            "type": "string",
            "pattern": "^[0-9]{1,12}(\\.[0-9]{1,6})?$",
            "nullable": true
          },
          "geometry_data": {
            "type": "object",
            "additionalProperties": true
          },
          "formula_code": {
            "type": "string",
            "nullable": true,
            "maxLength": 255
          },
          "formula_version": {
            "type": "string",
            "nullable": true,
            "maxLength": 255
          },
          "reference_tare_kg": {
            "type": "string",
            "pattern": "^[0-9]{1,12}(\\.[0-9]{1,6})?$",
            "nullable": true
          },
          "maximum_gross_kg": {
            "type": "string",
            "pattern": "^[0-9]{1,12}(\\.[0-9]{1,6})?$",
            "nullable": true
          },
          "maximum_payload_kg": {
            "type": "string",
            "pattern": "^[0-9]{1,12}(\\.[0-9]{1,6})?$",
            "nullable": true
          },
          "rounding_rule": {
            "type": "object",
            "additionalProperties": true
          },
          "notes": {
            "type": "string",
            "nullable": true,
            "maxLength": 5000
          }
        }
      },
      "SnowVehicleLoadProfile": {
        "type": "object",
        "required": [
          "id",
          "vehicle_id",
          "version",
          "row_version",
          "status"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "public_id": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "vehicle_id": {
            "type": "integer",
            "format": "int64"
          },
          "version": {
            "type": "integer",
            "format": "int64",
            "minimum": 1
          },
          "row_version": {
            "type": "integer",
            "format": "int64",
            "minimum": 1
          },
          "status": {
            "type": "string",
            "enum": [
              "draft",
              "approved",
              "published",
              "rejected",
              "retired"
            ]
          },
          "effective_from": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "effective_until": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "volume_without_panels_m3": {
            "type": "string",
            "pattern": "^[0-9]{1,12}(\\.[0-9]{1,6})?$",
            "nullable": true
          },
          "volume_with_panels_m3": {
            "type": "string",
            "pattern": "^[0-9]{1,12}(\\.[0-9]{1,6})?$",
            "nullable": true
          },
          "geometry_data": {
            "type": "object",
            "additionalProperties": true
          },
          "formula_code": {
            "type": "string",
            "nullable": true,
            "maxLength": 255
          },
          "formula_version": {
            "type": "string",
            "nullable": true,
            "maxLength": 255
          },
          "reference_tare_kg": {
            "type": "string",
            "pattern": "^[0-9]{1,12}(\\.[0-9]{1,6})?$",
            "nullable": true
          },
          "maximum_gross_kg": {
            "type": "string",
            "pattern": "^[0-9]{1,12}(\\.[0-9]{1,6})?$",
            "nullable": true
          },
          "maximum_payload_kg": {
            "type": "string",
            "pattern": "^[0-9]{1,12}(\\.[0-9]{1,6})?$",
            "nullable": true
          },
          "rounding_rule": {
            "type": "object",
            "additionalProperties": true
          },
          "notes": {
            "type": "string",
            "nullable": true,
            "maxLength": 5000
          },
          "profile_hash": {
            "type": "string",
            "pattern": "^[0-9a-f]{64}$",
            "nullable": true
          },
          "created_by_user_id": {
            "type": "integer",
            "nullable": true,
            "format": "int64"
          },
          "updated_by_user_id": {
            "type": "integer",
            "nullable": true,
            "format": "int64"
          },
          "approved_by_user_id": {
            "type": "integer",
            "nullable": true,
            "format": "int64"
          },
          "approved_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "published_by_user_id": {
            "type": "integer",
            "nullable": true,
            "format": "int64"
          },
          "published_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "SnowVehicleLoadProfileHistoryEntry": {
        "type": "object",
        "required": [
          "id",
          "action",
          "reason",
          "created_at"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "action": {
            "type": "string",
            "enum": [
              "approve",
              "reject",
              "publish",
              "retire"
            ]
          },
          "user_id": {
            "type": "integer",
            "nullable": true,
            "format": "int64"
          },
          "session_id": {
            "type": "integer",
            "nullable": true,
            "format": "int64"
          },
          "source": {
            "type": "string"
          },
          "summary": {
            "type": "string"
          },
          "changed_fields": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "old_data": {
            "type": "object"
          },
          "new_data": {
            "type": "object"
          },
          "diff": {
            "type": "object"
          },
          "reason": {
            "type": "string",
            "minLength": 1,
            "maxLength": 1000
          },
          "correlation_id": {
            "type": "string",
            "format": "uuid"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "SnowEntryWorkContextIds": {
        "type": "object",
        "properties": {
          "project_id": {
            "type": "string",
            "pattern": "^[1-9][0-9]*$",
            "nullable": true
          },
          "work_order_id": {
            "type": "string",
            "pattern": "^[1-9][0-9]*$",
            "nullable": true
          },
          "project_team_id": {
            "type": "string",
            "pattern": "^[1-9][0-9]*$",
            "nullable": true
          }
        }
      },
      "SnowEntryWorkContextPlan": {
        "type": "object",
        "required": [
          "success",
          "entry_id",
          "entry_version",
          "current_context",
          "resolution",
          "fillable_context",
          "conflicts",
          "historical_context_frozen",
          "can_freeze",
          "requires_review"
        ],
        "properties": {
          "success": {
            "type": "boolean"
          },
          "entry_id": {
            "type": "string",
            "pattern": "^[1-9][0-9]*$"
          },
          "entry_version": {
            "type": "string",
            "pattern": "^[1-9][0-9]*$"
          },
          "current_context": {
            "$ref": "#/components/schemas/SnowEntryWorkContextIds"
          },
          "resolution": {
            "type": "object",
            "required": [
              "resolution"
            ],
            "properties": {
              "resolution": {
                "type": "string",
                "enum": [
                  "resolved",
                  "ambiguous",
                  "not_found"
                ]
              },
              "status": {
                "type": "string"
              },
              "resolution_source": {
                "type": "string"
              },
              "project_id": {
                "type": "string",
                "pattern": "^[1-9][0-9]*$",
                "nullable": true
              },
              "work_order_id": {
                "type": "string",
                "pattern": "^[1-9][0-9]*$",
                "nullable": true
              },
              "project_team_id": {
                "type": "string",
                "pattern": "^[1-9][0-9]*$",
                "nullable": true
              }
            },
            "additionalProperties": true
          },
          "fillable_context": {
            "$ref": "#/components/schemas/SnowEntryWorkContextIds"
          },
          "conflicts": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "field",
                "frozen_id",
                "resolved_id"
              ],
              "properties": {
                "field": {
                  "type": "string",
                  "enum": [
                    "project_id",
                    "work_order_id",
                    "project_team_id"
                  ]
                },
                "frozen_id": {
                  "type": "string",
                  "pattern": "^[1-9][0-9]*$"
                },
                "resolved_id": {
                  "type": "string",
                  "pattern": "^[1-9][0-9]*$"
                }
              }
            }
          },
          "historical_context_frozen": {
            "type": "boolean"
          },
          "can_freeze": {
            "type": "boolean"
          },
          "requires_review": {
            "type": "boolean"
          },
          "frozen": {
            "type": "boolean"
          },
          "already_frozen": {
            "type": "boolean"
          },
          "entry": {
            "type": "object",
            "nullable": true
          },
          "error": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "SnowAccessCreditProjection": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "access_id",
          "billing_mode",
          "credit_balance",
          "credit_unit_id",
          "credit_version"
        ],
        "properties": {
          "access_id": {
            "type": "string",
            "pattern": "^[1-9][0-9]*$"
          },
          "billing_mode": {
            "type": "string",
            "enum": [
              "prepaid"
            ]
          },
          "credit_balance": {
            "type": "string",
            "pattern": "^-?(0|[1-9][0-9]*)\\.[0-9]{6}$"
          },
          "credit_unit_id": {
            "type": "string",
            "pattern": "^[1-9][0-9]*$",
            "nullable": true
          },
          "credit_version": {
            "type": "string",
            "pattern": "^(0|[1-9][0-9]*)$"
          }
        }
      },
      "SnowAccessCreditMovement": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "public_id",
          "access_id",
          "entry_id",
          "commercial_document_line_id",
          "movement_type",
          "quantity",
          "signed_quantity",
          "unit_id",
          "balance_after",
          "sequence_no",
          "previous_movement_id",
          "reverses_movement_id",
          "idempotency_key",
          "policy_snapshot",
          "occurred_at",
          "reason",
          "created_by_user_id",
          "created_at"
        ],
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[1-9][0-9]*$"
          },
          "public_id": {
            "type": "string",
            "format": "uuid"
          },
          "access_id": {
            "type": "string",
            "pattern": "^[1-9][0-9]*$"
          },
          "entry_id": {
            "type": "string",
            "pattern": "^[1-9][0-9]*$",
            "nullable": true
          },
          "commercial_document_line_id": {
            "type": "string",
            "pattern": "^[1-9][0-9]*$",
            "nullable": true
          },
          "movement_type": {
            "type": "string",
            "enum": [
              "purchase",
              "consume",
              "refund",
              "adjustment",
              "reversal"
            ]
          },
          "quantity": {
            "type": "string",
            "pattern": "^-?(0|[1-9][0-9]*)\\.[0-9]{6}$"
          },
          "signed_quantity": {
            "type": "string",
            "pattern": "^-?(0|[1-9][0-9]*)\\.[0-9]{6}$"
          },
          "unit_id": {
            "type": "string",
            "pattern": "^[1-9][0-9]*$"
          },
          "balance_after": {
            "type": "string",
            "pattern": "^-?(0|[1-9][0-9]*)\\.[0-9]{6}$"
          },
          "sequence_no": {
            "type": "string",
            "pattern": "^[1-9][0-9]*$"
          },
          "previous_movement_id": {
            "type": "string",
            "pattern": "^[1-9][0-9]*$",
            "nullable": true
          },
          "reverses_movement_id": {
            "type": "string",
            "pattern": "^[1-9][0-9]*$",
            "nullable": true
          },
          "idempotency_key": {
            "type": "string",
            "format": "uuid"
          },
          "policy_snapshot": {
            "type": "object",
            "additionalProperties": true
          },
          "occurred_at": {
            "type": "string",
            "format": "date-time"
          },
          "reason": {
            "type": "string"
          },
          "created_by_user_id": {
            "type": "string",
            "pattern": "^[1-9][0-9]*$",
            "nullable": true
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "SnowAccessCreditPreviewResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "success",
          "operation",
          "movement_type",
          "quantity",
          "signed_quantity",
          "unit_id",
          "direction",
          "source",
          "current_projection",
          "resulting_projection",
          "occurred_at",
          "reason",
          "policy_snapshot",
          "idempotency_key_required_on_commit"
        ],
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ]
          },
          "operation": {
            "type": "string",
            "enum": [
              "preview"
            ]
          },
          "movement_type": {
            "type": "string",
            "enum": [
              "purchase",
              "consume",
              "refund",
              "adjustment",
              "reversal"
            ]
          },
          "quantity": {
            "type": "string",
            "pattern": "^-?(0|[1-9][0-9]*)\\.[0-9]{6}$"
          },
          "signed_quantity": {
            "type": "string",
            "pattern": "^-?(0|[1-9][0-9]*)\\.[0-9]{6}$"
          },
          "unit_id": {
            "type": "string",
            "pattern": "^[1-9][0-9]*$"
          },
          "direction": {
            "type": "string",
            "enum": [
              "credit",
              "debit"
            ],
            "nullable": true
          },
          "source": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "entry_id",
              "commercial_document_line_id",
              "reverses_movement_id"
            ],
            "properties": {
              "entry_id": {
                "type": "string",
                "pattern": "^[1-9][0-9]*$",
                "nullable": true
              },
              "commercial_document_line_id": {
                "type": "string",
                "pattern": "^[1-9][0-9]*$",
                "nullable": true
              },
              "reverses_movement_id": {
                "type": "string",
                "pattern": "^[1-9][0-9]*$",
                "nullable": true
              }
            }
          },
          "current_projection": {
            "$ref": "#/components/schemas/SnowAccessCreditProjection"
          },
          "resulting_projection": {
            "$ref": "#/components/schemas/SnowAccessCreditProjection"
          },
          "occurred_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "reason": {
            "type": "string"
          },
          "policy_snapshot": {
            "type": "object",
            "additionalProperties": true
          },
          "idempotency_key_required_on_commit": {
            "type": "boolean",
            "enum": [
              true
            ]
          }
        }
      },
      "SnowAccessCreditCommitResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "success",
          "operation",
          "idempotent_replay",
          "movement",
          "projection"
        ],
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ]
          },
          "operation": {
            "type": "string",
            "enum": [
              "commit"
            ]
          },
          "idempotent_replay": {
            "type": "boolean"
          },
          "movement": {
            "$ref": "#/components/schemas/SnowAccessCreditMovement"
          },
          "projection": {
            "$ref": "#/components/schemas/SnowAccessCreditProjection"
          }
        }
      },
      "SnowAccessCreditHistoryResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "success",
          "projection",
          "projection_consistent",
          "projection_error",
          "movements",
          "page_limit",
          "next_cursor_sequence"
        ],
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ]
          },
          "projection": {
            "$ref": "#/components/schemas/SnowAccessCreditProjection"
          },
          "projection_consistent": {
            "type": "boolean"
          },
          "projection_error": {
            "type": "object",
            "nullable": true,
            "additionalProperties": true
          },
          "movements": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SnowAccessCreditMovement"
            }
          },
          "page_limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100
          },
          "next_cursor_sequence": {
            "type": "string",
            "pattern": "^[1-9][0-9]*$",
            "nullable": true
          }
        }
      },
      "SnowReportPreviewRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "report_key",
          "period_from",
          "period_to"
        ],
        "properties": {
          "report_key": {
            "type": "string",
            "enum": [
              "entries_consolidated",
              "daily_volume",
              "trips_anomalies",
              "instruments",
              "teams_presence",
              "billed_costs",
              "measurement_corrections",
              "missing_evidence",
              "sync",
              "u4"
            ]
          },
          "period_from": {
            "type": "string",
            "format": "date-time"
          },
          "period_to": {
            "type": "string",
            "format": "date-time"
          },
          "company_id": {
            "type": "string",
            "pattern": "^[1-9][0-9]{0,18}$"
          },
          "site_id": {
            "type": "string",
            "pattern": "^[1-9][0-9]{0,18}$"
          },
          "project_id": {
            "type": "string",
            "pattern": "^[1-9][0-9]{0,18}$"
          },
          "project_team_id": {
            "type": "string",
            "pattern": "^[1-9][0-9]{0,18}$"
          },
          "device_id": {
            "type": "string",
            "pattern": "^[1-9][0-9]{0,18}$"
          },
          "status": {
            "type": "string",
            "pattern": "^[a-z][a-z0-9_]{0,63}$"
          },
          "cursor": {
            "type": "string",
            "description": "Positive ID or YYYY-MM-DD for daily_volume."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "default": 50
          }
        }
      },
      "SnowReportExport": {
        "type": "object",
        "required": [
          "id",
          "public_id",
          "owner_user_id",
          "status",
          "payload_version",
          "request",
          "request_sha256",
          "scope",
          "output_format",
          "attempt_count",
          "attempt_limit",
          "progress_current",
          "queued_at",
          "created_at",
          "updated_at",
          "row_version",
          "pdf_status"
        ],
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[1-9][0-9]{0,18}$"
          },
          "public_id": {
            "type": "string",
            "format": "uuid"
          },
          "owner_user_id": {
            "type": "string",
            "pattern": "^[1-9][0-9]{0,18}$"
          },
          "task_type": {
            "type": "string",
            "enum": [
              "report_export"
            ]
          },
          "status": {
            "type": "string",
            "enum": [
              "queued",
              "running",
              "succeeded",
              "failed",
              "cancelled"
            ]
          },
          "payload_version": {
            "type": "string",
            "enum": [
              "snow_report_export_v1"
            ]
          },
          "request": {
            "type": "object"
          },
          "request_sha256": {
            "type": "string",
            "pattern": "^[0-9a-f]{64}$"
          },
          "scope": {
            "type": "object"
          },
          "output_format": {
            "type": "string",
            "enum": [
              "json",
              "csv",
              "xlsx",
              "pdf"
            ]
          },
          "attempt_count": {
            "type": "string",
            "pattern": "^[0-9]+$"
          },
          "attempt_limit": {
            "type": "string",
            "pattern": "^[1-9][0-9]*$"
          },
          "next_attempt_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "progress_current": {
            "type": "string",
            "pattern": "^[0-9]+$"
          },
          "progress_total": {
            "type": "string",
            "pattern": "^[0-9]+$",
            "nullable": true
          },
          "result_document_id": {
            "type": "string",
            "pattern": "^[1-9][0-9]{0,18}$",
            "nullable": true
          },
          "result_sha256": {
            "type": "string",
            "pattern": "^[0-9a-f]{64}$",
            "nullable": true
          },
          "error_code": {
            "type": "string"
          },
          "error_detail": {
            "type": "string"
          },
          "error_sha256": {
            "type": "string",
            "pattern": "^[0-9a-f]{64}$",
            "nullable": true
          },
          "queued_at": {
            "type": "string",
            "format": "date-time"
          },
          "started_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "completed_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "cancel_requested_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "cancelled_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "cancelled_by_user_id": {
            "type": "string",
            "pattern": "^[1-9][0-9]{0,18}$",
            "nullable": true
          },
          "expires_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          },
          "row_version": {
            "type": "string",
            "pattern": "^[1-9][0-9]{0,18}$"
          },
          "pdf_status": {
            "type": "string",
            "enum": [
              "template_required"
            ]
          }
        }
      },
      "SnowEntryMeasurementInput": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "measurement_kind",
          "measurement_role",
          "value",
          "unit_id"
        ],
        "properties": {
          "measurement_kind": {
            "type": "string",
            "enum": [
              "weight",
              "volume",
              "distance",
              "count"
            ]
          },
          "measurement_role": {
            "type": "string",
            "enum": [
              "gross",
              "tare",
              "quantity",
              "reference"
            ]
          },
          "value": {
            "type": "string",
            "pattern": "^(0|[1-9][0-9]{0,11})(\\.[0-9]{1,6})?$"
          },
          "unit_id": {
            "oneOf": [
              {
                "type": "integer",
                "format": "int64",
                "minimum": 1
              },
              {
                "type": "string",
                "pattern": "^[1-9][0-9]*$"
              }
            ]
          },
          "correction_of_id": {
            "oneOf": [
              {
                "type": "integer",
                "format": "int64",
                "minimum": 1
              },
              {
                "type": "string",
                "pattern": "^[1-9][0-9]*$"
              }
            ]
          },
          "measurement_device_id": {
            "oneOf": [
              {
                "type": "integer",
                "format": "int64",
                "minimum": 1
              },
              {
                "type": "string",
                "pattern": "^[1-9][0-9]*$"
              }
            ]
          },
          "captured_at_controller": {
            "type": "string",
            "format": "date-time"
          },
          "ticket_number": {
            "type": "string"
          },
          "source": {
            "type": "string",
            "enum": [
              "manual"
            ]
          }
        }
      },
      "SnowEntryMeasurementCorrectionInput": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "measurement_kind",
          "measurement_role",
          "value",
          "unit_id",
          "correction_of_id"
        ],
        "properties": {
          "measurement_kind": {
            "type": "string",
            "enum": [
              "weight",
              "volume",
              "distance",
              "count"
            ]
          },
          "measurement_role": {
            "type": "string",
            "enum": [
              "gross",
              "tare",
              "quantity",
              "reference"
            ]
          },
          "value": {
            "type": "string",
            "pattern": "^(0|[1-9][0-9]{0,11})(\\.[0-9]{1,6})?$"
          },
          "unit_id": {
            "oneOf": [
              {
                "type": "integer",
                "format": "int64",
                "minimum": 1
              },
              {
                "type": "string",
                "pattern": "^[1-9][0-9]*$"
              }
            ]
          },
          "correction_of_id": {
            "oneOf": [
              {
                "type": "integer",
                "format": "int64",
                "minimum": 1
              },
              {
                "type": "string",
                "pattern": "^[1-9][0-9]*$"
              }
            ]
          },
          "measurement_device_id": {
            "oneOf": [
              {
                "type": "integer",
                "format": "int64",
                "minimum": 1
              },
              {
                "type": "string",
                "pattern": "^[1-9][0-9]*$"
              }
            ]
          },
          "captured_at_controller": {
            "type": "string",
            "format": "date-time"
          },
          "ticket_number": {
            "type": "string"
          },
          "source": {
            "type": "string",
            "enum": [
              "manual"
            ]
          }
        }
      },
      "SnowEntryMeasurement": {
        "type": "object",
        "required": [
          "id",
          "measurement_kind",
          "measurement_role",
          "value",
          "unit_id",
          "canonical_value",
          "source",
          "stable",
          "status"
        ],
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[1-9][0-9]*$"
          },
          "public_id": {
            "type": "string",
            "format": "uuid"
          },
          "vehicle_id": {
            "type": "string",
            "pattern": "^[1-9][0-9]*$",
            "nullable": true
          },
          "site_id": {
            "type": "string",
            "pattern": "^[1-9][0-9]*$",
            "nullable": true
          },
          "lane_device_id": {
            "type": "integer",
            "nullable": true
          },
          "measurement_device_id": {
            "type": "integer",
            "nullable": true
          },
          "measurement_message_id": {
            "type": "string"
          },
          "source_message_id": {
            "type": "string",
            "nullable": true
          },
          "measurement_kind": {
            "type": "string",
            "enum": [
              "weight",
              "volume",
              "distance",
              "count"
            ]
          },
          "measurement_role": {
            "type": "string"
          },
          "value": {
            "type": "string"
          },
          "unit_id": {
            "type": "string",
            "pattern": "^[1-9][0-9]*$",
            "nullable": true
          },
          "canonical_value": {
            "type": "string"
          },
          "canonical_unit_id": {
            "type": "string",
            "pattern": "^[1-9][0-9]*$",
            "nullable": true
          },
          "source": {
            "type": "string"
          },
          "ticket_number": {
            "type": "string"
          },
          "captured_at_controller": {
            "type": "string",
            "format": "date-time"
          },
          "received_at_server": {
            "type": "string",
            "format": "date-time"
          },
          "stable": {
            "type": "boolean"
          },
          "status": {
            "type": "string"
          },
          "correction_of_id": {
            "type": "string",
            "pattern": "^[1-9][0-9]*$",
            "nullable": true
          },
          "gross_source_id": {
            "type": "string",
            "pattern": "^[1-9][0-9]*$",
            "nullable": true
          },
          "tare_source_id": {
            "type": "string",
            "pattern": "^[1-9][0-9]*$",
            "nullable": true
          },
          "reason": {
            "type": "string"
          },
          "correlation_id": {
            "type": "string",
            "format": "uuid"
          },
          "raw_payload_sha256": {
            "type": "string",
            "pattern": "^[0-9a-f]{64}$"
          },
          "raw_data": {
            "type": "object",
            "additionalProperties": true
          },
          "raw_data_raw": {
            "type": "string"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "SnowEntry": {
        "type": "object",
        "required": [
          "id",
          "public_id",
          "access_card_id",
          "enter_device_id",
          "entry_kind",
          "workflow_status",
          "version",
          "measurement_status",
          "pricing_status",
          "deleted",
          "measurements"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "minimum": 1
          },
          "public_id": {
            "type": "string",
            "format": "uuid"
          },
          "access_card_id": {
            "type": "integer",
            "minimum": 1
          },
          "user_id": {
            "type": "integer",
            "nullable": true
          },
          "customer_id": {
            "type": "integer",
            "nullable": true
          },
          "enter_device_id": {
            "type": "integer",
            "minimum": 1
          },
          "exit_device_id": {
            "type": "integer",
            "nullable": true
          },
          "zone_id": {
            "type": "integer",
            "nullable": true
          },
          "company_id": {
            "type": "string",
            "pattern": "^[1-9][0-9]*$",
            "nullable": true
          },
          "site_id": {
            "type": "string",
            "pattern": "^[1-9][0-9]*$",
            "nullable": true
          },
          "vehicle_id": {
            "type": "string",
            "pattern": "^[1-9][0-9]*$",
            "nullable": true
          },
          "supplier_id": {
            "type": "string",
            "pattern": "^[1-9][0-9]*$",
            "nullable": true
          },
          "project_id": {
            "type": "string",
            "pattern": "^[1-9][0-9]*$",
            "nullable": true
          },
          "work_order_id": {
            "type": "string",
            "pattern": "^[1-9][0-9]*$",
            "nullable": true
          },
          "project_team_id": {
            "type": "string",
            "pattern": "^[1-9][0-9]*$",
            "nullable": true
          },
          "trip_number": {
            "type": "string",
            "pattern": "^[1-9][0-9]*$",
            "nullable": true
          },
          "load_profile_id": {
            "type": "string",
            "pattern": "^[1-9][0-9]*$",
            "nullable": true
          },
          "gross_measurement_id": {
            "type": "string",
            "pattern": "^[1-9][0-9]*$",
            "nullable": true
          },
          "tare_measurement_id": {
            "type": "string",
            "pattern": "^[1-9][0-9]*$",
            "nullable": true
          },
          "net_measurement_id": {
            "type": "string",
            "pattern": "^[1-9][0-9]*$",
            "nullable": true
          },
          "billable_unit_id": {
            "type": "string",
            "pattern": "^[1-9][0-9]*$",
            "nullable": true
          },
          "product_id": {
            "type": "string",
            "pattern": "^[1-9][0-9]*$",
            "nullable": true
          },
          "price_list_id": {
            "type": "string",
            "pattern": "^[1-9][0-9]*$",
            "nullable": true
          },
          "product_price_id": {
            "type": "string",
            "pattern": "^[1-9][0-9]*$",
            "nullable": true
          },
          "contract_document_id": {
            "type": "string",
            "pattern": "^[1-9][0-9]*$",
            "nullable": true
          },
          "contract_line_id": {
            "type": "string",
            "pattern": "^[1-9][0-9]*$",
            "nullable": true
          },
          "source_agent_device_id": {
            "type": "string",
            "pattern": "^[1-9][0-9]*$",
            "nullable": true
          },
          "correction_of_entry_id": {
            "type": "integer",
            "nullable": true
          },
          "entry_kind": {
            "type": "string",
            "enum": [
              "snow_delivery",
              "snow_removal",
              "snow_transport",
              "correction",
              "adjustment"
            ]
          },
          "source": {
            "type": "string"
          },
          "workflow_status": {
            "type": "string",
            "enum": [
              "captured",
              "measurement_pending",
              "pricing_pending",
              "ready",
              "cancelled"
            ]
          },
          "controller_occurred_at": {
            "type": "string",
            "format": "date-time"
          },
          "server_received_at": {
            "type": "string",
            "format": "date-time"
          },
          "sync_status": {
            "type": "string"
          },
          "sync_attempted_at": {
            "type": "string"
          },
          "synced_at": {
            "type": "string"
          },
          "sync_error_code": {
            "type": "string"
          },
          "version": {
            "type": "string",
            "pattern": "^[1-9][0-9]*$"
          },
          "panel_mode": {
            "type": "string",
            "enum": [
              "unknown",
              "without_panels",
              "with_panels",
              "not_applicable"
            ]
          },
          "gross_weight_kg": {
            "type": "string"
          },
          "tare_weight_kg": {
            "type": "string"
          },
          "net_weight_kg": {
            "type": "string"
          },
          "volume_m3": {
            "type": "string"
          },
          "distance_km": {
            "type": "string"
          },
          "billable_quantity": {
            "type": "string"
          },
          "unit_rate": {
            "type": "string"
          },
          "subtotal": {
            "type": "string"
          },
          "tax1": {
            "type": "string"
          },
          "tax2": {
            "type": "string"
          },
          "total_price": {
            "type": "string"
          },
          "measurement_status": {
            "type": "string"
          },
          "pricing_basis": {
            "type": "string"
          },
          "pricing_status": {
            "type": "string"
          },
          "pricing_algorithm_version": {
            "type": "string"
          },
          "pricing_snapshot_hash": {
            "type": "string"
          },
          "priced_at": {
            "type": "string"
          },
          "locked_at": {
            "type": "string"
          },
          "locked_by_user_id": {
            "type": "integer",
            "nullable": true
          },
          "transaction_id": {
            "type": "integer",
            "nullable": true
          },
          "payment_required": {
            "type": "boolean"
          },
          "paid": {
            "type": "boolean"
          },
          "enter_date_at": {
            "type": "string"
          },
          "exit_date_at": {
            "type": "string"
          },
          "deleted": {
            "type": "boolean"
          },
          "deleted_at": {
            "type": "string"
          },
          "deleted_by_user_id": {
            "type": "integer",
            "nullable": true
          },
          "deleted_reason": {
            "type": "string"
          },
          "correlation_id": {
            "type": "string",
            "format": "uuid"
          },
          "source_message_id": {
            "type": "string",
            "nullable": true
          },
          "measurements": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SnowEntryMeasurement"
            }
          }
        },
        "additionalProperties": true
      },
      "SnowEntryFilter": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "search": {
            "type": "string"
          },
          "page_limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100
          },
          "cursor_id": {
            "oneOf": [
              {
                "type": "integer",
                "format": "int64",
                "minimum": 0
              },
              {
                "type": "string",
                "pattern": "^(0|[1-9][0-9]*)$"
              }
            ]
          },
          "include_deleted": {
            "type": "boolean"
          },
          "date_from": {
            "type": "string",
            "format": "date-time",
            "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}(\\.[0-9]{1,6})?Z$",
            "description": "Inclusive UTC lower bound for controller_occurred_at. The interval is [date_from, date_to)."
          },
          "date_to": {
            "type": "string",
            "format": "date-time",
            "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}(\\.[0-9]{1,6})?Z$",
            "description": "Exclusive UTC upper bound for controller_occurred_at. For an inclusive civil end date, send 00:00:00Z at the start of the following civil day."
          },
          "project_ids": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "type": "integer",
                  "format": "int64",
                  "minimum": 1
                },
                {
                  "type": "string",
                  "pattern": "^[1-9][0-9]*$"
                }
              ]
            },
            "maxItems": 100
          },
          "site_ids": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "type": "integer",
                  "format": "int64",
                  "minimum": 1
                },
                {
                  "type": "string",
                  "pattern": "^[1-9][0-9]*$"
                }
              ]
            }
          },
          "device_ids": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "type": "integer",
                  "format": "int64",
                  "minimum": 1
                },
                {
                  "type": "string",
                  "pattern": "^[1-9][0-9]*$"
                }
              ]
            }
          },
          "work_order_ids": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "type": "integer",
                  "format": "int64",
                  "minimum": 1
                },
                {
                  "type": "string",
                  "pattern": "^[1-9][0-9]*$"
                }
              ]
            }
          },
          "project_team_ids": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "type": "integer",
                  "format": "int64",
                  "minimum": 1
                },
                {
                  "type": "string",
                  "pattern": "^[1-9][0-9]*$"
                }
              ]
            }
          },
          "vehicle_ids": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "type": "integer",
                  "format": "int64",
                  "minimum": 1
                },
                {
                  "type": "string",
                  "pattern": "^[1-9][0-9]*$"
                }
              ]
            }
          },
          "access_card_ids": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "type": "integer",
                  "format": "int64",
                  "minimum": 1
                },
                {
                  "type": "string",
                  "pattern": "^[1-9][0-9]*$"
                }
              ]
            }
          },
          "trip_numbers": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "type": "integer",
                  "format": "int64",
                  "minimum": 1
                },
                {
                  "type": "string",
                  "pattern": "^[1-9][0-9]*$"
                }
              ]
            }
          },
          "pricing_statuses": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1
            }
          },
          "workflow_statuses": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1
            }
          },
          "pricing_bases": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1
            }
          },
          "sync_statuses": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1
            }
          },
          "measurement_statuses": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1
            }
          },
          "gross_min": {
            "type": "string",
            "pattern": "^(0|[1-9][0-9]{0,11})(\\.[0-9]{1,6})?$"
          },
          "gross_max": {
            "type": "string",
            "pattern": "^(0|[1-9][0-9]{0,11})(\\.[0-9]{1,6})?$"
          },
          "tare_min": {
            "type": "string",
            "pattern": "^(0|[1-9][0-9]{0,11})(\\.[0-9]{1,6})?$"
          },
          "tare_max": {
            "type": "string",
            "pattern": "^(0|[1-9][0-9]{0,11})(\\.[0-9]{1,6})?$"
          },
          "net_min": {
            "type": "string",
            "pattern": "^(0|[1-9][0-9]{0,11})(\\.[0-9]{1,6})?$"
          },
          "net_max": {
            "type": "string",
            "pattern": "^(0|[1-9][0-9]{0,11})(\\.[0-9]{1,6})?$"
          },
          "volume_min": {
            "type": "string",
            "pattern": "^(0|[1-9][0-9]{0,11})(\\.[0-9]{1,6})?$"
          },
          "volume_max": {
            "type": "string",
            "pattern": "^(0|[1-9][0-9]{0,11})(\\.[0-9]{1,6})?$"
          },
          "distance_min": {
            "type": "string",
            "pattern": "^(0|[1-9][0-9]{0,11})(\\.[0-9]{1,6})?$"
          },
          "distance_max": {
            "type": "string",
            "pattern": "^(0|[1-9][0-9]{0,11})(\\.[0-9]{1,6})?$"
          },
          "anomaly_only": {
            "type": "boolean"
          },
          "has_media": {
            "type": "boolean"
          },
          "duplicates_only": {
            "type": "boolean"
          }
        }
      },
      "SnowEntryContextInput": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "entry_kind": {
            "type": "string",
            "enum": [
              "snow_delivery",
              "snow_removal",
              "snow_transport",
              "correction",
              "adjustment"
            ]
          },
          "company_id": {
            "oneOf": [
              {
                "type": "integer",
                "format": "int64",
                "minimum": 0
              },
              {
                "type": "string",
                "pattern": "^(0|[1-9][0-9]*)$"
              }
            ]
          },
          "site_id": {
            "oneOf": [
              {
                "type": "integer",
                "format": "int64",
                "minimum": 0
              },
              {
                "type": "string",
                "pattern": "^(0|[1-9][0-9]*)$"
              }
            ]
          },
          "vehicle_id": {
            "oneOf": [
              {
                "type": "integer",
                "format": "int64",
                "minimum": 0
              },
              {
                "type": "string",
                "pattern": "^(0|[1-9][0-9]*)$"
              }
            ]
          },
          "supplier_id": {
            "oneOf": [
              {
                "type": "integer",
                "format": "int64",
                "minimum": 0
              },
              {
                "type": "string",
                "pattern": "^(0|[1-9][0-9]*)$"
              }
            ]
          },
          "project_id": {
            "oneOf": [
              {
                "type": "integer",
                "format": "int64",
                "minimum": 0
              },
              {
                "type": "string",
                "pattern": "^(0|[1-9][0-9]*)$"
              }
            ]
          },
          "work_order_id": {
            "oneOf": [
              {
                "type": "integer",
                "format": "int64",
                "minimum": 0
              },
              {
                "type": "string",
                "pattern": "^(0|[1-9][0-9]*)$"
              }
            ]
          },
          "project_team_id": {
            "oneOf": [
              {
                "type": "integer",
                "format": "int64",
                "minimum": 0
              },
              {
                "type": "string",
                "pattern": "^(0|[1-9][0-9]*)$"
              }
            ]
          },
          "trip_number": {
            "oneOf": [
              {
                "type": "integer",
                "format": "int64",
                "minimum": 0
              },
              {
                "type": "string",
                "pattern": "^(0|[1-9][0-9]*)$"
              }
            ]
          },
          "load_profile_id": {
            "oneOf": [
              {
                "type": "integer",
                "format": "int64",
                "minimum": 0
              },
              {
                "type": "string",
                "pattern": "^(0|[1-9][0-9]*)$"
              }
            ]
          },
          "correction_of_entry_id": {
            "oneOf": [
              {
                "type": "integer",
                "format": "int64",
                "minimum": 1
              },
              {
                "type": "string",
                "pattern": "^[1-9][0-9]*$"
              }
            ]
          },
          "panel_mode": {
            "type": "string",
            "enum": [
              "unknown",
              "without_panels",
              "with_panels",
              "not_applicable"
            ]
          },
          "controller_occurred_at": {
            "type": "string",
            "format": "date-time"
          },
          "measurements": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SnowEntryMeasurementInput"
            }
          }
        },
        "oneOf": [
          {
            "properties": {
              "entry_kind": {
                "type": "string",
                "enum": [
                  "correction",
                  "adjustment"
                ]
              }
            },
            "required": [
              "entry_kind",
              "correction_of_entry_id"
            ]
          },
          {
            "properties": {
              "entry_kind": {
                "type": "string",
                "enum": [
                  "snow_delivery",
                  "snow_removal",
                  "snow_transport"
                ]
              }
            },
            "not": {
              "required": [
                "correction_of_entry_id"
              ]
            }
          }
        ]
      },
      "SnowEntryPatchChanges": {
        "type": "object",
        "additionalProperties": false,
        "minProperties": 1,
        "properties": {
          "vehicle_id": {
            "anyOf": [
              {
                "type": "integer",
                "format": "int64",
                "minimum": 1,
                "nullable": true
              },
              {
                "type": "string",
                "pattern": "^[1-9][0-9]*$"
              }
            ]
          },
          "supplier_id": {
            "anyOf": [
              {
                "type": "integer",
                "format": "int64",
                "minimum": 1,
                "nullable": true
              },
              {
                "type": "string",
                "pattern": "^[1-9][0-9]*$"
              }
            ]
          },
          "project_id": {
            "anyOf": [
              {
                "type": "integer",
                "format": "int64",
                "minimum": 1,
                "nullable": true
              },
              {
                "type": "string",
                "pattern": "^[1-9][0-9]*$"
              }
            ]
          },
          "work_order_id": {
            "anyOf": [
              {
                "type": "integer",
                "format": "int64",
                "minimum": 1,
                "nullable": true
              },
              {
                "type": "string",
                "pattern": "^[1-9][0-9]*$"
              }
            ]
          },
          "project_team_id": {
            "anyOf": [
              {
                "type": "integer",
                "format": "int64",
                "minimum": 1,
                "nullable": true
              },
              {
                "type": "string",
                "pattern": "^[1-9][0-9]*$"
              }
            ]
          },
          "trip_number": {
            "anyOf": [
              {
                "type": "integer",
                "format": "int64",
                "minimum": 1,
                "nullable": true
              },
              {
                "type": "string",
                "pattern": "^[1-9][0-9]*$"
              }
            ]
          },
          "load_profile_id": {
            "anyOf": [
              {
                "type": "integer",
                "format": "int64",
                "minimum": 1,
                "nullable": true
              },
              {
                "type": "string",
                "pattern": "^[1-9][0-9]*$"
              }
            ]
          },
          "panel_mode": {
            "type": "string",
            "enum": [
              "unknown",
              "without_panels",
              "with_panels",
              "not_applicable"
            ]
          },
          "workflow_status": {
            "type": "string",
            "enum": [
              "captured",
              "measurement_pending",
              "pricing_pending",
              "ready",
              "cancelled"
            ]
          },
          "measurements": {
            "type": "array",
            "minItems": 1,
            "items": {
              "$ref": "#/components/schemas/SnowEntryMeasurementCorrectionInput"
            }
          }
        }
      },
      "SnowFeatureFlags": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "snow_public_ids": {
            "type": "boolean"
          },
          "snow_entry_fields": {
            "type": "boolean"
          },
          "edge_protocol_v2": {
            "type": "boolean"
          },
          "weighing_enabled": {
            "type": "boolean"
          },
          "measured_pricing": {
            "type": "boolean"
          },
          "media_evidence": {
            "type": "boolean"
          },
          "snow_teams": {
            "type": "boolean"
          },
          "snow_prepaid": {
            "type": "boolean"
          },
          "u4_enabled": {
            "type": "boolean"
          }
        }
      },
      "SnowSiteFeatures": {
        "type": "object",
        "required": [
          "schema_version",
          "revision",
          "mode",
          "configured",
          "effective",
          "blocked_reasons"
        ],
        "properties": {
          "schema_version": {
            "type": "integer",
            "enum": [
              1
            ]
          },
          "revision": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          },
          "mode": {
            "type": "string",
            "enum": [
              "off",
              "shadow",
              "active"
            ]
          },
          "configured": {
            "$ref": "#/components/schemas/SnowFeatureFlags"
          },
          "effective": {
            "$ref": "#/components/schemas/SnowFeatureFlags"
          },
          "configured_flags": {
            "$ref": "#/components/schemas/SnowFeatureFlags"
          },
          "effective_flags": {
            "$ref": "#/components/schemas/SnowFeatureFlags"
          },
          "blocked_reasons": {
            "type": "object",
            "additionalProperties": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          }
        }
      },
      "SnowSite": {
        "type": "object",
        "required": [
          "id",
          "company_id",
          "name",
          "snow_season_status",
          "snow_features"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "company_id": {
            "type": "integer",
            "format": "int64",
            "minimum": 0,
            "description": "Owning company; zero means not assigned."
          },
          "code": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "status": {
            "type": "boolean"
          },
          "site_type": {
            "type": "string"
          },
          "zone_id": {
            "type": "integer"
          },
          "timezone": {
            "type": "string"
          },
          "snow_season_status": {
            "type": "string",
            "enum": [
              "inactive",
              "planned",
              "active",
              "suspended",
              "closed"
            ]
          },
          "snow_features": {
            "$ref": "#/components/schemas/SnowSiteFeatures"
          },
          "device_count": {
            "type": "integer"
          },
          "online_device_count": {
            "type": "integer"
          },
          "created_at": {
            "type": "string"
          },
          "updated_at": {
            "type": "string"
          }
        },
        "additionalProperties": true
      },
      "SiteFilterItem": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "company_id",
          "code",
          "name",
          "zone_id",
          "status",
          "snow_season_status",
          "snow_features"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "minimum": 1
          },
          "company_id": {
            "type": "integer",
            "format": "int64",
            "minimum": 0,
            "description": "Owning company; zero means not assigned."
          },
          "code": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "zone_id": {
            "type": "integer",
            "minimum": 1
          },
          "zone_name": {
            "type": "string"
          },
          "status": {
            "type": "boolean"
          },
          "snow_season_status": {
            "type": "string",
            "enum": [
              "inactive",
              "planned",
              "active",
              "suspended",
              "closed"
            ]
          },
          "snow_features": {
            "$ref": "#/components/schemas/SnowSiteFeatures"
          }
        }
      },
      "SnowCameraEvidenceUploadResponse": {
        "type": "object",
        "required": [
          "success",
          "camera_event_id",
          "integrity_sha256"
        ],
        "properties": {
          "success": {
            "type": "boolean"
          },
          "already_ready": {
            "type": "boolean"
          },
          "camera_event_id": {
            "type": "integer",
            "minimum": 1
          },
          "entry_id": {
            "type": "integer",
            "nullable": true
          },
          "filename": {
            "type": "string"
          },
          "content_type": {
            "type": "string"
          },
          "byte_size": {
            "type": "integer",
            "format": "int64"
          },
          "integrity_sha256": {
            "type": "string",
            "pattern": "^[0-9a-f]{64}$"
          },
          "upload_status": {
            "type": "string",
            "enum": [
              "ready"
            ]
          },
          "retention_days": {
            "type": "integer",
            "minimum": 1,
            "maximum": 3650
          }
        }
      },
      "SnowCameraEvidenceAccessResponse": {
        "type": "object",
        "required": [
          "success",
          "access_url",
          "expires_in",
          "evidence"
        ],
        "properties": {
          "success": {
            "type": "boolean"
          },
          "access_url": {
            "type": "string",
            "format": "uri"
          },
          "expires_in": {
            "type": "integer",
            "minimum": 30,
            "maximum": 300
          },
          "evidence": {
            "type": "object",
            "required": [
              "camera_event_id",
              "filename",
              "content_type",
              "byte_size",
              "integrity_sha256"
            ],
            "properties": {
              "camera_event_id": {
                "type": "integer",
                "minimum": 1
              },
              "filename": {
                "type": "string"
              },
              "content_type": {
                "type": "string"
              },
              "byte_size": {
                "type": "integer",
                "format": "int64"
              },
              "integrity_sha256": {
                "type": "string",
                "pattern": "^[0-9a-f]{64}$"
              }
            }
          }
        }
      },
      "SnowTeamPayload": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "supervisor_user_id": {
            "anyOf": [
              {
                "type": "integer",
                "format": "int64",
                "minimum": 1,
                "nullable": true
              },
              {
                "type": "string",
                "pattern": "^[1-9][0-9]*$"
              }
            ]
          },
          "status": {
            "type": "string"
          },
          "effective_from": {
            "type": "string",
            "format": "date-time"
          },
          "effective_until": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "is_default_template": {
            "type": "boolean"
          },
          "operation_data": {
            "type": "object",
            "additionalProperties": true
          },
          "active": {
            "type": "boolean"
          }
        }
      },
      "SnowTeamAssignmentPayload": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "project_team_id": {
            "anyOf": [
              {
                "type": "integer",
                "format": "int64",
                "minimum": 1,
                "nullable": true
              },
              {
                "type": "string",
                "pattern": "^[1-9][0-9]*$"
              }
            ]
          },
          "work_order_id": {
            "anyOf": [
              {
                "type": "integer",
                "format": "int64",
                "minimum": 1,
                "nullable": true
              },
              {
                "type": "string",
                "pattern": "^[1-9][0-9]*$"
              }
            ]
          },
          "truck_vehicle_id": {
            "anyOf": [
              {
                "type": "integer",
                "format": "int64",
                "minimum": 1,
                "nullable": true
              },
              {
                "type": "string",
                "pattern": "^[1-9][0-9]*$"
              }
            ]
          },
          "trailer_vehicle_id": {
            "anyOf": [
              {
                "type": "integer",
                "format": "int64",
                "minimum": 1,
                "nullable": true
              },
              {
                "type": "string",
                "pattern": "^[1-9][0-9]*$"
              }
            ]
          },
          "driver_user_id": {
            "anyOf": [
              {
                "type": "integer",
                "format": "int64",
                "minimum": 1,
                "nullable": true
              },
              {
                "type": "string",
                "pattern": "^[1-9][0-9]*$"
              }
            ]
          },
          "driver_contact_id": {
            "anyOf": [
              {
                "type": "integer",
                "format": "int64",
                "minimum": 1,
                "nullable": true
              },
              {
                "type": "string",
                "pattern": "^[1-9][0-9]*$"
              }
            ]
          },
          "access_card_id": {
            "anyOf": [
              {
                "type": "integer",
                "format": "int64",
                "minimum": 1,
                "nullable": true
              },
              {
                "type": "string",
                "pattern": "^[1-9][0-9]*$"
              }
            ]
          },
          "assignment_role": {
            "type": "string"
          },
          "effective_from": {
            "type": "string",
            "format": "date-time"
          },
          "effective_until": {
            "type": "string",
            "format": "date-time"
          },
          "source": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "notes": {
            "type": "string"
          },
          "active": {
            "type": "boolean"
          }
        }
      },
      "SnowTeamCommandResponse": {
        "type": "object",
        "required": [
          "success",
          "replayed",
          "domain",
          "command",
          "project_id",
          "entity",
          "version",
          "command_data",
          "activity"
        ],
        "properties": {
          "success": {
            "type": "boolean"
          },
          "replayed": {
            "type": "boolean"
          },
          "domain": {
            "type": "string",
            "enum": [
              "team"
            ]
          },
          "command": {
            "type": "string"
          },
          "project_id": {
            "type": "string",
            "pattern": "^[1-9][0-9]*$"
          },
          "entity": {
            "type": "object",
            "additionalProperties": true
          },
          "version": {
            "type": "string",
            "pattern": "^[1-9][0-9]*$"
          },
          "command_data": {
            "type": "object",
            "additionalProperties": true
          },
          "activity": {
            "type": "object",
            "additionalProperties": true
          }
        }
      },
      "WorkProjectRecord": {
        "type": "object",
        "required": [
          "id",
          "number",
          "name",
          "customer_id",
          "status",
          "billing_method",
          "project_type",
          "operation_data",
          "active",
          "version"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "minimum": 1
          },
          "number": {
            "type": "string"
          },
          "name": {
            "type": "string",
            "minLength": 1
          },
          "description": {
            "type": "string"
          },
          "customer_id": {
            "type": "integer",
            "format": "int64",
            "minimum": 1
          },
          "site_id": {
            "type": "integer",
            "format": "int64",
            "minimum": 1,
            "nullable": true,
            "description": "Required whenever the effective project_type is snow_operation; an existing snow campaign cannot clear this value."
          },
          "zone_id": {
            "type": "integer",
            "format": "int64",
            "minimum": 1,
            "nullable": true
          },
          "owner_user_id": {
            "type": "integer",
            "format": "int64",
            "minimum": 1,
            "nullable": true
          },
          "status": {
            "type": "string",
            "enum": [
              "planned",
              "active",
              "on_hold",
              "completed",
              "cancelled"
            ]
          },
          "billing_method": {
            "type": "string",
            "enum": [
              "fixed_fee",
              "hourly",
              "time_and_materials",
              "non_billable"
            ]
          },
          "currency": {
            "type": "string",
            "pattern": "^[A-Za-z]{3}$"
          },
          "budget_amount": {
            "type": "number",
            "format": "double",
            "minimum": 0
          },
          "budget_minutes": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          },
          "default_billable_rate": {
            "type": "number",
            "format": "double",
            "minimum": 0
          },
          "default_cost_rate": {
            "type": "number",
            "format": "double",
            "minimum": 0
          },
          "start_date": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "target_end_date": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "customer_reference": {
            "type": "string"
          },
          "color": {
            "type": "string",
            "maxLength": 20
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "project_type": {
            "type": "string",
            "enum": [
              "general",
              "snow_operation"
            ],
            "description": "Project workflow type. The interface label 'Snow' is serialized as the wire value snow_operation."
          },
          "operation_data": {
            "type": "object",
            "additionalProperties": true,
            "description": "Operation-specific configuration. Snow campaigns keep their extensible operational settings in this object."
          },
          "active": {
            "type": "boolean"
          },
          "completed_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "version": {
            "type": "integer",
            "format": "int64",
            "minimum": 1
          },
          "created_by_user_id": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "updated_by_user_id": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "WorkProjectPortfolioItem": {
        "type": "object",
        "required": [
          "id",
          "number",
          "name",
          "description",
          "customer_id",
          "customer_name",
          "site_id",
          "site_name",
          "zone_id",
          "zone_name",
          "owner_user_id",
          "owner_name",
          "status",
          "project_type",
          "operation_data",
          "billing_method",
          "currency",
          "budget_amount",
          "budget_minutes",
          "start_date",
          "target_end_date",
          "color",
          "tags",
          "active",
          "version",
          "updated_at",
          "task_count",
          "done_count",
          "blocked_count",
          "overdue_count",
          "progress",
          "tracked_minutes",
          "approved_billable_minutes",
          "open_work_orders",
          "completed_work_orders",
          "labor_cost",
          "billed_amount",
          "unbilled_amount",
          "health"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "minimum": 1
          },
          "number": {
            "type": "string"
          },
          "name": {
            "type": "string",
            "minLength": 1
          },
          "description": {
            "type": "string"
          },
          "customer_id": {
            "type": "integer",
            "format": "int64",
            "minimum": 1
          },
          "site_id": {
            "type": "integer",
            "format": "int64",
            "minimum": 1,
            "nullable": true,
            "description": "Required whenever the effective project_type is snow_operation; an existing snow campaign cannot clear this value."
          },
          "zone_id": {
            "type": "integer",
            "format": "int64",
            "minimum": 1,
            "nullable": true
          },
          "owner_user_id": {
            "type": "integer",
            "format": "int64",
            "minimum": 1,
            "nullable": true
          },
          "status": {
            "type": "string",
            "enum": [
              "planned",
              "active",
              "on_hold",
              "completed",
              "cancelled"
            ]
          },
          "billing_method": {
            "type": "string",
            "enum": [
              "fixed_fee",
              "hourly",
              "time_and_materials",
              "non_billable"
            ]
          },
          "currency": {
            "type": "string",
            "pattern": "^[A-Za-z]{3}$"
          },
          "budget_amount": {
            "type": "number",
            "format": "double",
            "minimum": 0
          },
          "budget_minutes": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          },
          "default_billable_rate": {
            "type": "number",
            "format": "double",
            "minimum": 0
          },
          "default_cost_rate": {
            "type": "number",
            "format": "double",
            "minimum": 0
          },
          "start_date": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "target_end_date": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "customer_reference": {
            "type": "string"
          },
          "color": {
            "type": "string",
            "maxLength": 20
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "project_type": {
            "type": "string",
            "enum": [
              "general",
              "snow_operation"
            ],
            "description": "Project workflow type. The interface label 'Snow' is serialized as the wire value snow_operation."
          },
          "operation_data": {
            "type": "object",
            "additionalProperties": true,
            "description": "Operation-specific configuration. Snow campaigns keep their extensible operational settings in this object."
          },
          "active": {
            "type": "boolean"
          },
          "completed_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "version": {
            "type": "integer",
            "format": "int64",
            "minimum": 1
          },
          "created_by_user_id": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "updated_by_user_id": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          },
          "customer_name": {
            "type": "string"
          },
          "site_name": {
            "type": "string"
          },
          "zone_name": {
            "type": "string"
          },
          "owner_name": {
            "type": "string"
          },
          "task_count": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          },
          "done_count": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          },
          "blocked_count": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          },
          "overdue_count": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          },
          "progress": {
            "type": "integer",
            "minimum": 0,
            "maximum": 100
          },
          "tracked_minutes": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          },
          "approved_billable_minutes": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          },
          "open_work_orders": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          },
          "completed_work_orders": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          },
          "labor_cost": {
            "type": "number",
            "format": "double"
          },
          "billed_amount": {
            "type": "number",
            "format": "double"
          },
          "unbilled_amount": {
            "type": "number",
            "format": "double"
          },
          "health": {
            "type": "string",
            "enum": [
              "healthy",
              "at_risk",
              "blocked",
              "completed",
              "cancelled"
            ]
          }
        }
      },
      "WorkProjectCreatePayload": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "name",
          "customer_id"
        ],
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1
          },
          "description": {
            "type": "string"
          },
          "customer_id": {
            "type": "integer",
            "format": "int64",
            "minimum": 1
          },
          "site_id": {
            "type": "integer",
            "format": "int64",
            "minimum": 1,
            "nullable": true,
            "description": "Required whenever the effective project_type is snow_operation; an existing snow campaign cannot clear this value."
          },
          "zone_id": {
            "type": "integer",
            "format": "int64",
            "minimum": 1,
            "nullable": true
          },
          "owner_user_id": {
            "type": "integer",
            "format": "int64",
            "minimum": 1,
            "nullable": true
          },
          "status": {
            "type": "string",
            "enum": [
              "planned",
              "active",
              "on_hold",
              "completed",
              "cancelled"
            ]
          },
          "billing_method": {
            "type": "string",
            "enum": [
              "fixed_fee",
              "hourly",
              "time_and_materials",
              "non_billable"
            ]
          },
          "currency": {
            "type": "string",
            "pattern": "^[A-Za-z]{3}$"
          },
          "budget_amount": {
            "type": "number",
            "format": "double",
            "minimum": 0
          },
          "budget_minutes": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          },
          "default_billable_rate": {
            "type": "number",
            "format": "double",
            "minimum": 0
          },
          "default_cost_rate": {
            "type": "number",
            "format": "double",
            "minimum": 0
          },
          "start_date": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "target_end_date": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "customer_reference": {
            "type": "string"
          },
          "color": {
            "type": "string",
            "maxLength": 20
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "project_type": {
            "type": "string",
            "enum": [
              "general",
              "snow_operation"
            ],
            "description": "Project workflow type. The interface label 'Snow' is serialized as the wire value snow_operation."
          },
          "operation_data": {
            "type": "object",
            "additionalProperties": true,
            "description": "Operation-specific configuration. Snow campaigns keep their extensible operational settings in this object."
          },
          "active": {
            "type": "boolean"
          }
        },
        "oneOf": [
          {
            "title": "General project or default type",
            "properties": {
              "project_type": {
                "type": "string",
                "enum": [
                  "general"
                ]
              }
            }
          },
          {
            "title": "Snow-operation project",
            "required": [
              "project_type",
              "site_id"
            ],
            "properties": {
              "project_type": {
                "type": "string",
                "enum": [
                  "snow_operation"
                ]
              },
              "site_id": {
                "type": "integer",
                "format": "int64",
                "minimum": 1
              }
            }
          }
        ]
      },
      "WorkProjectPatchPayload": {
        "type": "object",
        "additionalProperties": false,
        "description": "Partial update. The resulting project state must retain a real site whenever its effective type is snow_operation.",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1
          },
          "description": {
            "type": "string"
          },
          "customer_id": {
            "type": "integer",
            "format": "int64",
            "minimum": 1
          },
          "site_id": {
            "type": "integer",
            "format": "int64",
            "minimum": 1,
            "nullable": true,
            "description": "Required whenever the effective project_type is snow_operation; an existing snow campaign cannot clear this value."
          },
          "zone_id": {
            "type": "integer",
            "format": "int64",
            "minimum": 1,
            "nullable": true
          },
          "owner_user_id": {
            "type": "integer",
            "format": "int64",
            "minimum": 1,
            "nullable": true
          },
          "status": {
            "type": "string",
            "enum": [
              "planned",
              "active",
              "on_hold",
              "completed",
              "cancelled"
            ]
          },
          "billing_method": {
            "type": "string",
            "enum": [
              "fixed_fee",
              "hourly",
              "time_and_materials",
              "non_billable"
            ]
          },
          "currency": {
            "type": "string",
            "pattern": "^[A-Za-z]{3}$"
          },
          "budget_amount": {
            "type": "number",
            "format": "double",
            "minimum": 0
          },
          "budget_minutes": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          },
          "default_billable_rate": {
            "type": "number",
            "format": "double",
            "minimum": 0
          },
          "default_cost_rate": {
            "type": "number",
            "format": "double",
            "minimum": 0
          },
          "start_date": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "target_end_date": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "customer_reference": {
            "type": "string"
          },
          "color": {
            "type": "string",
            "maxLength": 20
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "project_type": {
            "type": "string",
            "enum": [
              "general",
              "snow_operation"
            ],
            "description": "Project workflow type. The interface label 'Snow' is serialized as the wire value snow_operation."
          },
          "operation_data": {
            "type": "object",
            "additionalProperties": true,
            "description": "Operation-specific configuration. Snow campaigns keep their extensible operational settings in this object."
          },
          "active": {
            "type": "boolean"
          }
        }
      },
      "WorkProjectStatusPayload": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "status"
        ],
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1
          },
          "description": {
            "type": "string"
          },
          "customer_id": {
            "type": "integer",
            "format": "int64",
            "minimum": 1
          },
          "site_id": {
            "type": "integer",
            "format": "int64",
            "minimum": 1,
            "nullable": true,
            "description": "Required whenever the effective project_type is snow_operation; an existing snow campaign cannot clear this value."
          },
          "zone_id": {
            "type": "integer",
            "format": "int64",
            "minimum": 1,
            "nullable": true
          },
          "owner_user_id": {
            "type": "integer",
            "format": "int64",
            "minimum": 1,
            "nullable": true
          },
          "status": {
            "type": "string",
            "enum": [
              "planned",
              "active",
              "on_hold",
              "completed",
              "cancelled"
            ]
          },
          "billing_method": {
            "type": "string",
            "enum": [
              "fixed_fee",
              "hourly",
              "time_and_materials",
              "non_billable"
            ]
          },
          "currency": {
            "type": "string",
            "pattern": "^[A-Za-z]{3}$"
          },
          "budget_amount": {
            "type": "number",
            "format": "double",
            "minimum": 0
          },
          "budget_minutes": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          },
          "default_billable_rate": {
            "type": "number",
            "format": "double",
            "minimum": 0
          },
          "default_cost_rate": {
            "type": "number",
            "format": "double",
            "minimum": 0
          },
          "start_date": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "target_end_date": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "customer_reference": {
            "type": "string"
          },
          "color": {
            "type": "string",
            "maxLength": 20
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "project_type": {
            "type": "string",
            "enum": [
              "general",
              "snow_operation"
            ],
            "description": "Project workflow type. The interface label 'Snow' is serialized as the wire value snow_operation."
          },
          "operation_data": {
            "type": "object",
            "additionalProperties": true,
            "description": "Operation-specific configuration. Snow campaigns keep their extensible operational settings in this object."
          },
          "active": {
            "type": "boolean"
          }
        }
      },
      "WorkProjectMemberPayload": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "user_id"
        ],
        "properties": {
          "user_id": {
            "type": "integer",
            "format": "int64",
            "minimum": 1
          },
          "member_role": {
            "type": "string",
            "enum": [
              "owner",
              "manager",
              "member",
              "technician",
              "viewer"
            ]
          },
          "allocated_minutes": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          },
          "billable_rate": {
            "type": "string",
            "pattern": "^[0-9]+(?:\\.[0-9]+)?$"
          },
          "cost_rate": {
            "type": "string",
            "pattern": "^[0-9]+(?:\\.[0-9]+)?$"
          }
        }
      },
      "WorkProjectMemberPatchPayload": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "member_id",
          "member_version"
        ],
        "properties": {
          "member_id": {
            "type": "integer",
            "format": "int64",
            "minimum": 1
          },
          "member_version": {
            "type": "integer",
            "format": "int64",
            "minimum": 1
          },
          "member_role": {
            "type": "string",
            "enum": [
              "owner",
              "manager",
              "member",
              "technician",
              "viewer"
            ]
          },
          "allocated_minutes": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          },
          "billable_rate": {
            "type": "string",
            "pattern": "^[0-9]+(?:\\.[0-9]+)?$"
          },
          "cost_rate": {
            "type": "string",
            "pattern": "^[0-9]+(?:\\.[0-9]+)?$"
          }
        }
      },
      "WorkProjectMemberRecord": {
        "type": "object",
        "required": [
          "id",
          "project_id",
          "user_id",
          "member_role",
          "active",
          "version"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "minimum": 1
          },
          "project_id": {
            "type": "integer",
            "format": "int64",
            "minimum": 1
          },
          "user_id": {
            "type": "integer",
            "format": "int64",
            "minimum": 1
          },
          "member_role": {
            "type": "string"
          },
          "allocated_minutes": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          },
          "billable_rate": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "cost_rate": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "active": {
            "type": "boolean"
          },
          "version": {
            "type": "integer",
            "format": "int64",
            "minimum": 1
          },
          "created_by_user_id": {
            "type": "integer",
            "nullable": true
          },
          "updated_by_user_id": {
            "type": "integer",
            "nullable": true
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "WorkProjectCommandRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "command"
        ],
        "properties": {
          "command": {
            "type": "string",
            "enum": [
              "create",
              "update",
              "set_status",
              "archive",
              "restore",
              "add_member",
              "update_member",
              "remove_member"
            ]
          },
          "entity_id": {
            "type": "integer",
            "format": "int64",
            "minimum": 1
          },
          "expected_version": {
            "type": "integer",
            "format": "int64",
            "minimum": 1
          },
          "idempotency_key": {
            "type": "string",
            "minLength": 1,
            "maxLength": 255
          },
          "reason": {
            "type": "string"
          },
          "payload": {
            "type": "object"
          }
        },
        "oneOf": [
          {
            "title": "Create project",
            "required": [
              "command",
              "payload"
            ],
            "properties": {
              "command": {
                "type": "string",
                "enum": [
                  "create"
                ]
              },
              "payload": {
                "$ref": "#/components/schemas/WorkProjectCreatePayload"
              }
            }
          },
          {
            "title": "Update project",
            "required": [
              "command",
              "entity_id"
            ],
            "properties": {
              "command": {
                "type": "string",
                "enum": [
                  "update"
                ]
              },
              "payload": {
                "$ref": "#/components/schemas/WorkProjectPatchPayload"
              }
            }
          },
          {
            "title": "Set project status",
            "required": [
              "command",
              "entity_id",
              "payload"
            ],
            "properties": {
              "command": {
                "type": "string",
                "enum": [
                  "set_status"
                ]
              },
              "payload": {
                "$ref": "#/components/schemas/WorkProjectStatusPayload"
              }
            }
          },
          {
            "title": "Archive project",
            "required": [
              "command",
              "entity_id"
            ],
            "properties": {
              "command": {
                "type": "string",
                "enum": [
                  "archive"
                ]
              },
              "payload": {
                "$ref": "#/components/schemas/WorkProjectPatchPayload"
              }
            }
          },
          {
            "title": "Restore project",
            "required": [
              "command",
              "entity_id"
            ],
            "properties": {
              "command": {
                "type": "string",
                "enum": [
                  "restore"
                ]
              },
              "payload": {
                "$ref": "#/components/schemas/WorkProjectPatchPayload"
              }
            }
          },
          {
            "title": "Add project member",
            "required": [
              "command",
              "entity_id",
              "payload"
            ],
            "properties": {
              "command": {
                "type": "string",
                "enum": [
                  "add_member"
                ]
              },
              "payload": {
                "$ref": "#/components/schemas/WorkProjectMemberPayload"
              }
            }
          },
          {
            "title": "Update Member",
            "required": [
              "command",
              "entity_id",
              "payload"
            ],
            "properties": {
              "command": {
                "type": "string",
                "enum": [
                  "update_member"
                ]
              },
              "payload": {
                "$ref": "#/components/schemas/WorkProjectMemberPatchPayload"
              }
            }
          },
          {
            "title": "Remove Member",
            "required": [
              "command",
              "entity_id",
              "payload"
            ],
            "properties": {
              "command": {
                "type": "string",
                "enum": [
                  "remove_member"
                ]
              },
              "payload": {
                "$ref": "#/components/schemas/WorkProjectMemberPatchPayload"
              }
            }
          }
        ]
      },
      "WorkProjectCommandResponse": {
        "type": "object",
        "required": [
          "success",
          "replayed",
          "domain",
          "command",
          "project_id",
          "entity",
          "version",
          "command_data",
          "activity"
        ],
        "properties": {
          "success": {
            "type": "boolean"
          },
          "replayed": {
            "type": "boolean"
          },
          "domain": {
            "type": "string",
            "enum": [
              "project"
            ]
          },
          "command": {
            "type": "string"
          },
          "project_id": {
            "type": "integer",
            "format": "int64",
            "minimum": 1
          },
          "entity": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/WorkProjectRecord"
              },
              {
                "$ref": "#/components/schemas/WorkProjectMemberRecord"
              }
            ]
          },
          "version": {
            "type": "integer",
            "format": "int64",
            "minimum": 1
          },
          "command_data": {
            "type": "object",
            "additionalProperties": true
          },
          "activity": {
            "type": "object",
            "additionalProperties": true
          }
        }
      },
      "WorkProjectQueryRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "search": {
            "type": "string"
          },
          "statuses": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "planned",
                "active",
                "on_hold",
                "completed",
                "cancelled"
              ]
            }
          },
          "project_types": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "general",
                "snow_operation"
              ],
              "description": "Project workflow type. The interface label 'Snow' is serialized as the wire value snow_operation."
            },
            "description": "Empty or omitted returns both general and snow-operation projects."
          },
          "customer_id": {
            "type": "integer",
            "format": "int64",
            "minimum": 1
          },
          "site_id": {
            "type": "integer",
            "format": "int64",
            "minimum": 1
          },
          "zone_id": {
            "type": "integer",
            "format": "int64",
            "minimum": 1
          },
          "owner_user_id": {
            "type": "integer",
            "format": "int64",
            "minimum": 1
          },
          "billing_method": {
            "type": "string",
            "enum": [
              "fixed_fee",
              "hourly",
              "time_and_materials",
              "non_billable"
            ]
          },
          "tag": {
            "type": "string"
          },
          "date_from": {
            "type": "string",
            "format": "date"
          },
          "date_to": {
            "type": "string",
            "format": "date"
          },
          "include_archived": {
            "type": "boolean",
            "default": false
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "default": 25
          },
          "cursor": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "updated_at",
              "id"
            ],
            "properties": {
              "updated_at": {
                "type": "string",
                "format": "date-time"
              },
              "id": {
                "type": "integer",
                "format": "int64",
                "minimum": 1
              }
            }
          }
        }
      },
      "WorkProjectSummary": {
        "type": "object",
        "required": [
          "total",
          "planned",
          "active",
          "on_hold",
          "completed",
          "at_risk",
          "budget_amount",
          "labor_cost",
          "billed_amount",
          "unbilled_amount"
        ],
        "properties": {
          "total": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          },
          "planned": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          },
          "active": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          },
          "on_hold": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          },
          "completed": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          },
          "at_risk": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          },
          "budget_amount": {
            "type": "number",
            "format": "double"
          },
          "labor_cost": {
            "type": "number",
            "format": "double"
          },
          "billed_amount": {
            "type": "number",
            "format": "double"
          },
          "unbilled_amount": {
            "type": "number",
            "format": "double"
          }
        }
      },
      "WorkProjectFacets": {
        "type": "object",
        "required": [
          "statuses",
          "project_types",
          "customers",
          "sites",
          "owners"
        ],
        "properties": {
          "statuses": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "value",
                "count"
              ],
              "properties": {
                "value": {
                  "type": "string",
                  "enum": [
                    "planned",
                    "active",
                    "on_hold",
                    "completed",
                    "cancelled"
                  ]
                },
                "count": {
                  "type": "integer",
                  "format": "int64",
                  "minimum": 0
                }
              }
            }
          },
          "project_types": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "value",
                "count"
              ],
              "properties": {
                "value": {
                  "type": "string",
                  "enum": [
                    "general",
                    "snow_operation"
                  ],
                  "description": "Project workflow type. The interface label 'Snow' is serialized as the wire value snow_operation."
                },
                "count": {
                  "type": "integer",
                  "format": "int64",
                  "minimum": 0
                }
              }
            }
          },
          "customers": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "id",
                "name",
                "count"
              ],
              "properties": {
                "id": {
                  "type": "integer",
                  "format": "int64",
                  "minimum": 1
                },
                "name": {
                  "type": "string"
                },
                "count": {
                  "type": "integer",
                  "format": "int64",
                  "minimum": 0
                }
              }
            }
          },
          "sites": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "id",
                "name",
                "count"
              ],
              "properties": {
                "id": {
                  "type": "integer",
                  "format": "int64",
                  "minimum": 1
                },
                "name": {
                  "type": "string"
                },
                "count": {
                  "type": "integer",
                  "format": "int64",
                  "minimum": 0
                }
              }
            }
          },
          "owners": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "id",
                "name",
                "count"
              ],
              "properties": {
                "id": {
                  "type": "integer",
                  "format": "int64",
                  "minimum": 1
                },
                "name": {
                  "type": "string"
                },
                "count": {
                  "type": "integer",
                  "format": "int64",
                  "minimum": 0
                }
              }
            }
          }
        }
      },
      "WorkProjectQueryResponse": {
        "type": "object",
        "required": [
          "success",
          "projects",
          "summary",
          "facets",
          "next_cursor",
          "limit"
        ],
        "properties": {
          "success": {
            "type": "boolean"
          },
          "projects": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WorkProjectPortfolioItem"
            }
          },
          "summary": {
            "$ref": "#/components/schemas/WorkProjectSummary"
          },
          "facets": {
            "$ref": "#/components/schemas/WorkProjectFacets"
          },
          "next_cursor": {
            "type": "object",
            "nullable": true,
            "required": [
              "updated_at",
              "id"
            ],
            "properties": {
              "updated_at": {
                "type": "string",
                "format": "date-time"
              },
              "id": {
                "type": "integer",
                "format": "int64",
                "minimum": 1
              }
            }
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100
          }
        }
      },
      "WorkApiErrorResponse": {
        "type": "object",
        "required": [
          "success",
          "code",
          "error"
        ],
        "properties": {
          "success": {
            "type": "boolean"
          },
          "replayed": {
            "type": "boolean"
          },
          "code": {
            "type": "string"
          },
          "error": {
            "type": "string"
          }
        }
      },
      "CrmFollowUp": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "minimum": 1
          },
          "version": {
            "type": "integer",
            "minimum": 1
          },
          "title": {
            "type": "string",
            "minLength": 1,
            "maxLength": 255
          },
          "description": {
            "type": "string"
          },
          "customer_id": {
            "type": "integer",
            "minimum": 0
          },
          "supplier_id": {
            "type": "integer",
            "minimum": 0
          },
          "due_at": {
            "type": "string",
            "description": "Timestamp accepted by the server, or an empty string to clear it."
          },
          "reminder_at": {
            "type": "string",
            "description": "Reminder timestamp; it must not be later than due_at."
          },
          "assigned_user_id": {
            "type": "integer",
            "minimum": 0
          },
          "status": {
            "type": "string",
            "enum": [
              "open",
              "in_progress",
              "completed",
              "cancelled"
            ],
            "default": "open"
          },
          "priority": {
            "type": "string",
            "enum": [
              "low",
              "normal",
              "high",
              "urgent"
            ],
            "default": "normal"
          },
          "recurrence_rule": {
            "type": "string"
          },
          "commercial_document_id": {
            "type": "integer",
            "minimum": 0
          },
          "project_id": {
            "type": "integer",
            "minimum": 0
          },
          "task_id": {
            "type": "integer",
            "minimum": 0
          },
          "active": {
            "type": "boolean",
            "default": true
          }
        }
      },
      "EntitlementBank": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1
          },
          "description": {
            "type": "string"
          },
          "owner_type": {
            "type": "string",
            "enum": [
              "customer",
              "supplier",
              "user",
              "internal"
            ]
          },
          "owner_id": {
            "type": "integer",
            "minimum": 1
          },
          "program_code": {
            "type": "string",
            "enum": [
              "private_prepaid",
              "city_supplier_payable",
              "city_contract_allowance",
              "municipal_internal"
            ]
          },
          "bank_type": {
            "type": "string",
            "enum": [
              "trips",
              "money",
              "hours",
              "quantity"
            ]
          },
          "unit_id": {
            "type": "integer",
            "minimum": 1
          },
          "currency": {
            "type": "string",
            "default": "CAD"
          },
          "company_id": {
            "type": "integer",
            "minimum": 0
          },
          "allow_negative": {
            "type": "boolean",
            "default": false
          },
          "valid_from": {
            "type": "string"
          },
          "valid_to": {
            "type": "string"
          },
          "project_id": {
            "type": "integer",
            "minimum": 0
          },
          "site_id": {
            "type": "integer",
            "minimum": 0
          },
          "id": {
            "type": "integer",
            "minimum": 1
          },
          "public_id": {
            "type": "string",
            "format": "uuid"
          },
          "balance": {
            "type": "string",
            "description": "Decimal balance returned as text."
          },
          "version": {
            "type": "integer",
            "minimum": 0
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "suspended",
              "expired",
              "closed"
            ]
          }
        }
      }
    },
    "securitySchemes": {
      "sessionHeader": {
        "type": "apiKey",
        "in": "header",
        "name": "SessionID",
        "description": "Session returned by POST /v1/auth/login."
      },
      "cookieAuth": {
        "type": "apiKey",
        "in": "cookie",
        "name": "session",
        "description": "Session cookie set at sign-in."
      },
      "bearerSession": {
        "type": "http",
        "scheme": "bearer",
        "description": "A Lexoh session token, not a separately issued API key."
      }
    }
  },
  "security": [
    {
      "sessionHeader": []
    },
    {
      "cookieAuth": []
    },
    {
      "bearerSession": []
    }
  ]
}
