{
  "openapi": "3.0.0",
  "paths": {
    "/health": {
      "get": {
        "operationId": "HealthController_health",
        "parameters": [
          {
            "name": "x-mt-timestamp",
            "in": "header",
            "required": false,
            "description": "Current Unix time in seconds. Required when the API key has request signing enabled.",
            "schema": {
              "type": "integer",
              "format": "int64",
              "example": 1735689600
            }
          },
          {
            "name": "x-mt-signature",
            "in": "header",
            "required": false,
            "description": "Request signature, `t=<unix-seconds>,v1=<hex HMAC-SHA256>`. Required when the API key has request signing enabled.",
            "schema": {
              "type": "string",
              "example": "t=1735689600,v1=5d41402abc4b…"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The response schema for this operation is not yet documented — see the schema-coverage report. The SDK types this as `unknown`.",
            "x-mt-schema-pending": true
          }
        },
        "tags": [
          "Health"
        ],
        "x-mt-schema-pending": true
      }
    },
    "/notifications/api/v1/sms-preferences/opt-out": {
      "post": {
        "description": "Marks the phone number as opted out; future SMS sends to this number are suppressed.",
        "operationId": "SmsPreferencesController_optOut",
        "parameters": [
          {
            "name": "x-mt-timestamp",
            "in": "header",
            "required": false,
            "description": "Current Unix time in seconds. Required when the API key has request signing enabled.",
            "schema": {
              "type": "integer",
              "format": "int64",
              "example": 1735689600
            }
          },
          {
            "name": "x-mt-signature",
            "in": "header",
            "required": false,
            "description": "Request signature, `t=<unix-seconds>,v1=<hex HMAC-SHA256>`. Required when the API key has request signing enabled.",
            "schema": {
              "type": "string",
              "example": "t=1735689600,v1=5d41402abc4b…"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Client-generated unique key. Replaying a write with the same key returns the original response instead of performing the operation twice. Retained for 24 hours.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SmsPreferenceActionDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success. The response schema for this operation is not yet documented — see the schema-coverage report. The SDK types this as `unknown`.",
            "x-mt-schema-pending": true
          }
        },
        "summary": "Opt a phone number out of SMS notifications",
        "tags": [
          "SMS Preferences"
        ],
        "x-mt-schema-pending": true
      }
    },
    "/notifications/api/v1/sms-preferences/opt-in": {
      "post": {
        "description": "Reverses a previous opt-out for the given phone number.",
        "operationId": "SmsPreferencesController_optIn",
        "parameters": [
          {
            "name": "x-mt-timestamp",
            "in": "header",
            "required": false,
            "description": "Current Unix time in seconds. Required when the API key has request signing enabled.",
            "schema": {
              "type": "integer",
              "format": "int64",
              "example": 1735689600
            }
          },
          {
            "name": "x-mt-signature",
            "in": "header",
            "required": false,
            "description": "Request signature, `t=<unix-seconds>,v1=<hex HMAC-SHA256>`. Required when the API key has request signing enabled.",
            "schema": {
              "type": "string",
              "example": "t=1735689600,v1=5d41402abc4b…"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Client-generated unique key. Replaying a write with the same key returns the original response instead of performing the operation twice. Retained for 24 hours.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SmsPreferenceActionDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success. The response schema for this operation is not yet documented — see the schema-coverage report. The SDK types this as `unknown`.",
            "x-mt-schema-pending": true
          }
        },
        "summary": "Opt a phone number back into SMS notifications",
        "tags": [
          "SMS Preferences"
        ],
        "x-mt-schema-pending": true
      }
    },
    "/notifications/api/v1/notifications/register-device": {
      "post": {
        "operationId": "NotificationController_registerDevice",
        "parameters": [
          {
            "name": "x-mt-timestamp",
            "in": "header",
            "required": false,
            "description": "Current Unix time in seconds. Required when the API key has request signing enabled.",
            "schema": {
              "type": "integer",
              "format": "int64",
              "example": 1735689600
            }
          },
          {
            "name": "x-mt-signature",
            "in": "header",
            "required": false,
            "description": "Request signature, `t=<unix-seconds>,v1=<hex HMAC-SHA256>`. Required when the API key has request signing enabled.",
            "schema": {
              "type": "string",
              "example": "t=1735689600,v1=5d41402abc4b…"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Client-generated unique key. Replaying a write with the same key returns the original response instead of performing the operation twice. Retained for 24 hours.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RegisterDeviceDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success. The response schema for this operation is not yet documented — see the schema-coverage report. The SDK types this as `unknown`.",
            "x-mt-schema-pending": true
          },
          "201": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Register this device's Expo push token",
        "tags": [
          "Notifications"
        ],
        "x-mt-schema-pending": true
      }
    },
    "/notifications/api/v1/notifications/user/counts": {
      "get": {
        "operationId": "NotificationController_getNotificationCounts",
        "parameters": [
          {
            "name": "role",
            "required": false,
            "in": "query",
            "description": "Filter notifications by destination role (current user role)",
            "schema": {
              "enum": [
                "USER",
                "ADMIN",
                "SUPER_ADMIN",
                "IT_ADMINISTRATOR",
                "MINE_DIRECTOR",
                "MINE_MANAGER",
                "MINE_ENGINEER",
                "ZONE_ENGINEER",
                "JUNIOR_SAFETY_ENGINEER",
                "SENIOR_SAFETY_ENGINEER",
                "ENVIRONMENTALIST",
                "STOCK_MANAGER",
                "FINANCE_OFFICER",
                "FIELD_SUPERVISOR",
                "SUBCONTRACTOR",
                "GOVERNMENT_INSPECTOR"
              ],
              "type": "string"
            }
          },
          {
            "name": "x-mt-timestamp",
            "in": "header",
            "required": false,
            "description": "Current Unix time in seconds. Required when the API key has request signing enabled.",
            "schema": {
              "type": "integer",
              "format": "int64",
              "example": 1735689600
            }
          },
          {
            "name": "x-mt-signature",
            "in": "header",
            "required": false,
            "description": "Request signature, `t=<unix-seconds>,v1=<hex HMAC-SHA256>`. Required when the API key has request signing enabled.",
            "schema": {
              "type": "string",
              "example": "t=1735689600,v1=5d41402abc4b…"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The response schema for this operation is not yet documented — see the schema-coverage report. The SDK types this as `unknown`.",
            "x-mt-schema-pending": true
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Get notification counts by status",
        "tags": [
          "Notifications"
        ],
        "x-mt-schema-pending": true
      }
    },
    "/notifications/api/v1/notifications/user/all": {
      "get": {
        "description": "Same behavior as /user/paginated, filterable by status and destination role.",
        "operationId": "NotificationController_getNotificationsByStatus",
        "parameters": [
          {
            "name": "status",
            "required": false,
            "in": "query",
            "schema": {
              "enum": [
                "DELIVERED",
                "READ"
              ],
              "type": "string"
            }
          },
          {
            "name": "role",
            "required": false,
            "in": "query",
            "description": "Filter notifications by destination role (current user role)",
            "schema": {
              "enum": [
                "USER",
                "ADMIN",
                "SUPER_ADMIN",
                "IT_ADMINISTRATOR",
                "MINE_DIRECTOR",
                "MINE_MANAGER",
                "MINE_ENGINEER",
                "ZONE_ENGINEER",
                "JUNIOR_SAFETY_ENGINEER",
                "SENIOR_SAFETY_ENGINEER",
                "ENVIRONMENTALIST",
                "STOCK_MANAGER",
                "FINANCE_OFFICER",
                "FIELD_SUPERVISOR",
                "SUBCONTRACTOR",
                "GOVERNMENT_INSPECTOR"
              ],
              "type": "string"
            }
          },
          {
            "name": "page",
            "required": false,
            "in": "query",
            "description": "Page number for pagination (minimum: 1)",
            "schema": {
              "minimum": 1,
              "example": 1,
              "type": "number"
            }
          },
          {
            "name": "limit",
            "required": false,
            "in": "query",
            "description": "Limit of notifications per page (minimum: 1, maximum: 100)",
            "schema": {
              "minimum": 1,
              "maximum": 100,
              "example": 10,
              "type": "number"
            }
          },
          {
            "name": "x-mt-timestamp",
            "in": "header",
            "required": false,
            "description": "Current Unix time in seconds. Required when the API key has request signing enabled.",
            "schema": {
              "type": "integer",
              "format": "int64",
              "example": 1735689600
            }
          },
          {
            "name": "x-mt-signature",
            "in": "header",
            "required": false,
            "description": "Request signature, `t=<unix-seconds>,v1=<hex HMAC-SHA256>`. Required when the API key has request signing enabled.",
            "schema": {
              "type": "string",
              "example": "t=1735689600,v1=5d41402abc4b…"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The response schema for this operation is not yet documented — see the schema-coverage report. The SDK types this as `unknown`.",
            "x-mt-schema-pending": true
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Get the current user's notifications (paginated)",
        "tags": [
          "Notifications"
        ],
        "x-mt-schema-pending": true
      }
    },
    "/notifications/api/v1/notifications/user/paginated": {
      "get": {
        "description": "Same behavior as /user/all, filterable by status and destination role.",
        "operationId": "NotificationController_getUserNotificationsByStatusPaginated",
        "parameters": [
          {
            "name": "page",
            "required": false,
            "in": "query",
            "description": "Page number for pagination",
            "schema": {
              "example": 1,
              "type": "number"
            }
          },
          {
            "name": "limit",
            "required": false,
            "in": "query",
            "description": "Limit of notifications per page",
            "schema": {
              "example": 10,
              "type": "number"
            }
          },
          {
            "name": "status",
            "required": false,
            "in": "query",
            "schema": {
              "enum": [
                "DELIVERED",
                "READ"
              ],
              "type": "string"
            }
          },
          {
            "name": "role",
            "required": false,
            "in": "query",
            "description": "Filter notifications by destination role (current user role)",
            "schema": {
              "enum": [
                "USER",
                "ADMIN",
                "SUPER_ADMIN",
                "IT_ADMINISTRATOR",
                "MINE_DIRECTOR",
                "MINE_MANAGER",
                "MINE_ENGINEER",
                "ZONE_ENGINEER",
                "JUNIOR_SAFETY_ENGINEER",
                "SENIOR_SAFETY_ENGINEER",
                "ENVIRONMENTALIST",
                "STOCK_MANAGER",
                "FINANCE_OFFICER",
                "FIELD_SUPERVISOR",
                "SUBCONTRACTOR",
                "GOVERNMENT_INSPECTOR"
              ],
              "type": "string"
            }
          },
          {
            "name": "x-mt-timestamp",
            "in": "header",
            "required": false,
            "description": "Current Unix time in seconds. Required when the API key has request signing enabled.",
            "schema": {
              "type": "integer",
              "format": "int64",
              "example": 1735689600
            }
          },
          {
            "name": "x-mt-signature",
            "in": "header",
            "required": false,
            "description": "Request signature, `t=<unix-seconds>,v1=<hex HMAC-SHA256>`. Required when the API key has request signing enabled.",
            "schema": {
              "type": "string",
              "example": "t=1735689600,v1=5d41402abc4b…"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The response schema for this operation is not yet documented — see the schema-coverage report. The SDK types this as `unknown`.",
            "x-mt-schema-pending": true
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Get the current user's notifications (paginated)",
        "tags": [
          "Notifications"
        ],
        "x-mt-schema-pending": true
      }
    },
    "/notifications/api/v1/notifications/{id}": {
      "get": {
        "operationId": "NotificationController_findById",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "description": "Notification ID",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-mt-timestamp",
            "in": "header",
            "required": false,
            "description": "Current Unix time in seconds. Required when the API key has request signing enabled.",
            "schema": {
              "type": "integer",
              "format": "int64",
              "example": 1735689600
            }
          },
          {
            "name": "x-mt-signature",
            "in": "header",
            "required": false,
            "description": "Request signature, `t=<unix-seconds>,v1=<hex HMAC-SHA256>`. Required when the API key has request signing enabled.",
            "schema": {
              "type": "string",
              "example": "t=1735689600,v1=5d41402abc4b…"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The response schema for this operation is not yet documented — see the schema-coverage report. The SDK types this as `unknown`.",
            "x-mt-schema-pending": true
          },
          "404": {
            "description": "Notification not found"
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Get a single notification by ID",
        "tags": [
          "Notifications"
        ],
        "x-mt-schema-pending": true
      },
      "delete": {
        "operationId": "NotificationController_delete",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "description": "Notification ID",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-mt-timestamp",
            "in": "header",
            "required": false,
            "description": "Current Unix time in seconds. Required when the API key has request signing enabled.",
            "schema": {
              "type": "integer",
              "format": "int64",
              "example": 1735689600
            }
          },
          {
            "name": "x-mt-signature",
            "in": "header",
            "required": false,
            "description": "Request signature, `t=<unix-seconds>,v1=<hex HMAC-SHA256>`. Required when the API key has request signing enabled.",
            "schema": {
              "type": "string",
              "example": "t=1735689600,v1=5d41402abc4b…"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The response schema for this operation is not yet documented — see the schema-coverage report. The SDK types this as `unknown`.",
            "x-mt-schema-pending": true
          },
          "404": {
            "description": "Notification not found"
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Delete a single notification",
        "tags": [
          "Notifications"
        ],
        "x-mt-schema-pending": true
      }
    },
    "/notifications/api/v1/notifications/{id}/read": {
      "patch": {
        "operationId": "NotificationController_markAsRead",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "description": "Notification ID",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-mt-timestamp",
            "in": "header",
            "required": false,
            "description": "Current Unix time in seconds. Required when the API key has request signing enabled.",
            "schema": {
              "type": "integer",
              "format": "int64",
              "example": 1735689600
            }
          },
          {
            "name": "x-mt-signature",
            "in": "header",
            "required": false,
            "description": "Request signature, `t=<unix-seconds>,v1=<hex HMAC-SHA256>`. Required when the API key has request signing enabled.",
            "schema": {
              "type": "string",
              "example": "t=1735689600,v1=5d41402abc4b…"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Client-generated unique key. Replaying a write with the same key returns the original response instead of performing the operation twice. Retained for 24 hours.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The response schema for this operation is not yet documented — see the schema-coverage report. The SDK types this as `unknown`.",
            "x-mt-schema-pending": true
          },
          "404": {
            "description": "Notification not found"
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Mark a single notification as read",
        "tags": [
          "Notifications"
        ],
        "x-mt-schema-pending": true
      }
    },
    "/notifications/api/v1/notifications/user/read-multiple": {
      "patch": {
        "operationId": "NotificationController_markMultipleAsRead",
        "parameters": [
          {
            "name": "x-mt-timestamp",
            "in": "header",
            "required": false,
            "description": "Current Unix time in seconds. Required when the API key has request signing enabled.",
            "schema": {
              "type": "integer",
              "format": "int64",
              "example": 1735689600
            }
          },
          {
            "name": "x-mt-signature",
            "in": "header",
            "required": false,
            "description": "Request signature, `t=<unix-seconds>,v1=<hex HMAC-SHA256>`. Required when the API key has request signing enabled.",
            "schema": {
              "type": "string",
              "example": "t=1735689600,v1=5d41402abc4b…"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Client-generated unique key. Replaying a write with the same key returns the original response instead of performing the operation twice. Retained for 24 hours.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MarkMultipleAsReadDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success. The response schema for this operation is not yet documented — see the schema-coverage report. The SDK types this as `unknown`.",
            "x-mt-schema-pending": true
          },
          "400": {
            "description": "Bad request - invalid notification IDs"
          },
          "404": {
            "description": "No notifications found"
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Mark multiple notifications as read",
        "tags": [
          "Notifications"
        ],
        "x-mt-schema-pending": true
      }
    },
    "/notifications/api/v1/notifications/user/read-all": {
      "patch": {
        "operationId": "NotificationController_markAllAsRead",
        "parameters": [
          {
            "name": "x-mt-timestamp",
            "in": "header",
            "required": false,
            "description": "Current Unix time in seconds. Required when the API key has request signing enabled.",
            "schema": {
              "type": "integer",
              "format": "int64",
              "example": 1735689600
            }
          },
          {
            "name": "x-mt-signature",
            "in": "header",
            "required": false,
            "description": "Request signature, `t=<unix-seconds>,v1=<hex HMAC-SHA256>`. Required when the API key has request signing enabled.",
            "schema": {
              "type": "string",
              "example": "t=1735689600,v1=5d41402abc4b…"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Client-generated unique key. Replaying a write with the same key returns the original response instead of performing the operation twice. Retained for 24 hours.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The response schema for this operation is not yet documented — see the schema-coverage report. The SDK types this as `unknown`.",
            "x-mt-schema-pending": true
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Mark all of the current user's notifications as read",
        "tags": [
          "Notifications"
        ],
        "x-mt-schema-pending": true
      }
    },
    "/notifications/api/v1/notifications/user/delete-multiple": {
      "delete": {
        "operationId": "NotificationController_deleteMultiple",
        "parameters": [
          {
            "name": "x-mt-timestamp",
            "in": "header",
            "required": false,
            "description": "Current Unix time in seconds. Required when the API key has request signing enabled.",
            "schema": {
              "type": "integer",
              "format": "int64",
              "example": 1735689600
            }
          },
          {
            "name": "x-mt-signature",
            "in": "header",
            "required": false,
            "description": "Request signature, `t=<unix-seconds>,v1=<hex HMAC-SHA256>`. Required when the API key has request signing enabled.",
            "schema": {
              "type": "string",
              "example": "t=1735689600,v1=5d41402abc4b…"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DeleteMultipleDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success. The response schema for this operation is not yet documented — see the schema-coverage report. The SDK types this as `unknown`.",
            "x-mt-schema-pending": true
          },
          "400": {
            "description": "Bad request - invalid notification IDs"
          },
          "404": {
            "description": "No notifications found"
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Delete multiple notifications",
        "tags": [
          "Notifications"
        ],
        "x-mt-schema-pending": true
      }
    },
    "/notifications/api/v1/advanced-messaging/rooms": {
      "post": {
        "operationId": "AdvancedMessagingController_createRoom",
        "parameters": [
          {
            "name": "x-mt-timestamp",
            "in": "header",
            "required": false,
            "description": "Current Unix time in seconds. Required when the API key has request signing enabled.",
            "schema": {
              "type": "integer",
              "format": "int64",
              "example": 1735689600
            }
          },
          {
            "name": "x-mt-signature",
            "in": "header",
            "required": false,
            "description": "Request signature, `t=<unix-seconds>,v1=<hex HMAC-SHA256>`. Required when the API key has request signing enabled.",
            "schema": {
              "type": "string",
              "example": "t=1735689600,v1=5d41402abc4b…"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Client-generated unique key. Replaying a write with the same key returns the original response instead of performing the operation twice. Retained for 24 hours.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateChatRoomDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success. The response schema for this operation is not yet documented — see the schema-coverage report. The SDK types this as `unknown`.",
            "x-mt-schema-pending": true
          },
          "201": {
            "description": "Room created"
          }
        },
        "summary": "Create a chat room",
        "tags": [
          "Advanced Messaging"
        ],
        "x-mt-schema-pending": true
      },
      "get": {
        "operationId": "AdvancedMessagingController_getRooms",
        "parameters": [
          {
            "name": "page",
            "required": false,
            "in": "query",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "limit",
            "required": false,
            "in": "query",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "type",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-mt-timestamp",
            "in": "header",
            "required": false,
            "description": "Current Unix time in seconds. Required when the API key has request signing enabled.",
            "schema": {
              "type": "integer",
              "format": "int64",
              "example": 1735689600
            }
          },
          {
            "name": "x-mt-signature",
            "in": "header",
            "required": false,
            "description": "Request signature, `t=<unix-seconds>,v1=<hex HMAC-SHA256>`. Required when the API key has request signing enabled.",
            "schema": {
              "type": "string",
              "example": "t=1735689600,v1=5d41402abc4b…"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The response schema for this operation is not yet documented — see the schema-coverage report. The SDK types this as `unknown`.",
            "x-mt-schema-pending": true
          }
        },
        "summary": "List the current user's chat rooms",
        "tags": [
          "Advanced Messaging"
        ],
        "x-mt-schema-pending": true
      }
    },
    "/notifications/api/v1/advanced-messaging/rooms/by-participants": {
      "get": {
        "description": "Used to find (not create) an existing direct-message or category-scoped room between a specific set of users, e.g. before starting a new chat.",
        "operationId": "AdvancedMessagingController_getRoomByParticipants",
        "parameters": [
          {
            "name": "category",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "participantIds",
            "required": true,
            "in": "query",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "x-mt-timestamp",
            "in": "header",
            "required": false,
            "description": "Current Unix time in seconds. Required when the API key has request signing enabled.",
            "schema": {
              "type": "integer",
              "format": "int64",
              "example": 1735689600
            }
          },
          {
            "name": "x-mt-signature",
            "in": "header",
            "required": false,
            "description": "Request signature, `t=<unix-seconds>,v1=<hex HMAC-SHA256>`. Required when the API key has request signing enabled.",
            "schema": {
              "type": "string",
              "example": "t=1735689600,v1=5d41402abc4b…"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The response schema for this operation is not yet documented — see the schema-coverage report. The SDK types this as `unknown`.",
            "x-mt-schema-pending": true
          }
        },
        "summary": "Find a room by its exact set of participants and category",
        "tags": [
          "Advanced Messaging"
        ],
        "x-mt-schema-pending": true
      }
    },
    "/notifications/api/v1/advanced-messaging/rooms/{roomId}": {
      "get": {
        "operationId": "AdvancedMessagingController_getRoom",
        "parameters": [
          {
            "name": "roomId",
            "required": true,
            "in": "path",
            "description": "Chat room ID",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-mt-timestamp",
            "in": "header",
            "required": false,
            "description": "Current Unix time in seconds. Required when the API key has request signing enabled.",
            "schema": {
              "type": "integer",
              "format": "int64",
              "example": 1735689600
            }
          },
          {
            "name": "x-mt-signature",
            "in": "header",
            "required": false,
            "description": "Request signature, `t=<unix-seconds>,v1=<hex HMAC-SHA256>`. Required when the API key has request signing enabled.",
            "schema": {
              "type": "string",
              "example": "t=1735689600,v1=5d41402abc4b…"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The response schema for this operation is not yet documented — see the schema-coverage report. The SDK types this as `unknown`.",
            "x-mt-schema-pending": true
          }
        },
        "summary": "Get a chat room by ID",
        "tags": [
          "Advanced Messaging"
        ],
        "x-mt-schema-pending": true
      },
      "put": {
        "operationId": "AdvancedMessagingController_updateRoom",
        "parameters": [
          {
            "name": "roomId",
            "required": true,
            "in": "path",
            "description": "Chat room ID",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-mt-timestamp",
            "in": "header",
            "required": false,
            "description": "Current Unix time in seconds. Required when the API key has request signing enabled.",
            "schema": {
              "type": "integer",
              "format": "int64",
              "example": 1735689600
            }
          },
          {
            "name": "x-mt-signature",
            "in": "header",
            "required": false,
            "description": "Request signature, `t=<unix-seconds>,v1=<hex HMAC-SHA256>`. Required when the API key has request signing enabled.",
            "schema": {
              "type": "string",
              "example": "t=1735689600,v1=5d41402abc4b…"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Client-generated unique key. Replaying a write with the same key returns the original response instead of performing the operation twice. Retained for 24 hours.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "description": "Partial room fields to update (same shape as create)",
          "content": {
            "application/json": {
              "schema": {
                "type": "string"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success. The response schema for this operation is not yet documented — see the schema-coverage report. The SDK types this as `unknown`.",
            "x-mt-schema-pending": true
          }
        },
        "summary": "Update a chat room",
        "tags": [
          "Advanced Messaging"
        ],
        "x-mt-schema-pending": true
      },
      "delete": {
        "operationId": "AdvancedMessagingController_deleteRoom",
        "parameters": [
          {
            "name": "roomId",
            "required": true,
            "in": "path",
            "description": "Chat room ID",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-mt-timestamp",
            "in": "header",
            "required": false,
            "description": "Current Unix time in seconds. Required when the API key has request signing enabled.",
            "schema": {
              "type": "integer",
              "format": "int64",
              "example": 1735689600
            }
          },
          {
            "name": "x-mt-signature",
            "in": "header",
            "required": false,
            "description": "Request signature, `t=<unix-seconds>,v1=<hex HMAC-SHA256>`. Required when the API key has request signing enabled.",
            "schema": {
              "type": "string",
              "example": "t=1735689600,v1=5d41402abc4b…"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The response schema for this operation is not yet documented — see the schema-coverage report. The SDK types this as `unknown`.",
            "x-mt-schema-pending": true
          }
        },
        "summary": "Delete a chat room",
        "tags": [
          "Advanced Messaging"
        ],
        "x-mt-schema-pending": true
      }
    },
    "/notifications/api/v1/advanced-messaging/rooms/{roomId}/participants": {
      "post": {
        "operationId": "AdvancedMessagingController_addParticipant",
        "parameters": [
          {
            "name": "roomId",
            "required": true,
            "in": "path",
            "description": "Chat room ID",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-mt-timestamp",
            "in": "header",
            "required": false,
            "description": "Current Unix time in seconds. Required when the API key has request signing enabled.",
            "schema": {
              "type": "integer",
              "format": "int64",
              "example": 1735689600
            }
          },
          {
            "name": "x-mt-signature",
            "in": "header",
            "required": false,
            "description": "Request signature, `t=<unix-seconds>,v1=<hex HMAC-SHA256>`. Required when the API key has request signing enabled.",
            "schema": {
              "type": "string",
              "example": "t=1735689600,v1=5d41402abc4b…"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Client-generated unique key. Replaying a write with the same key returns the original response instead of performing the operation twice. Retained for 24 hours.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AddParticipantDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success. The response schema for this operation is not yet documented — see the schema-coverage report. The SDK types this as `unknown`.",
            "x-mt-schema-pending": true
          },
          "201": {
            "description": "Participant added"
          }
        },
        "summary": "Add a participant to a chat room",
        "tags": [
          "Advanced Messaging"
        ],
        "x-mt-schema-pending": true
      }
    },
    "/notifications/api/v1/advanced-messaging/rooms/{roomId}/participants/{participantId}": {
      "delete": {
        "operationId": "AdvancedMessagingController_removeParticipant",
        "parameters": [
          {
            "name": "roomId",
            "required": true,
            "in": "path",
            "description": "Chat room ID",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "participantId",
            "required": true,
            "in": "path",
            "description": "Participant ID to remove",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-mt-timestamp",
            "in": "header",
            "required": false,
            "description": "Current Unix time in seconds. Required when the API key has request signing enabled.",
            "schema": {
              "type": "integer",
              "format": "int64",
              "example": 1735689600
            }
          },
          {
            "name": "x-mt-signature",
            "in": "header",
            "required": false,
            "description": "Request signature, `t=<unix-seconds>,v1=<hex HMAC-SHA256>`. Required when the API key has request signing enabled.",
            "schema": {
              "type": "string",
              "example": "t=1735689600,v1=5d41402abc4b…"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The response schema for this operation is not yet documented — see the schema-coverage report. The SDK types this as `unknown`.",
            "x-mt-schema-pending": true
          }
        },
        "summary": "Remove a participant from a chat room",
        "tags": [
          "Advanced Messaging"
        ],
        "x-mt-schema-pending": true
      }
    },
    "/notifications/api/v1/advanced-messaging/rooms/{roomId}/participants/{participantId}/role": {
      "put": {
        "operationId": "AdvancedMessagingController_updateParticipantRole",
        "parameters": [
          {
            "name": "roomId",
            "required": true,
            "in": "path",
            "description": "Chat room ID",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "participantId",
            "required": true,
            "in": "path",
            "description": "Participant ID",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-mt-timestamp",
            "in": "header",
            "required": false,
            "description": "Current Unix time in seconds. Required when the API key has request signing enabled.",
            "schema": {
              "type": "integer",
              "format": "int64",
              "example": 1735689600
            }
          },
          {
            "name": "x-mt-signature",
            "in": "header",
            "required": false,
            "description": "Request signature, `t=<unix-seconds>,v1=<hex HMAC-SHA256>`. Required when the API key has request signing enabled.",
            "schema": {
              "type": "string",
              "example": "t=1735689600,v1=5d41402abc4b…"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Client-generated unique key. Replaying a write with the same key returns the original response instead of performing the operation twice. Retained for 24 hours.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "role": {
                    "enum": [
                      "owner",
                      "admin",
                      "member"
                    ]
                  }
                },
                "required": [
                  "role"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success. The response schema for this operation is not yet documented — see the schema-coverage report. The SDK types this as `unknown`.",
            "x-mt-schema-pending": true
          }
        },
        "summary": "Change a participant's role in a chat room",
        "tags": [
          "Advanced Messaging"
        ],
        "x-mt-schema-pending": true
      }
    },
    "/notifications/api/v1/advanced-messaging/rooms/{roomId}/messages": {
      "post": {
        "description": "Accepts up to 10 file attachments alongside the message. The HTTP response returns as soon as the message text is saved; attachments upload in the background and are broadcast to the room over WebSocket once complete, so this endpoint does not block on file upload.",
        "operationId": "AdvancedMessagingController_sendMessage",
        "parameters": [
          {
            "name": "roomId",
            "required": true,
            "in": "path",
            "description": "Chat room ID",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-mt-timestamp",
            "in": "header",
            "required": false,
            "description": "Current Unix time in seconds. Required when the API key has request signing enabled.",
            "schema": {
              "type": "integer",
              "format": "int64",
              "example": 1735689600
            }
          },
          {
            "name": "x-mt-signature",
            "in": "header",
            "required": false,
            "description": "Request signature, `t=<unix-seconds>,v1=<hex HMAC-SHA256>`. Required when the API key has request signing enabled.",
            "schema": {
              "type": "string",
              "example": "t=1735689600,v1=5d41402abc4b…"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Client-generated unique key. Replaying a write with the same key returns the original response instead of performing the operation twice. Retained for 24 hours.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/CreateChatMessageDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success. The response schema for this operation is not yet documented — see the schema-coverage report. The SDK types this as `unknown`.",
            "x-mt-schema-pending": true
          },
          "201": {
            "description": "Message saved (attachments may still be uploading)"
          }
        },
        "summary": "Send a message to a chat room",
        "tags": [
          "Advanced Messaging"
        ],
        "x-mt-schema-pending": true
      },
      "get": {
        "operationId": "AdvancedMessagingController_getMessages",
        "parameters": [
          {
            "name": "roomId",
            "required": true,
            "in": "path",
            "description": "Chat room ID",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "required": false,
            "in": "query",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "limit",
            "required": false,
            "in": "query",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "x-mt-timestamp",
            "in": "header",
            "required": false,
            "description": "Current Unix time in seconds. Required when the API key has request signing enabled.",
            "schema": {
              "type": "integer",
              "format": "int64",
              "example": 1735689600
            }
          },
          {
            "name": "x-mt-signature",
            "in": "header",
            "required": false,
            "description": "Request signature, `t=<unix-seconds>,v1=<hex HMAC-SHA256>`. Required when the API key has request signing enabled.",
            "schema": {
              "type": "string",
              "example": "t=1735689600,v1=5d41402abc4b…"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The response schema for this operation is not yet documented — see the schema-coverage report. The SDK types this as `unknown`.",
            "x-mt-schema-pending": true
          }
        },
        "summary": "List messages in a chat room (paginated)",
        "tags": [
          "Advanced Messaging"
        ],
        "x-mt-schema-pending": true
      }
    },
    "/notifications/api/v1/advanced-messaging/messages/{messageId}": {
      "get": {
        "operationId": "AdvancedMessagingController_getMessage",
        "parameters": [
          {
            "name": "messageId",
            "required": true,
            "in": "path",
            "description": "Message ID",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-mt-timestamp",
            "in": "header",
            "required": false,
            "description": "Current Unix time in seconds. Required when the API key has request signing enabled.",
            "schema": {
              "type": "integer",
              "format": "int64",
              "example": 1735689600
            }
          },
          {
            "name": "x-mt-signature",
            "in": "header",
            "required": false,
            "description": "Request signature, `t=<unix-seconds>,v1=<hex HMAC-SHA256>`. Required when the API key has request signing enabled.",
            "schema": {
              "type": "string",
              "example": "t=1735689600,v1=5d41402abc4b…"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The response schema for this operation is not yet documented — see the schema-coverage report. The SDK types this as `unknown`.",
            "x-mt-schema-pending": true
          }
        },
        "summary": "Get a single message by ID",
        "tags": [
          "Advanced Messaging"
        ],
        "x-mt-schema-pending": true
      },
      "put": {
        "description": "Updates a message's text content. Marks the message as edited.",
        "operationId": "AdvancedMessagingController_updateMessage",
        "parameters": [
          {
            "name": "messageId",
            "required": true,
            "in": "path",
            "description": "Message ID",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-mt-timestamp",
            "in": "header",
            "required": false,
            "description": "Current Unix time in seconds. Required when the API key has request signing enabled.",
            "schema": {
              "type": "integer",
              "format": "int64",
              "example": 1735689600
            }
          },
          {
            "name": "x-mt-signature",
            "in": "header",
            "required": false,
            "description": "Request signature, `t=<unix-seconds>,v1=<hex HMAC-SHA256>`. Required when the API key has request signing enabled.",
            "schema": {
              "type": "string",
              "example": "t=1735689600,v1=5d41402abc4b…"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Client-generated unique key. Replaying a write with the same key returns the original response instead of performing the operation twice. Retained for 24 hours.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateChatMessageDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success. The response schema for this operation is not yet documented — see the schema-coverage report. The SDK types this as `unknown`.",
            "x-mt-schema-pending": true
          }
        },
        "summary": "Edit a message",
        "tags": [
          "Advanced Messaging"
        ],
        "x-mt-schema-pending": true
      },
      "delete": {
        "operationId": "AdvancedMessagingController_deleteMessage",
        "parameters": [
          {
            "name": "messageId",
            "required": true,
            "in": "path",
            "description": "Message ID",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-mt-timestamp",
            "in": "header",
            "required": false,
            "description": "Current Unix time in seconds. Required when the API key has request signing enabled.",
            "schema": {
              "type": "integer",
              "format": "int64",
              "example": 1735689600
            }
          },
          {
            "name": "x-mt-signature",
            "in": "header",
            "required": false,
            "description": "Request signature, `t=<unix-seconds>,v1=<hex HMAC-SHA256>`. Required when the API key has request signing enabled.",
            "schema": {
              "type": "string",
              "example": "t=1735689600,v1=5d41402abc4b…"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The response schema for this operation is not yet documented — see the schema-coverage report. The SDK types this as `unknown`.",
            "x-mt-schema-pending": true
          }
        },
        "summary": "Delete a message",
        "tags": [
          "Advanced Messaging"
        ],
        "x-mt-schema-pending": true
      }
    },
    "/notifications/api/v1/advanced-messaging/rooms/{roomId}/messages/search": {
      "post": {
        "operationId": "AdvancedMessagingController_searchMessages",
        "parameters": [
          {
            "name": "roomId",
            "required": true,
            "in": "path",
            "description": "Chat room ID",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-mt-timestamp",
            "in": "header",
            "required": false,
            "description": "Current Unix time in seconds. Required when the API key has request signing enabled.",
            "schema": {
              "type": "integer",
              "format": "int64",
              "example": 1735689600
            }
          },
          {
            "name": "x-mt-signature",
            "in": "header",
            "required": false,
            "description": "Request signature, `t=<unix-seconds>,v1=<hex HMAC-SHA256>`. Required when the API key has request signing enabled.",
            "schema": {
              "type": "string",
              "example": "t=1735689600,v1=5d41402abc4b…"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Client-generated unique key. Replaying a write with the same key returns the original response instead of performing the operation twice. Retained for 24 hours.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchMessagesDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success. The response schema for this operation is not yet documented — see the schema-coverage report. The SDK types this as `unknown`.",
            "x-mt-schema-pending": true
          }
        },
        "summary": "Search messages within a chat room",
        "tags": [
          "Advanced Messaging"
        ],
        "x-mt-schema-pending": true
      }
    },
    "/notifications/api/v1/advanced-messaging/messages/{messageId}/reactions": {
      "post": {
        "operationId": "AdvancedMessagingController_addReaction",
        "parameters": [
          {
            "name": "messageId",
            "required": true,
            "in": "path",
            "description": "Message ID",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-mt-timestamp",
            "in": "header",
            "required": false,
            "description": "Current Unix time in seconds. Required when the API key has request signing enabled.",
            "schema": {
              "type": "integer",
              "format": "int64",
              "example": 1735689600
            }
          },
          {
            "name": "x-mt-signature",
            "in": "header",
            "required": false,
            "description": "Request signature, `t=<unix-seconds>,v1=<hex HMAC-SHA256>`. Required when the API key has request signing enabled.",
            "schema": {
              "type": "string",
              "example": "t=1735689600,v1=5d41402abc4b…"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Client-generated unique key. Replaying a write with the same key returns the original response instead of performing the operation twice. Retained for 24 hours.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AddReactionDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success. The response schema for this operation is not yet documented — see the schema-coverage report. The SDK types this as `unknown`.",
            "x-mt-schema-pending": true
          },
          "201": {
            "description": "Reaction added"
          }
        },
        "summary": "Add an emoji reaction to a message",
        "tags": [
          "Advanced Messaging"
        ],
        "x-mt-schema-pending": true
      }
    },
    "/notifications/api/v1/advanced-messaging/messages/{messageId}/reactions/{emoji}": {
      "delete": {
        "operationId": "AdvancedMessagingController_removeReaction",
        "parameters": [
          {
            "name": "messageId",
            "required": true,
            "in": "path",
            "description": "Message ID",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "emoji",
            "required": true,
            "in": "path",
            "description": "Emoji to remove",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-mt-timestamp",
            "in": "header",
            "required": false,
            "description": "Current Unix time in seconds. Required when the API key has request signing enabled.",
            "schema": {
              "type": "integer",
              "format": "int64",
              "example": 1735689600
            }
          },
          {
            "name": "x-mt-signature",
            "in": "header",
            "required": false,
            "description": "Request signature, `t=<unix-seconds>,v1=<hex HMAC-SHA256>`. Required when the API key has request signing enabled.",
            "schema": {
              "type": "string",
              "example": "t=1735689600,v1=5d41402abc4b…"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The response schema for this operation is not yet documented — see the schema-coverage report. The SDK types this as `unknown`.",
            "x-mt-schema-pending": true
          }
        },
        "summary": "Remove the caller's reaction from a message",
        "tags": [
          "Advanced Messaging"
        ],
        "x-mt-schema-pending": true
      }
    },
    "/notifications/api/v1/advanced-messaging/messages/{messageId}/read": {
      "post": {
        "operationId": "AdvancedMessagingController_markMessageAsRead",
        "parameters": [
          {
            "name": "messageId",
            "required": true,
            "in": "path",
            "description": "Message ID",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-mt-timestamp",
            "in": "header",
            "required": false,
            "description": "Current Unix time in seconds. Required when the API key has request signing enabled.",
            "schema": {
              "type": "integer",
              "format": "int64",
              "example": 1735689600
            }
          },
          {
            "name": "x-mt-signature",
            "in": "header",
            "required": false,
            "description": "Request signature, `t=<unix-seconds>,v1=<hex HMAC-SHA256>`. Required when the API key has request signing enabled.",
            "schema": {
              "type": "string",
              "example": "t=1735689600,v1=5d41402abc4b…"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Client-generated unique key. Replaying a write with the same key returns the original response instead of performing the operation twice. Retained for 24 hours.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The response schema for this operation is not yet documented — see the schema-coverage report. The SDK types this as `unknown`.",
            "x-mt-schema-pending": true
          }
        },
        "summary": "Mark a single message as read",
        "tags": [
          "Advanced Messaging"
        ],
        "x-mt-schema-pending": true
      }
    },
    "/notifications/api/v1/advanced-messaging/rooms/{roomId}/read": {
      "post": {
        "operationId": "AdvancedMessagingController_markRoomAsRead",
        "parameters": [
          {
            "name": "roomId",
            "required": true,
            "in": "path",
            "description": "Chat room ID",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-mt-timestamp",
            "in": "header",
            "required": false,
            "description": "Current Unix time in seconds. Required when the API key has request signing enabled.",
            "schema": {
              "type": "integer",
              "format": "int64",
              "example": 1735689600
            }
          },
          {
            "name": "x-mt-signature",
            "in": "header",
            "required": false,
            "description": "Request signature, `t=<unix-seconds>,v1=<hex HMAC-SHA256>`. Required when the API key has request signing enabled.",
            "schema": {
              "type": "string",
              "example": "t=1735689600,v1=5d41402abc4b…"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Client-generated unique key. Replaying a write with the same key returns the original response instead of performing the operation twice. Retained for 24 hours.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The response schema for this operation is not yet documented — see the schema-coverage report. The SDK types this as `unknown`.",
            "x-mt-schema-pending": true
          }
        },
        "summary": "Mark all messages in a room as read",
        "tags": [
          "Advanced Messaging"
        ],
        "x-mt-schema-pending": true
      }
    },
    "/notifications/api/v1/advanced-messaging/migrate/create-or-get-room": {
      "post": {
        "operationId": "AdvancedMessagingController_getOrCreateDirectRoom",
        "parameters": [
          {
            "name": "x-mt-timestamp",
            "in": "header",
            "required": false,
            "description": "Current Unix time in seconds. Required when the API key has request signing enabled.",
            "schema": {
              "type": "integer",
              "format": "int64",
              "example": 1735689600
            }
          },
          {
            "name": "x-mt-signature",
            "in": "header",
            "required": false,
            "description": "Request signature, `t=<unix-seconds>,v1=<hex HMAC-SHA256>`. Required when the API key has request signing enabled.",
            "schema": {
              "type": "string",
              "example": "t=1735689600,v1=5d41402abc4b…"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Client-generated unique key. Replaying a write with the same key returns the original response instead of performing the operation twice. Retained for 24 hours.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The response schema for this operation is not yet documented — see the schema-coverage report. The SDK types this as `unknown`.",
            "x-mt-schema-pending": true
          },
          "201": {
            "description": ""
          }
        },
        "summary": "Get or create a direct room between two users",
        "tags": [
          "Advanced Messaging"
        ],
        "x-mt-schema-pending": true
      }
    },
    "/notifications/api/v1/email-preferences/unsubscribe": {
      "get": {
        "description": "Server-rendered HTML page opened from the unsubscribe link in an email. Shows a confirmation form, or an \"already unsubscribed\" state if the token was already used. Not a JSON API endpoint — meant to be opened in a browser.",
        "operationId": "EmailPreferencesController_showUnsubscribePage",
        "parameters": [
          {
            "name": "token",
            "required": true,
            "in": "query",
            "description": "Unsubscribe token from the email link",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-mt-timestamp",
            "in": "header",
            "required": false,
            "description": "Current Unix time in seconds. Required when the API key has request signing enabled.",
            "schema": {
              "type": "integer",
              "format": "int64",
              "example": 1735689600
            }
          },
          {
            "name": "x-mt-signature",
            "in": "header",
            "required": false,
            "description": "Request signature, `t=<unix-seconds>,v1=<hex HMAC-SHA256>`. Required when the API key has request signing enabled.",
            "schema": {
              "type": "string",
              "example": "t=1735689600,v1=5d41402abc4b…"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The response schema for this operation is not yet documented — see the schema-coverage report. The SDK types this as `unknown`.",
            "x-mt-schema-pending": true
          }
        },
        "summary": "Show the email-unsubscribe confirmation page",
        "tags": [
          "Email Preferences"
        ],
        "x-mt-schema-pending": true
      },
      "post": {
        "description": "Submitted by the confirmation form on the unsubscribe page. Marks the token's associated email preference as unsubscribed and returns an HTML confirmation page.",
        "operationId": "EmailPreferencesController_processUnsubscribe",
        "parameters": [
          {
            "name": "token",
            "required": true,
            "in": "query",
            "description": "Unsubscribe token from the email link",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-mt-timestamp",
            "in": "header",
            "required": false,
            "description": "Current Unix time in seconds. Required when the API key has request signing enabled.",
            "schema": {
              "type": "integer",
              "format": "int64",
              "example": 1735689600
            }
          },
          {
            "name": "x-mt-signature",
            "in": "header",
            "required": false,
            "description": "Request signature, `t=<unix-seconds>,v1=<hex HMAC-SHA256>`. Required when the API key has request signing enabled.",
            "schema": {
              "type": "string",
              "example": "t=1735689600,v1=5d41402abc4b…"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Client-generated unique key. Replaying a write with the same key returns the original response instead of performing the operation twice. Retained for 24 hours.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The response schema for this operation is not yet documented — see the schema-coverage report. The SDK types this as `unknown`.",
            "x-mt-schema-pending": true
          },
          "201": {
            "description": ""
          }
        },
        "summary": "Process an unsubscribe request",
        "tags": [
          "Email Preferences"
        ],
        "x-mt-schema-pending": true
      }
    },
    "/notifications/api/v1/email-preferences/resubscribe": {
      "get": {
        "description": "Opened from the \"Resubscribe\" link shown after unsubscribing. Reverses the unsubscribe for the token's associated email preference and returns an HTML confirmation page.",
        "operationId": "EmailPreferencesController_processResubscribe",
        "parameters": [
          {
            "name": "token",
            "required": true,
            "in": "query",
            "description": "Resubscribe token from the email link",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-mt-timestamp",
            "in": "header",
            "required": false,
            "description": "Current Unix time in seconds. Required when the API key has request signing enabled.",
            "schema": {
              "type": "integer",
              "format": "int64",
              "example": 1735689600
            }
          },
          {
            "name": "x-mt-signature",
            "in": "header",
            "required": false,
            "description": "Request signature, `t=<unix-seconds>,v1=<hex HMAC-SHA256>`. Required when the API key has request signing enabled.",
            "schema": {
              "type": "string",
              "example": "t=1735689600,v1=5d41402abc4b…"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The response schema for this operation is not yet documented — see the schema-coverage report. The SDK types this as `unknown`.",
            "x-mt-schema-pending": true
          }
        },
        "summary": "Resubscribe to emails and show a confirmation page",
        "tags": [
          "Email Preferences"
        ],
        "x-mt-schema-pending": true
      }
    }
  },
  "info": {
    "title": "MineTech Notifications API",
    "description": "Notification dispatch, messaging templates and per-user delivery preferences.\n\nMineTech supports two authentication schemes.\n\n**API keys** (`apiKey`) — for server-to-server integrations.\nSend `Authorization: Bearer mt_live_…` (or `mt_test_…` for sandbox). The key\ncarries its own tenant, so no tenant header is required.\n\nKeys may additionally require **request signing**. When enabled, send:\n\n- `x-mt-timestamp`: current Unix time in seconds\n- `x-mt-signature`: `t=<unix-seconds>,v1=<hex HMAC-SHA256>`\n\nThe signed string is `{timestamp}.{METHOD}.{path-with-query}.{sha256hex(body)}`.\nSignatures are accepted within a 300-second window. Signing is on by default for\nlive keys and off for test keys.\n\n**JWT** (`jwt`) — used by the MineTech web and mobile apps.\nNot intended for integrations; API keys cannot reach the auth endpoints.",
    "version": "1.0.0",
    "contact": {
      "name": "MineTech Engineering",
      "url": "https://docs.minetech.rw",
      "email": "engineering@minetech.rw"
    },
    "license": {
      "name": "Proprietary",
      "url": "https://minetech.rw/terms"
    }
  },
  "tags": [
    {
      "name": "Notifications",
      "description": "Dispatch and delivery history"
    },
    {
      "name": "Messaging",
      "description": "Templates and advanced messaging"
    },
    {
      "name": "Notification Preferences",
      "description": "Per-user email and SMS preferences"
    }
  ],
  "servers": [
    {
      "url": "https://api.minetech.rw",
      "description": "Production"
    },
    {
      "url": "https://sandbox.api.minetech.rw",
      "description": "Sandbox"
    },
    {
      "url": "http://localhost:4001",
      "description": "Local gateway"
    }
  ],
  "components": {
    "securitySchemes": {
      "jwt": {
        "scheme": "bearer",
        "bearerFormat": "JWT",
        "type": "http",
        "description": "MineTech dashboard session token."
      },
      "apiKey": {
        "type": "apiKey",
        "in": "header",
        "name": "Authorization",
        "description": "API key as `Bearer mt_live_…` / `Bearer mt_test_…`. Issue keys under Developers → API Keys."
      }
    },
    "schemas": {
      "SmsPreferenceActionDto": {
        "type": "object",
        "properties": {
          "phoneNumber": {
            "type": "string",
            "example": "+250788123456",
            "description": "Phone number to opt in/out of SMS, E.164 format"
          }
        },
        "required": [
          "phoneNumber"
        ]
      },
      "RegisterDeviceDto": {
        "type": "object",
        "properties": {
          "token": {
            "type": "string",
            "description": "Expo push token, e.g. ExponentPushToken[...]"
          },
          "platform": {
            "type": "string",
            "description": "Device platform (ios | android)"
          }
        },
        "required": [
          "token"
        ]
      },
      "MarkMultipleAsReadDto": {
        "type": "object",
        "properties": {
          "ids": {
            "description": "Array of notification IDs to mark as read",
            "example": [
              "uuid1",
              "uuid2",
              "uuid3"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "ids"
        ]
      },
      "DeleteMultipleDto": {
        "type": "object",
        "properties": {
          "ids": {
            "description": "Array of notification IDs to delete",
            "example": [
              "uuid1",
              "uuid2",
              "uuid3"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "ids"
        ]
      },
      "CreateChatRoomDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Display name for the room"
          },
          "type": {
            "type": "string",
            "enum": [
              "direct",
              "group",
              "channel"
            ],
            "description": "Kind of chat room to create"
          },
          "description": {
            "type": "string"
          },
          "avatarUrl": {
            "type": "string",
            "description": "URL of the room avatar image"
          },
          "isPrivate": {
            "type": "boolean",
            "description": "Whether the room is private"
          },
          "participantIds": {
            "description": "User IDs to add as participants on creation",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "settings": {
            "type": "object",
            "description": "Arbitrary room-level settings"
          }
        },
        "required": [
          "type"
        ]
      },
      "AddParticipantDto": {
        "type": "object",
        "properties": {
          "userId": {
            "type": "string",
            "description": "ID of the user to add to the room"
          },
          "role": {
            "type": "string",
            "enum": [
              "owner",
              "admin",
              "member"
            ],
            "description": "Role to grant the new participant. Defaults to member."
          }
        },
        "required": [
          "userId"
        ]
      },
      "CreateChatMessageDto": {
        "type": "object",
        "properties": {
          "content": {
            "type": "string",
            "example": "Shift handover complete, see you tomorrow.",
            "description": "Message text. May be sent alongside file attachments."
          },
          "messageType": {
            "type": "string",
            "enum": [
              "text",
              "image",
              "video",
              "audio",
              "file",
              "voice_note",
              "system",
              "link"
            ],
            "description": "Type of message. Defaults to text."
          },
          "parentMessageId": {
            "type": "string",
            "description": "ID of the message being replied to, if any"
          },
          "mentions": {
            "description": "User IDs mentioned in the message",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "metadata": {
            "type": "object",
            "description": "Arbitrary client metadata, e.g. base64 thumbnails for attached files"
          }
        },
        "required": [
          "content"
        ]
      },
      "UpdateChatMessageDto": {
        "type": "object",
        "properties": {
          "content": {
            "type": "string",
            "description": "New message text"
          }
        }
      },
      "SearchMessagesDto": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Text to search for within the room's messages"
          },
          "page": {
            "type": "number",
            "default": 1,
            "description": "Page number"
          },
          "limit": {
            "type": "number",
            "default": 20,
            "description": "Results per page"
          }
        },
        "required": [
          "query"
        ]
      },
      "AddReactionDto": {
        "type": "object",
        "properties": {
          "emoji": {
            "type": "string",
            "example": "👍",
            "description": "Emoji to react with"
          }
        },
        "required": [
          "emoji"
        ]
      }
    },
    "parameters": {
      "MineTechTimestamp": {
        "name": "x-mt-timestamp",
        "in": "header",
        "required": false,
        "description": "Current Unix time in seconds. Required when the API key has request signing enabled.",
        "schema": {
          "type": "integer",
          "format": "int64",
          "example": 1735689600
        }
      },
      "MineTechSignature": {
        "name": "x-mt-signature",
        "in": "header",
        "required": false,
        "description": "Request signature, `t=<unix-seconds>,v1=<hex HMAC-SHA256>`. Required when the API key has request signing enabled.",
        "schema": {
          "type": "string",
          "example": "t=1735689600,v1=5d41402abc4b…"
        }
      },
      "IdempotencyKey": {
        "name": "Idempotency-Key",
        "in": "header",
        "required": false,
        "description": "Client-generated unique key. Replaying a write with the same key returns the original response instead of performing the operation twice. Retained for 24 hours.",
        "schema": {
          "type": "string",
          "format": "uuid"
        }
      }
    }
  },
  "externalDocs": {
    "description": "Developer documentation",
    "url": "https://docs.minetech.rw"
  },
  "security": [
    {
      "apiKey": []
    },
    {
      "jwt": []
    }
  ]
}
