{
  "openapi": "3.1.0",
  "info": {
    "title": "Lobbe API",
    "version": "1",
    "description": "Submit meetings, follow them, read, search and ask them with a personal API token. Every successful JSON response carries schemaVersion 1; ignore fields you don't know. An error is { error: { code, message, details? } } only, with no schemaVersion, and ?format=markdown answers Markdown text."
  },
  "externalDocs": {
    "url": "https://docs.lobbe.ai",
    "description": "Guides, the reference and the error catalog"
  },
  "servers": [
    {
      "url": "https://app.lobbe.ai/api/v1"
    }
  ],
  "security": [
    {
      "bearer": []
    }
  ],
  "components": {
    "securitySchemes": {
      "bearer": {
        "type": "http",
        "scheme": "bearer",
        "description": "A personal API token (lobbe_…), minted in the app"
      }
    }
  },
  "paths": {
    "/whoami": {
      "get": {
        "operationId": "whoami",
        "summary": "Who this token belongs to, its scopes, its daily cap and the upload limits",
        "x-lobbe-summary-fa": "این توکن متعلق به کیست، چه دسترسی‌هایی دارد، سقف روزانه‌اش و محدودیت‌های ارسال",
        "x-lobbe-scopes": "any",
        "x-lobbe-spends": false,
        "x-lobbe-rate-limit": {
          "class": "read",
          "requests": 600,
          "windowSeconds": 600
        },
        "parameters": [],
        "responses": {
          "200": {
            "description": "Who this token belongs to, its scopes, its daily cap and the upload limits",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "schemaVersion": {
                      "type": "number",
                      "const": 1,
                      "description": "Always `1` within API v1",
                      "x-lobbe-description-fa": "در نسخهٔ ۱ API همیشه `1`"
                    },
                    "owner": {
                      "type": "object",
                      "properties": {
                        "type": {
                          "type": "string",
                          "const": "user",
                          "description": "The owner's kind: `user` today; ignore a type you don't know",
                          "x-lobbe-description-fa": "نوع صاحب حساب: امروز `user`؛ نوعی را که نمی‌شناسید نادیده بگیرید"
                        },
                        "id": {
                          "type": "string",
                          "description": "The owner's account id",
                          "x-lobbe-description-fa": "شناسهٔ حساب صاحب"
                        },
                        "displayName": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "The owner's name; null when none was set (a phone number is never sent)",
                          "x-lobbe-description-fa": "نام صاحب حساب؛ اگر نامی ثبت نشده باشد `null` است (شمارهٔ موبایل هرگز فرستاده نمی‌شود)"
                        }
                      },
                      "required": [
                        "type",
                        "id",
                        "displayName"
                      ],
                      "description": "Who the token acts for: the account's owner",
                      "x-lobbe-description-fa": "کسی که توکن از طرف او کار می‌کند: صاحب حساب"
                    },
                    "token": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "The token's id",
                          "x-lobbe-description-fa": "شناسهٔ توکن"
                        },
                        "name": {
                          "type": "string",
                          "description": "The name the owner gave the token",
                          "x-lobbe-description-fa": "نامی که صاحب حساب به توکن داده است"
                        },
                        "scopes": {
                          "type": "array",
                          "items": {
                            "type": "string",
                            "enum": [
                              "recordings:read",
                              "recordings:write",
                              "recordings:query",
                              "series:read",
                              "series:write",
                              "series:query",
                              "account:read",
                              "account:write"
                            ]
                          },
                          "description": "The scopes the token holds, in catalog order; each is `recordings:read`, `recordings:write`, `recordings:query`, `series:read`, `series:write`, `series:query`, `account:read` or `account:write`",
                          "x-lobbe-description-fa": "دسترسی‌هایی که توکن دارد، به ترتیب فهرست؛ هر کدام یکی از `recordings:read`، `recordings:write`، `recordings:query`، `series:read`، `series:write`، `series:query`، `account:read` یا `account:write` است"
                        },
                        "dailyMinuteCap": {
                          "anyOf": [
                            {
                              "type": "integer",
                              "minimum": -9007199254740991,
                              "maximum": 9007199254740991
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "The most minutes the token may spend in any rolling 24 hours; null = no cap",
                          "x-lobbe-description-fa": "بیشترین دقیقه‌ای که توکن در هر ۲۴ ساعت پشت سر هم می‌تواند خرج کند؛ `null` یعنی نامحدود"
                        },
                        "usedMinutes24h": {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 9007199254740991,
                          "description": "Minutes the token committed in the last 24 hours, the sum its cap is checked against",
                          "x-lobbe-description-fa": "دقیقه‌هایی که توکن در ۲۴ ساعت گذشته خرج کرده است، همان جمعی که با سقف روزانه سنجیده می‌شود"
                        },
                        "expiresAt": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "When the token stops working (ISO 8601, UTC); null = it never expires",
                          "x-lobbe-description-fa": "زمانی که توکن از کار می‌افتد (`ISO 8601`، به وقت UTC)؛ `null` یعنی بدون انقضا"
                        }
                      },
                      "required": [
                        "id",
                        "name",
                        "scopes",
                        "dailyMinuteCap",
                        "usedMinutes24h",
                        "expiresAt"
                      ],
                      "description": "The token making this request",
                      "x-lobbe-description-fa": "توکنی که این درخواست را فرستاده است"
                    },
                    "wallet": {
                      "anyOf": [
                        {
                          "type": "object",
                          "properties": {
                            "balanceMinutes": {
                              "type": "integer",
                              "minimum": -9007199254740991,
                              "maximum": 9007199254740991,
                              "description": "The balance in minutes; a meeting not yet transcribed is not taken out of it yet, and a first meeting over the balance can leave it below 0",
                              "x-lobbe-description-fa": "موجودی به دقیقه؛ جلسه‌ای که هنوز رونوشتش آماده نشده هنوز از آن کم نشده است، و نخستین جلسه‌ای که از موجودی بیشتر باشد می‌تواند آن را زیر صفر ببرد"
                            }
                          },
                          "required": [
                            "balanceMinutes"
                          ]
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "The account's balance; null unless the token holds `account:read`",
                      "x-lobbe-description-fa": "موجودی حساب؛ اگر توکن دسترسی `account:read` نداشته باشد `null` است"
                    },
                    "limits": {
                      "type": "object",
                      "properties": {
                        "maxUploadMb": {
                          "type": "number",
                          "exclusiveMinimum": 0,
                          "description": "The largest audio file accepted, in megabytes",
                          "x-lobbe-description-fa": "بزرگ‌ترین فایل صوتی پذیرفته‌شده، به مگابایت"
                        },
                        "maxRecordingMinutes": {
                          "type": "number",
                          "exclusiveMinimum": 0,
                          "description": "The longest meeting accepted, in minutes of audio",
                          "x-lobbe-description-fa": "طولانی‌ترین جلسهٔ پذیرفته‌شده، به دقیقهٔ صدا"
                        }
                      },
                      "required": [
                        "maxUploadMb",
                        "maxRecordingMinutes"
                      ],
                      "description": "What one submission may be",
                      "x-lobbe-description-fa": "محدودیت‌های هر ارسال"
                    }
                  },
                  "required": [
                    "schemaVersion",
                    "owner",
                    "token",
                    "wallet",
                    "limits"
                  ],
                  "description": "Who this token acts for and what it may do",
                  "x-lobbe-description-fa": "این توکن از طرف چه کسی کار می‌کند و چه کارهایی می‌تواند بکند"
                }
              }
            }
          },
          "default": {
            "description": "An error. `error.code` is the contract; `message` may change.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "object",
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "The error's code: stable, the part to branch on",
                          "x-lobbe-description-fa": "کد خطا: ثابت می‌ماند و برنامهٔ شما باید بر اساس همین تصمیم بگیرد"
                        },
                        "message": {
                          "type": "string",
                          "description": "A human-readable explanation; its wording may change",
                          "x-lobbe-description-fa": "توضیحی خواندنی برای انسان؛ متن آن ممکن است تغییر کند"
                        },
                        "details": {
                          "description": "Extra facts some codes carry, e.g. `requiredMinutes` with `INSUFFICIENT_MINUTES`; absent otherwise",
                          "x-lobbe-description-fa": "اطلاعات بیشتری که بعضی کدها همراه دارند، مثلاً `requiredMinutes` همراه `INSUFFICIENT_MINUTES`؛ در غیر این صورت نمی‌آید",
                          "type": "object",
                          "propertyNames": {
                            "type": "string"
                          },
                          "additionalProperties": {}
                        }
                      },
                      "required": [
                        "code",
                        "message"
                      ],
                      "description": "What went wrong",
                      "x-lobbe-description-fa": "چه چیزی درست پیش نرفت"
                    }
                  },
                  "required": [
                    "error"
                  ],
                  "description": "An error",
                  "x-lobbe-description-fa": "یک خطا"
                }
              }
            }
          }
        }
      }
    },
    "/recordings/ready": {
      "get": {
        "operationId": "listReadyRecordings",
        "summary": "List finished meetings, newest first",
        "x-lobbe-summary-fa": "فهرست جلسه‌های آماده، از تازه‌ترین",
        "x-lobbe-scopes": [
          "recordings:read"
        ],
        "x-lobbe-spends": false,
        "x-lobbe-rate-limit": {
          "class": "read",
          "requests": 600,
          "windowSeconds": 600
        },
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "How many meetings to return, 1–100 (default 20)",
            "x-lobbe-description-fa": "تعداد جلسه‌هایی که برمی‌گردد، از ۱ تا ۱۰۰ (پیش‌فرض ۲۰)",
            "schema": {
              "default": 20,
              "type": "integer",
              "minimum": 1,
              "maximum": 100
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "description": "The `nextCursor` of the previous page, passed back as is; absent = the newest page, and any other value is a `400`",
            "x-lobbe-description-fa": "مقدار `nextCursor` صفحهٔ قبل، بی‌تغییر؛ اگر نباشد تازه‌ترین صفحه برمی‌گردد، و هر مقدار دیگری پاسخ `400` می‌گیرد",
            "schema": {
              "type": "string",
              "maxLength": 64,
              "pattern": "^\\d{1,15}\\.[A-Za-z0-9_-]{1,48}$"
            }
          },
          {
            "name": "seriesId",
            "in": "query",
            "required": false,
            "description": "Only the meetings of this series, one you own or joined (a series you can't read is a `404`); absent = your own meetings",
            "x-lobbe-description-fa": "فقط جلسه‌های این سری، سری خودتان یا سری‌ای که عضوش هستید (سری‌ای که به آن دسترسی ندارید پاسخ `404` می‌گیرد)؛ اگر نباشد، جلسه‌های خودتان",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 64
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List finished meetings, newest first",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "schemaVersion": {
                      "type": "number",
                      "const": 1,
                      "description": "Always `1` within API v1",
                      "x-lobbe-description-fa": "در نسخهٔ ۱ API همیشه `1`"
                    },
                    "items": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "description": "The meeting's id",
                            "x-lobbe-description-fa": "شناسهٔ جلسه"
                          },
                          "title": {
                            "anyOf": [
                              {
                                "type": "string"
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "description": "The meeting's title: the one its owner or the submitting token gave it, else its Lobbe's; null when it has none",
                            "x-lobbe-description-fa": "عنوان جلسه: همان‌که صاحب جلسه یا توکنِ فرستنده داده است، وگرنه عنوان لُب آن؛ اگر عنوانی نداشته باشد `null` است"
                          },
                          "kind": {
                            "type": "string",
                            "enum": [
                              "MEETING",
                              "LECTURE",
                              "INTERVIEW",
                              "VOICE_MEMO",
                              "CALL"
                            ],
                            "description": "The kind of recording, which picks the Lobbe's template: `MEETING`, `LECTURE`, `INTERVIEW`, `VOICE_MEMO` or `CALL`",
                            "x-lobbe-description-fa": "نوع ضبط، که قالب لُب را تعیین می‌کند: `MEETING`، `LECTURE`، `INTERVIEW`، `VOICE_MEMO` یا `CALL`"
                          },
                          "createdAt": {
                            "type": "string",
                            "description": "When Lobbe received the meeting (ISO 8601, UTC); `listReadyRecordings` is ordered by it",
                            "x-lobbe-description-fa": "زمانی که لُب جلسه را دریافت کرد (`ISO 8601`، به وقت UTC)؛ ترتیب `listReadyRecordings` بر اساس آن است"
                          },
                          "recordedAt": {
                            "type": "string",
                            "description": "When the meeting happened (ISO 8601, UTC): the `recordedAt` it was submitted with, else when Lobbe received it",
                            "x-lobbe-description-fa": "زمان برگزاری جلسه (`ISO 8601`، به وقت UTC): همان `recordedAt` که با جلسه فرستاده شد، وگرنه زمانی که لُب آن را دریافت کرد"
                          },
                          "durationSeconds": {
                            "anyOf": [
                              {
                                "type": "integer",
                                "minimum": -9007199254740991,
                                "maximum": 9007199254740991
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "description": "The audio's length in seconds, as Lobbe measured it; null if unknown",
                            "x-lobbe-description-fa": "طول صدا به ثانیه، همان‌طور که لُب اندازه گرفت؛ اگر معلوم نباشد `null` است"
                          },
                          "url": {
                            "type": "string",
                            "format": "uri",
                            "description": "The meeting's page in the web app",
                            "x-lobbe-description-fa": "صفحهٔ جلسه در برنامهٔ وب"
                          },
                          "bundleUrl": {
                            "type": "string",
                            "format": "uri",
                            "description": "GET it with a token holding `recordings:read` for the whole meeting (`getRecordingBundle`)",
                            "x-lobbe-description-fa": "با درخواست `GET` و توکنی که دسترسی `recordings:read` دارد، جلسهٔ کامل را بگیرید (`getRecordingBundle`)"
                          },
                          "series": {
                            "anyOf": [
                              {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string",
                                    "description": "The series' id, as `seriesId` takes it",
                                    "x-lobbe-description-fa": "شناسهٔ سری، همان‌که `seriesId` می‌گیرد"
                                  },
                                  "name": {
                                    "type": "string",
                                    "description": "The series' name",
                                    "x-lobbe-description-fa": "نام سری"
                                  }
                                },
                                "required": [
                                  "id",
                                  "name"
                                ]
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "description": "The series the meeting is filed in; null when it is in none, or while series are switched off",
                            "x-lobbe-description-fa": "سری‌ای که جلسه در آن است؛ اگر در هیچ سری‌ای نباشد یا سری‌ها خاموش باشند `null` است"
                          },
                          "displayTitle": {
                            "anyOf": [
                              {
                                "type": "string"
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "description": "The title as the app shows it: in a series titled by date, the series' name and the meeting's date in the Lobbe's language; otherwise the meeting's title, else its Lobbe's; null when there is none",
                            "x-lobbe-description-fa": "عنوان همان‌طور که برنامه نشان می‌دهد: در سری‌ای که عنوان جلسه‌هایش «نام سری + تاریخ» است، نام سری و تاریخ جلسه به زبان لُب؛ وگرنه عنوان جلسه و اگر نباشد عنوان لُب آن؛ اگر هیچ‌کدام نباشد `null` است"
                          }
                        },
                        "required": [
                          "id",
                          "title",
                          "kind",
                          "createdAt",
                          "recordedAt",
                          "durationSeconds",
                          "url",
                          "bundleUrl",
                          "series",
                          "displayTitle"
                        ]
                      },
                      "description": "The meetings on this page: `READY` ones only, the meetings a bundle can be read for",
                      "x-lobbe-description-fa": "جلسه‌های این صفحه: فقط جلسه‌های `READY`، همان‌هایی که جلسهٔ کاملشان را می‌توان خواند"
                    },
                    "nextCursor": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "Pass it back as `cursor` for the next, older page; null on the last page",
                      "x-lobbe-description-fa": "برای صفحهٔ بعد (قدیمی‌تر) آن را به‌عنوان `cursor` بفرستید؛ در صفحهٔ آخر `null` است"
                    }
                  },
                  "required": [
                    "schemaVersion",
                    "items",
                    "nextCursor"
                  ],
                  "description": "A page of finished meetings, newest first",
                  "x-lobbe-description-fa": "یک صفحه از جلسه‌های آماده، از تازه‌ترین"
                }
              }
            }
          },
          "default": {
            "description": "An error. `error.code` is the contract; `message` may change.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "object",
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "The error's code: stable, the part to branch on",
                          "x-lobbe-description-fa": "کد خطا: ثابت می‌ماند و برنامهٔ شما باید بر اساس همین تصمیم بگیرد"
                        },
                        "message": {
                          "type": "string",
                          "description": "A human-readable explanation; its wording may change",
                          "x-lobbe-description-fa": "توضیحی خواندنی برای انسان؛ متن آن ممکن است تغییر کند"
                        },
                        "details": {
                          "description": "Extra facts some codes carry, e.g. `requiredMinutes` with `INSUFFICIENT_MINUTES`; absent otherwise",
                          "x-lobbe-description-fa": "اطلاعات بیشتری که بعضی کدها همراه دارند، مثلاً `requiredMinutes` همراه `INSUFFICIENT_MINUTES`؛ در غیر این صورت نمی‌آید",
                          "type": "object",
                          "propertyNames": {
                            "type": "string"
                          },
                          "additionalProperties": {}
                        }
                      },
                      "required": [
                        "code",
                        "message"
                      ],
                      "description": "What went wrong",
                      "x-lobbe-description-fa": "چه چیزی درست پیش نرفت"
                    }
                  },
                  "required": [
                    "error"
                  ],
                  "description": "An error",
                  "x-lobbe-description-fa": "یک خطا"
                }
              }
            }
          }
        }
      }
    },
    "/recordings/search": {
      "get": {
        "operationId": "searchRecordings",
        "summary": "Search the owner's finished meetings by their words, newest meeting first",
        "x-lobbe-summary-fa": "جست‌وجو در جلسه‌های آمادهٔ صاحب حساب با واژه‌هایشان، از تازه‌ترین جلسه",
        "x-lobbe-scopes": [
          "recordings:query"
        ],
        "x-lobbe-spends": false,
        "x-lobbe-rate-limit": {
          "class": "search",
          "requests": 120,
          "windowSeconds": 600
        },
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": true,
            "description": "The words to find, 1–200 characters. A meeting matches when every word appears in its title, transcript or Lobbe, even inside a longer word; case, diacritics, the half-space (ZWNJ) and Arabic letter forms are ignored, and Persian digits match Latin ones. A `q` with no word in it is a `400`",
            "x-lobbe-description-fa": "واژه‌هایی که جست‌وجو می‌شوند، ۱ تا ۲۰۰ نویسه. جلسه‌ای پیدا می‌شود که همهٔ واژه‌ها در عنوان، رونوشت یا لُب آن آمده باشند، حتی درون واژه‌ای بلندتر؛ بزرگی و کوچکی حروف، اعراب، نیم‌فاصله و شکل عربی حروف نادیده گرفته می‌شوند و رقم‌های فارسی با رقم‌های لاتین یکی حساب می‌شوند. `q`ی که هیچ واژه‌ای نداشته باشد پاسخ `400` می‌گیرد",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 200
            }
          },
          {
            "name": "seriesId",
            "in": "query",
            "required": false,
            "description": "Only the meetings of this series, one you own or joined (a series you can't read is a `404`); absent = your own meetings",
            "x-lobbe-description-fa": "فقط جلسه‌های این سری، سری خودتان یا سری‌ای که عضوش هستید (سری‌ای که به آن دسترسی ندارید پاسخ `404` می‌گیرد)؛ اگر نباشد، جلسه‌های خودتان",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 64
            }
          },
          {
            "name": "kind",
            "in": "query",
            "required": false,
            "description": "Only meetings of this kind: `MEETING`, `LECTURE`, `INTERVIEW`, `VOICE_MEMO` or `CALL`",
            "x-lobbe-description-fa": "فقط جلسه‌هایی از این نوع: `MEETING`، `LECTURE`، `INTERVIEW`، `VOICE_MEMO` یا `CALL`",
            "schema": {
              "type": "string",
              "enum": [
                "MEETING",
                "LECTURE",
                "INTERVIEW",
                "VOICE_MEMO",
                "CALL"
              ]
            }
          },
          {
            "name": "from",
            "in": "query",
            "required": false,
            "description": "Only meetings that happened at or after this time (`recordedAt`), ISO 8601 with an offset",
            "x-lobbe-description-fa": "فقط جلسه‌هایی که در این زمان یا پس از آن برگزار شده‌اند (`recordedAt`)، به `ISO 8601` با اختلاف ساعت",
            "schema": {
              "type": "string",
              "format": "date-time",
              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
            }
          },
          {
            "name": "to",
            "in": "query",
            "required": false,
            "description": "Only meetings that happened at or before this time (`recordedAt`), ISO 8601 with an offset",
            "x-lobbe-description-fa": "فقط جلسه‌هایی که در این زمان یا پیش از آن برگزار شده‌اند (`recordedAt`)، به `ISO 8601` با اختلاف ساعت",
            "schema": {
              "type": "string",
              "format": "date-time",
              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "How many meetings to return, 1–50 (default 20)",
            "x-lobbe-description-fa": "تعداد جلسه‌هایی که برمی‌گردد، از ۱ تا ۵۰ (پیش‌فرض ۲۰)",
            "schema": {
              "default": 20,
              "type": "integer",
              "minimum": 1,
              "maximum": 50
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "description": "The `nextCursor` of the previous page, passed back as is; absent = the first page, and a malformed value is a `400`",
            "x-lobbe-description-fa": "مقدار `nextCursor` صفحهٔ قبل، بی‌تغییر؛ اگر نباشد صفحهٔ نخست برمی‌گردد، و مقدار نادرست پاسخ `400` می‌گیرد",
            "schema": {
              "type": "string",
              "maxLength": 64,
              "pattern": "^\\d{1,15}\\.[A-Za-z0-9_-]{1,48}$"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Search the owner's finished meetings by their words, newest meeting first",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "schemaVersion": {
                      "type": "number",
                      "const": 1,
                      "description": "Always `1` within API v1",
                      "x-lobbe-description-fa": "در نسخهٔ ۱ API همیشه `1`"
                    },
                    "items": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "description": "The meeting's id",
                            "x-lobbe-description-fa": "شناسهٔ جلسه"
                          },
                          "title": {
                            "anyOf": [
                              {
                                "type": "string"
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "description": "The meeting's title: the one its owner or the submitting token gave it, else its Lobbe's; null when it has none",
                            "x-lobbe-description-fa": "عنوان جلسه: همان‌که صاحب جلسه یا توکنِ فرستنده داده است، وگرنه عنوان لُب آن؛ اگر عنوانی نداشته باشد `null` است"
                          },
                          "kind": {
                            "type": "string",
                            "enum": [
                              "MEETING",
                              "LECTURE",
                              "INTERVIEW",
                              "VOICE_MEMO",
                              "CALL"
                            ],
                            "description": "The kind of recording, which picks the Lobbe's template: `MEETING`, `LECTURE`, `INTERVIEW`, `VOICE_MEMO` or `CALL`",
                            "x-lobbe-description-fa": "نوع ضبط، که قالب لُب را تعیین می‌کند: `MEETING`، `LECTURE`، `INTERVIEW`، `VOICE_MEMO` یا `CALL`"
                          },
                          "createdAt": {
                            "type": "string",
                            "description": "When Lobbe received the meeting (ISO 8601, UTC); `listReadyRecordings` is ordered by it",
                            "x-lobbe-description-fa": "زمانی که لُب جلسه را دریافت کرد (`ISO 8601`، به وقت UTC)؛ ترتیب `listReadyRecordings` بر اساس آن است"
                          },
                          "recordedAt": {
                            "type": "string",
                            "description": "When the meeting happened (ISO 8601, UTC): the `recordedAt` it was submitted with, else when Lobbe received it",
                            "x-lobbe-description-fa": "زمان برگزاری جلسه (`ISO 8601`، به وقت UTC): همان `recordedAt` که با جلسه فرستاده شد، وگرنه زمانی که لُب آن را دریافت کرد"
                          },
                          "durationSeconds": {
                            "anyOf": [
                              {
                                "type": "integer",
                                "minimum": -9007199254740991,
                                "maximum": 9007199254740991
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "description": "The audio's length in seconds, as Lobbe measured it; null if unknown",
                            "x-lobbe-description-fa": "طول صدا به ثانیه، همان‌طور که لُب اندازه گرفت؛ اگر معلوم نباشد `null` است"
                          },
                          "url": {
                            "type": "string",
                            "format": "uri",
                            "description": "The meeting's page in the web app",
                            "x-lobbe-description-fa": "صفحهٔ جلسه در برنامهٔ وب"
                          },
                          "bundleUrl": {
                            "type": "string",
                            "format": "uri",
                            "description": "GET it with a token holding `recordings:read` for the whole meeting (`getRecordingBundle`)",
                            "x-lobbe-description-fa": "با درخواست `GET` و توکنی که دسترسی `recordings:read` دارد، جلسهٔ کامل را بگیرید (`getRecordingBundle`)"
                          },
                          "series": {
                            "anyOf": [
                              {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string",
                                    "description": "The series' id, as `seriesId` takes it",
                                    "x-lobbe-description-fa": "شناسهٔ سری، همان‌که `seriesId` می‌گیرد"
                                  },
                                  "name": {
                                    "type": "string",
                                    "description": "The series' name",
                                    "x-lobbe-description-fa": "نام سری"
                                  }
                                },
                                "required": [
                                  "id",
                                  "name"
                                ]
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "description": "The series the meeting is filed in; null when it is in none, or while series are switched off",
                            "x-lobbe-description-fa": "سری‌ای که جلسه در آن است؛ اگر در هیچ سری‌ای نباشد یا سری‌ها خاموش باشند `null` است"
                          },
                          "displayTitle": {
                            "anyOf": [
                              {
                                "type": "string"
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "description": "The title as the app shows it: in a series titled by date, the series' name and the meeting's date in the Lobbe's language; otherwise the meeting's title, else its Lobbe's; null when there is none",
                            "x-lobbe-description-fa": "عنوان همان‌طور که برنامه نشان می‌دهد: در سری‌ای که عنوان جلسه‌هایش «نام سری + تاریخ» است، نام سری و تاریخ جلسه به زبان لُب؛ وگرنه عنوان جلسه و اگر نباشد عنوان لُب آن؛ اگر هیچ‌کدام نباشد `null` است"
                          },
                          "snippet": {
                            "anyOf": [
                              {
                                "type": "string",
                                "maxLength": 200
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "description": "Up to 200 characters around the first match, from the transcript, else from the Lobbe when only it matched; null when the words were found in the title alone",
                            "x-lobbe-description-fa": "حداکثر ۲۰۰ نویسه پیرامون نخستین جای پیداشده، از رونوشت، و اگر واژه‌ها فقط در لُب پیدا شده باشند از لُب؛ اگر واژه‌ها فقط در عنوان پیدا شده باشند `null` است"
                          }
                        },
                        "required": [
                          "id",
                          "title",
                          "kind",
                          "createdAt",
                          "recordedAt",
                          "durationSeconds",
                          "url",
                          "bundleUrl",
                          "series",
                          "displayTitle",
                          "snippet"
                        ]
                      },
                      "description": "The meetings on this page: `READY` ones only, each a `listReadyRecordings` item plus its `snippet`",
                      "x-lobbe-description-fa": "جلسه‌های این صفحه: فقط جلسه‌های `READY`، هر کدام همان ردیف `listReadyRecordings` به‌اضافهٔ `snippet`"
                    },
                    "nextCursor": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "Pass it back as `cursor` for the next, older page; null on the last page",
                      "x-lobbe-description-fa": "برای صفحهٔ بعد (قدیمی‌تر) آن را به‌عنوان `cursor` بفرستید؛ در صفحهٔ آخر `null` است"
                    }
                  },
                  "required": [
                    "schemaVersion",
                    "items",
                    "nextCursor"
                  ],
                  "description": "Finished meetings whose words match, newest meeting first (by `recordedAt`); searching is free",
                  "x-lobbe-description-fa": "جلسه‌های آماده‌ای که واژه‌ها در آن‌ها پیدا شد، از تازه‌ترین جلسه (بر اساس `recordedAt`)؛ جست‌وجو رایگان است"
                }
              }
            }
          },
          "default": {
            "description": "An error. `error.code` is the contract; `message` may change.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "object",
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "The error's code: stable, the part to branch on",
                          "x-lobbe-description-fa": "کد خطا: ثابت می‌ماند و برنامهٔ شما باید بر اساس همین تصمیم بگیرد"
                        },
                        "message": {
                          "type": "string",
                          "description": "A human-readable explanation; its wording may change",
                          "x-lobbe-description-fa": "توضیحی خواندنی برای انسان؛ متن آن ممکن است تغییر کند"
                        },
                        "details": {
                          "description": "Extra facts some codes carry, e.g. `requiredMinutes` with `INSUFFICIENT_MINUTES`; absent otherwise",
                          "x-lobbe-description-fa": "اطلاعات بیشتری که بعضی کدها همراه دارند، مثلاً `requiredMinutes` همراه `INSUFFICIENT_MINUTES`؛ در غیر این صورت نمی‌آید",
                          "type": "object",
                          "propertyNames": {
                            "type": "string"
                          },
                          "additionalProperties": {}
                        }
                      },
                      "required": [
                        "code",
                        "message"
                      ],
                      "description": "What went wrong",
                      "x-lobbe-description-fa": "چه چیزی درست پیش نرفت"
                    }
                  },
                  "required": [
                    "error"
                  ],
                  "description": "An error",
                  "x-lobbe-description-fa": "یک خطا"
                }
              }
            }
          }
        }
      }
    },
    "/recordings/{id}/ask/quote": {
      "get": {
        "operationId": "quoteRecordingAsk",
        "summary": "What asking this meeting a question will cost, in minutes",
        "x-lobbe-summary-fa": "هزینهٔ پرسیدن یک سؤال از این جلسه، به دقیقه",
        "x-lobbe-scopes": [
          "recordings:query"
        ],
        "x-lobbe-spends": false,
        "x-lobbe-rate-limit": {
          "class": "search",
          "requests": 120,
          "windowSeconds": 600
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The meeting's id",
            "x-lobbe-description-fa": "شناسهٔ جلسه",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "What asking this meeting a question will cost, in minutes",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "schemaVersion": {
                      "type": "number",
                      "const": 1,
                      "description": "Always `1` within API v1",
                      "x-lobbe-description-fa": "در نسخهٔ ۱ API همیشه `1`"
                    },
                    "minutes": {
                      "type": "integer",
                      "minimum": 0,
                      "maximum": 9007199254740991,
                      "description": "The price in minutes: what `askRecording` charges, worked out the same way from the meeting's transcript, so the two agree while the transcript is unchanged",
                      "x-lobbe-description-fa": "قیمت به دقیقه: همان هزینه‌ای که `askRecording` می‌گیرد و به همان شیوه از رونوشت جلسه حساب می‌شود، پس تا وقتی رونوشت تغییر نکند این دو یکی‌اند"
                    }
                  },
                  "required": [
                    "schemaVersion",
                    "minutes"
                  ],
                  "description": "What one question to this meeting costs; reading the quote is free",
                  "x-lobbe-description-fa": "هزینهٔ یک پرسش از این جلسه؛ خواندن این برآورد رایگان است"
                }
              }
            }
          },
          "default": {
            "description": "An error. `error.code` is the contract; `message` may change.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "object",
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "The error's code: stable, the part to branch on",
                          "x-lobbe-description-fa": "کد خطا: ثابت می‌ماند و برنامهٔ شما باید بر اساس همین تصمیم بگیرد"
                        },
                        "message": {
                          "type": "string",
                          "description": "A human-readable explanation; its wording may change",
                          "x-lobbe-description-fa": "توضیحی خواندنی برای انسان؛ متن آن ممکن است تغییر کند"
                        },
                        "details": {
                          "description": "Extra facts some codes carry, e.g. `requiredMinutes` with `INSUFFICIENT_MINUTES`; absent otherwise",
                          "x-lobbe-description-fa": "اطلاعات بیشتری که بعضی کدها همراه دارند، مثلاً `requiredMinutes` همراه `INSUFFICIENT_MINUTES`؛ در غیر این صورت نمی‌آید",
                          "type": "object",
                          "propertyNames": {
                            "type": "string"
                          },
                          "additionalProperties": {}
                        }
                      },
                      "required": [
                        "code",
                        "message"
                      ],
                      "description": "What went wrong",
                      "x-lobbe-description-fa": "چه چیزی درست پیش نرفت"
                    }
                  },
                  "required": [
                    "error"
                  ],
                  "description": "An error",
                  "x-lobbe-description-fa": "یک خطا"
                }
              }
            }
          }
        }
      }
    },
    "/recordings/{id}/ask": {
      "post": {
        "operationId": "askRecording",
        "summary": "Ask one meeting a question, answered from its transcript and Lobbe; each answer is charged",
        "x-lobbe-summary-fa": "پرسیدن یک سؤال از یک جلسه، با پاسخ از رونوشت و لُب آن؛ هر پاسخ هزینه دارد",
        "x-lobbe-scopes": [
          "recordings:query"
        ],
        "x-lobbe-spends": true,
        "x-lobbe-rate-limit": {
          "class": "ask",
          "requests": 30,
          "windowSeconds": 600
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The meeting's id",
            "x-lobbe-description-fa": "شناسهٔ جلسه",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Recommended. Make one key (8–64 characters, a random UUID say) once per new meeting or question, and send that same key unchanged on every retry of that request; never reuse it for a different request. A replay returns the original outcome and never charges twice. Keys are the owner's for good: they never expire.",
            "x-lobbe-description-fa": "پیشنهاد می‌شود. برای هر جلسه یا سؤال تازه یک بار کلیدی بسازید (۸ تا ۶۴ نویسه، مثلاً یک UUID تصادفی) و همان کلید را بی‌تغییر در هر تلاش دوبارهٔ همان درخواست بفرستید؛ هرگز آن را برای درخواست دیگری به کار نبرید. تکرار یک درخواست همان نتیجهٔ اول را برمی‌گرداند و هرگز دو بار هزینه نمی‌گیرد. کلید برای همیشه از آنِ صاحب حساب می‌ماند و هرگز منقضی نمی‌شود.",
            "schema": {
              "type": "string",
              "minLength": 8,
              "maxLength": 64
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "question": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 500,
                    "description": "The question, trimmed, 1–500 characters",
                    "x-lobbe-description-fa": "سؤال، پس از پیراستن دو سر آن، ۱ تا ۵۰۰ نویسه"
                  },
                  "maxMinutes": {
                    "description": "The most you agree to pay, in minutes (at least 1): when the price is higher, the question is refused with `409 PRICE_ABOVE_MAX` (its `details` carry `minutes` and `maxMinutes`) and nothing is charged; absent = no ceiling",
                    "x-lobbe-description-fa": "بیشترین هزینه‌ای که می‌پذیرید، به دقیقه (دست‌کم ۱): اگر قیمت بیشتر باشد، سؤال با `409 PRICE_ABOVE_MAX` رد می‌شود (`details` آن `minutes` و `maxMinutes` را دارد) و هزینه‌ای گرفته نمی‌شود؛ اگر نباشد، سقفی در کار نیست",
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 9007199254740991
                  },
                  "idempotencyKey": {
                    "description": "The idempotency key in the body, instead of the `Idempotency-Key` header (8–64 characters); the header wins when both are sent",
                    "x-lobbe-description-fa": "کلید تکرار درخواست در بدنه، به‌جای هدر `Idempotency-Key` (۸ تا ۶۴ نویسه)؛ اگر هر دو فرستاده شوند هدر ملاک است",
                    "type": "string",
                    "minLength": 8,
                    "maxLength": 64
                  }
                },
                "required": [
                  "question"
                ],
                "additionalProperties": false,
                "description": "The question, with a price ceiling if you want one",
                "x-lobbe-description-fa": "سؤال، و در صورت نیاز سقفی برای قیمت آن"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Ask one meeting a question, answered from its transcript and Lobbe; each answer is charged",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "schemaVersion": {
                      "type": "number",
                      "const": 1,
                      "description": "Always `1` within API v1",
                      "x-lobbe-description-fa": "در نسخهٔ ۱ API همیشه `1`"
                    },
                    "answer": {
                      "type": "string",
                      "description": "The answer. `[n]` marks the claim that `citations[n - 1]` supports, numbered 1, 2, … in reading order",
                      "x-lobbe-description-fa": "پاسخ. `[n]` ادعایی را نشان می‌دهد که `citations[n - 1]` پشتیبان آن است، و این نشانه‌ها به ترتیب خواندن ۱، ۲، … شماره می‌خورند"
                    },
                    "citations": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "startMs": {
                            "type": "number",
                            "minimum": 0,
                            "description": "When the cited turn starts, in milliseconds from the start of the meeting's audio",
                            "x-lobbe-description-fa": "زمان شروع نوبتِ ارجاع‌شده، به میلی‌ثانیه از ابتدای صدای جلسه"
                          },
                          "speaker": {
                            "anyOf": [
                              {
                                "type": "string"
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "description": "Who spoke it: the turn's speaker label as transcribed (e.g. `speaker_0`), never a name given to the voice; null when the turn has none",
                            "x-lobbe-description-fa": "گویندهٔ آن: برچسب گویندهٔ نوبت همان‌طور که در رونوشت آمد (مثلاً `speaker_0`)، هرگز نامی که به صدا داده شده؛ اگر نوبت گوینده‌ای نداشته باشد `null` است"
                          }
                        },
                        "required": [
                          "startMs",
                          "speaker"
                        ]
                      },
                      "description": "Where the meeting says it: at most 3 turns, in the order the answer first cites them",
                      "x-lobbe-description-fa": "جایی از جلسه که این را می‌گوید: حداکثر ۳ نوبت، به ترتیبی که پاسخ نخستین بار به آن‌ها ارجاع می‌دهد"
                    },
                    "minutes": {
                      "type": "integer",
                      "minimum": 0,
                      "maximum": 9007199254740991,
                      "description": "What this answer charged, in minutes; a refusal is charged too",
                      "x-lobbe-description-fa": "هزینه‌ای که این پاسخ گرفت، به دقیقه؛ پاسخ ردشده هم هزینه دارد"
                    },
                    "refused": {
                      "type": "boolean",
                      "description": "`true` when Lobbe declines to answer from what was said: `answer` says why, and it is still charged",
                      "x-lobbe-description-fa": "اگر لُب از روی آنچه گفته شده پاسخی ندهد `true` است: `answer` دلیلش را می‌گوید و هزینه همچنان گرفته می‌شود"
                    }
                  },
                  "required": [
                    "schemaVersion",
                    "answer",
                    "citations",
                    "minutes",
                    "refused"
                  ],
                  "description": "The answer, already charged; a replay with the same idempotency key returns it again and never charges twice",
                  "x-lobbe-description-fa": "پاسخ، که هزینه‌اش گرفته شده است؛ تکرار درخواست با همان کلید همین پاسخ را برمی‌گرداند و هرگز دو بار هزینه نمی‌گیرد"
                }
              }
            }
          },
          "default": {
            "description": "An error. `error.code` is the contract; `message` may change.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "object",
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "The error's code: stable, the part to branch on",
                          "x-lobbe-description-fa": "کد خطا: ثابت می‌ماند و برنامهٔ شما باید بر اساس همین تصمیم بگیرد"
                        },
                        "message": {
                          "type": "string",
                          "description": "A human-readable explanation; its wording may change",
                          "x-lobbe-description-fa": "توضیحی خواندنی برای انسان؛ متن آن ممکن است تغییر کند"
                        },
                        "details": {
                          "description": "Extra facts some codes carry, e.g. `requiredMinutes` with `INSUFFICIENT_MINUTES`; absent otherwise",
                          "x-lobbe-description-fa": "اطلاعات بیشتری که بعضی کدها همراه دارند، مثلاً `requiredMinutes` همراه `INSUFFICIENT_MINUTES`؛ در غیر این صورت نمی‌آید",
                          "type": "object",
                          "propertyNames": {
                            "type": "string"
                          },
                          "additionalProperties": {}
                        }
                      },
                      "required": [
                        "code",
                        "message"
                      ],
                      "description": "What went wrong",
                      "x-lobbe-description-fa": "چه چیزی درست پیش نرفت"
                    }
                  },
                  "required": [
                    "error"
                  ],
                  "description": "An error",
                  "x-lobbe-description-fa": "یک خطا"
                }
              }
            }
          }
        }
      }
    },
    "/recordings/{id}/bundle": {
      "get": {
        "operationId": "getRecordingBundle",
        "summary": "One finished meeting: its transcript, its Lobbe and its stats; ?format=markdown returns one Markdown document",
        "x-lobbe-summary-fa": "یک جلسهٔ آماده: رونوشت، لُب و آمار آن؛ با `format=markdown` یک سند Markdown برمی‌گرداند",
        "x-lobbe-scopes": [
          "recordings:read"
        ],
        "x-lobbe-spends": false,
        "x-lobbe-rate-limit": {
          "class": "read",
          "requests": 600,
          "windowSeconds": 600
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The meeting's id",
            "x-lobbe-description-fa": "شناسهٔ جلسه",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "`json` (the default) or `markdown`, which answers one `text/markdown` document of the whole meeting; any other value is a `400`",
            "x-lobbe-description-fa": "`json` (پیش‌فرض) یا `markdown` که کل جلسه را در یک سند `text/markdown` برمی‌گرداند؛ هر مقدار دیگری پاسخ `400` می‌گیرد",
            "schema": {
              "default": "json",
              "type": "string",
              "enum": [
                "json",
                "markdown"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "One finished meeting: its transcript, its Lobbe and its stats; ?format=markdown returns one Markdown document",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "schemaVersion": {
                      "type": "number",
                      "const": 1,
                      "description": "Always `1` within API v1",
                      "x-lobbe-description-fa": "در نسخهٔ ۱ API همیشه `1`"
                    },
                    "recording": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "The meeting's id",
                          "x-lobbe-description-fa": "شناسهٔ جلسه"
                        },
                        "title": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "The meeting's title: the one its owner or the submitting token gave it, else its Lobbe's; null when it has none",
                          "x-lobbe-description-fa": "عنوان جلسه: همان‌که صاحب جلسه یا توکنِ فرستنده داده است، وگرنه عنوان لُب آن؛ اگر عنوانی نداشته باشد `null` است"
                        },
                        "kind": {
                          "type": "string",
                          "enum": [
                            "MEETING",
                            "LECTURE",
                            "INTERVIEW",
                            "VOICE_MEMO",
                            "CALL"
                          ],
                          "description": "The kind of recording, which picks the Lobbe's template: `MEETING`, `LECTURE`, `INTERVIEW`, `VOICE_MEMO` or `CALL`",
                          "x-lobbe-description-fa": "نوع ضبط، که قالب لُب را تعیین می‌کند: `MEETING`، `LECTURE`، `INTERVIEW`، `VOICE_MEMO` یا `CALL`"
                        },
                        "source": {
                          "type": "string",
                          "enum": [
                            "IN_APP",
                            "UPLOAD"
                          ],
                          "description": "How it reached Lobbe: `IN_APP` (recorded in the app) or `UPLOAD` (a file, a token's submission included)",
                          "x-lobbe-description-fa": "از چه راهی به لُب رسید: `IN_APP` (در برنامه ضبط شد) یا `UPLOAD` (یک فایل، از جمله ارسال با توکن)"
                        },
                        "createdAt": {
                          "type": "string",
                          "description": "When Lobbe received the meeting (ISO 8601, UTC)",
                          "x-lobbe-description-fa": "زمانی که لُب جلسه را دریافت کرد (`ISO 8601`، به وقت UTC)"
                        },
                        "recordedAt": {
                          "type": "string",
                          "description": "When the meeting happened (ISO 8601, UTC): the `recordedAt` it was submitted with, else when Lobbe received it",
                          "x-lobbe-description-fa": "زمان برگزاری جلسه (`ISO 8601`، به وقت UTC): همان `recordedAt` که با جلسه فرستاده شد، وگرنه زمانی که لُب آن را دریافت کرد"
                        },
                        "durationSeconds": {
                          "anyOf": [
                            {
                              "type": "integer",
                              "minimum": -9007199254740991,
                              "maximum": 9007199254740991
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "The audio's length in seconds, as Lobbe measured it; null if unknown",
                          "x-lobbe-description-fa": "طول صدا به ثانیه، همان‌طور که لُب اندازه گرفت؛ اگر معلوم نباشد `null` است"
                        },
                        "url": {
                          "type": "string",
                          "format": "uri",
                          "description": "The meeting's page in the web app",
                          "x-lobbe-description-fa": "صفحهٔ جلسه در برنامهٔ وب"
                        },
                        "series": {
                          "anyOf": [
                            {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "type": "string",
                                  "description": "The series' id, as `seriesId` takes it",
                                  "x-lobbe-description-fa": "شناسهٔ سری، همان‌که `seriesId` می‌گیرد"
                                },
                                "name": {
                                  "type": "string",
                                  "description": "The series' name",
                                  "x-lobbe-description-fa": "نام سری"
                                }
                              },
                              "required": [
                                "id",
                                "name"
                              ]
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "The series the meeting is filed in; null when it is in none, or while series are switched off",
                          "x-lobbe-description-fa": "سری‌ای که جلسه در آن است؛ اگر در هیچ سری‌ای نباشد یا سری‌ها خاموش باشند `null` است"
                        },
                        "access": {
                          "type": "string",
                          "enum": [
                            "owner",
                            "member"
                          ],
                          "description": "`owner` when the meeting is yours; `member` when it belongs to a series you joined",
                          "x-lobbe-description-fa": "اگر جلسه مال خودتان باشد `owner`؛ اگر از سری‌ای باشد که عضوش هستید `member`"
                        },
                        "displayTitle": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "The title as the app shows it: in a series titled by date, the series' name and the meeting's date in the Lobbe's language; otherwise the meeting's title, else its Lobbe's; null when there is none",
                          "x-lobbe-description-fa": "عنوان همان‌طور که برنامه نشان می‌دهد: در سری‌ای که عنوان جلسه‌هایش «نام سری + تاریخ» است، نام سری و تاریخ جلسه به زبان لُب؛ وگرنه عنوان جلسه و اگر نباشد عنوان لُب آن؛ اگر هیچ‌کدام نباشد `null` است"
                        },
                        "subtitle": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "In a series titled by date, the meeting's own title, else its Lobbe's; null otherwise",
                          "x-lobbe-description-fa": "در سری‌ای که عنوان جلسه‌هایش «نام سری + تاریخ» است، عنوان خود جلسه و اگر نباشد عنوان لُب آن؛ در غیر این صورت `null` است"
                        }
                      },
                      "required": [
                        "id",
                        "title",
                        "kind",
                        "source",
                        "createdAt",
                        "recordedAt",
                        "durationSeconds",
                        "url",
                        "series",
                        "access",
                        "displayTitle",
                        "subtitle"
                      ],
                      "description": "The meeting itself",
                      "x-lobbe-description-fa": "خود جلسه"
                    },
                    "transcript": {
                      "type": "object",
                      "properties": {
                        "language": {
                          "type": "string",
                          "description": "The language detected in the audio, as an ISO 639-1 code (`fa`, `en`, …)",
                          "x-lobbe-description-fa": "زبانی که در صدا تشخیص داده شد، با کد `ISO 639-1` (`fa`، `en`، …)"
                        },
                        "revision": {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 9007199254740991,
                          "description": "Goes up by one with each owner edit and each time the meeting is checked again for missed voices; `0` = neither has happened",
                          "x-lobbe-description-fa": "با هر ویرایش صاحب جلسه و هر «بررسی دوبارهٔ جلسه» برای صداهای جاافتاده یکی بالا می‌رود؛ `0` یعنی هیچ‌کدام رخ نداده است"
                        },
                        "edited": {
                          "type": "boolean",
                          "description": "Whether the transcript has changed since it was first made, by an owner edit or by checking the meeting again (`revision` above `0`)",
                          "x-lobbe-description-fa": "این‌که رونوشت از نخستین ساخته‌شدنش تا به حال تغییر کرده است یا نه، با ویرایش صاحب جلسه یا با «بررسی دوبارهٔ جلسه» (`revision` بیشتر از `0`)"
                        },
                        "speakers": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "label": {
                                "type": "string",
                                "description": "The person's label (e.g. `speaker_0`), as `segments[].speaker` and `stats` carry it",
                                "x-lobbe-description-fa": "برچسب این فرد (مثلاً `speaker_0`)، همان‌که در `segments[].speaker` و `stats` می‌آید"
                              },
                              "name": {
                                "anyOf": [
                                  {
                                    "type": "string"
                                  },
                                  {
                                    "type": "null"
                                  }
                                ],
                                "description": "The name given to this voice; null when nobody named it",
                                "x-lobbe-description-fa": "نامی که به این صدا داده شد؛ اگر کسی نام‌گذاری‌اش نکرده باشد `null` است"
                              }
                            },
                            "required": [
                              "label",
                              "name"
                            ]
                          },
                          "description": "One row per person who spoke; voices given the same name are one person",
                          "x-lobbe-description-fa": "برای هر کسی که صحبت کرد یک سطر؛ صداهایی که یک نام گرفته‌اند یک نفر حساب می‌شوند"
                        },
                        "segments": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "speaker": {
                                "type": "string",
                                "description": "Who spoke: a `speakers[].label`",
                                "x-lobbe-description-fa": "چه کسی صحبت کرد: یکی از `speakers[].label`"
                              },
                              "startMs": {
                                "type": "integer",
                                "minimum": -9007199254740991,
                                "maximum": 9007199254740991,
                                "description": "When the turn starts, in milliseconds from the start of the audio",
                                "x-lobbe-description-fa": "زمان شروع نوبت، به میلی‌ثانیه از ابتدای صدا"
                              },
                              "endMs": {
                                "type": "integer",
                                "minimum": -9007199254740991,
                                "maximum": 9007199254740991,
                                "description": "When the turn ends, in milliseconds from the start of the audio",
                                "x-lobbe-description-fa": "زمان پایان نوبت، به میلی‌ثانیه از ابتدای صدا"
                              },
                              "text": {
                                "type": "string",
                                "description": "What was said, with the owner's corrections",
                                "x-lobbe-description-fa": "آنچه گفته شد، با اصلاح‌های صاحب جلسه"
                              },
                              "edited": {
                                "type": "boolean",
                                "description": "Whether the owner corrected this turn",
                                "x-lobbe-description-fa": "این‌که صاحب جلسه این نوبت را اصلاح کرده است یا نه"
                              },
                              "lowConfidence": {
                                "type": "boolean",
                                "description": "Whether transcription may have misheard this turn; always `false` on a turn the owner corrected",
                                "x-lobbe-description-fa": "این‌که شاید این نوبت درست شنیده نشده باشد؛ روی نوبتی که صاحب جلسه اصلاح کرده همیشه `false` است"
                              }
                            },
                            "required": [
                              "speaker",
                              "startMs",
                              "endMs",
                              "text",
                              "edited",
                              "lowConfidence"
                            ]
                          },
                          "description": "The turns, in order",
                          "x-lobbe-description-fa": "نوبت‌ها، به ترتیب"
                        },
                        "text": {
                          "type": "string",
                          "description": "The whole transcript as plain text, with no speakers or times",
                          "x-lobbe-description-fa": "کل رونوشت به‌صورت متن ساده، بدون گوینده و زمان"
                        },
                        "markdown": {
                          "type": "string",
                          "description": "The transcript as Markdown, one `**name** [mm:ss]: text` line per turn (`[h:mm:ss]` from one hour on) and no heading; a voice nobody named shows its label",
                          "x-lobbe-description-fa": "رونوشت به‌صورت Markdown، برای هر نوبت یک خط `**name** [mm:ss]: text` (از یک ساعت به بعد `[h:mm:ss]`) و بدون عنوان؛ صدایی که کسی نام‌گذاری‌اش نکرده با برچسبش می‌آید"
                        }
                      },
                      "required": [
                        "language",
                        "revision",
                        "edited",
                        "speakers",
                        "segments",
                        "text",
                        "markdown"
                      ],
                      "description": "What was said, turn by turn",
                      "x-lobbe-description-fa": "آنچه گفته شد، نوبت به نوبت"
                    },
                    "lobbe": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "The Lobbe's id",
                          "x-lobbe-description-fa": "شناسهٔ لُب"
                        },
                        "type": {
                          "type": "string",
                          "enum": [
                            "MEETING_MOM",
                            "LECTURE_NOTES",
                            "INTERVIEW_QA",
                            "VOICE_MEMO",
                            "CALL_NOTES"
                          ],
                          "description": "Its template, set by the meeting's `kind`: `MEETING_MOM`, `LECTURE_NOTES`, `INTERVIEW_QA`, `VOICE_MEMO` or `CALL_NOTES`",
                          "x-lobbe-description-fa": "قالب آن که `kind` جلسه تعیینش می‌کند: `MEETING_MOM`، `LECTURE_NOTES`، `INTERVIEW_QA`، `VOICE_MEMO` یا `CALL_NOTES`"
                        },
                        "language": {
                          "type": "string",
                          "enum": [
                            "en",
                            "fa"
                          ],
                          "description": "The language the Lobbe is written in: `fa` or `en`",
                          "x-lobbe-description-fa": "زبانی که لُب به آن نوشته شده است: `fa` یا `en`"
                        },
                        "promptVersion": {
                          "type": "string",
                          "description": "Which prompt made it: an opaque tag that starts with the prompt's version (e.g. `v8`), for comparing Lobbes, not for parsing",
                          "x-lobbe-description-fa": "کدام پرامپت آن را ساخت: برچسبی که با نسخهٔ پرامپت شروع می‌شود (مثلاً `v8`)، برای مقایسهٔ لُب‌ها، نه برای تجزیه"
                        },
                        "transcriptRevision": {
                          "anyOf": [
                            {
                              "type": "integer",
                              "minimum": -9007199254740991,
                              "maximum": 9007199254740991
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "The transcript `revision` the Lobbe was made from, so below `transcript.revision` means the transcript was edited since; null on Lobbes made before transcript editing (read it as `0`)",
                          "x-lobbe-description-fa": "`revision` رونوشتی که لُب از آن ساخته شد، پس اگر از `transcript.revision` کمتر باشد رونوشت پس از آن ویرایش شده است؛ در لُب‌های پیش از امکان ویرایش رونوشت `null` است (آن را `0` بخوانید)"
                        },
                        "content": {
                          "type": "object",
                          "properties": {
                            "version": {
                              "type": "number",
                              "const": 2,
                              "description": "The content format's version: always `2`",
                              "x-lobbe-description-fa": "نسخهٔ قالب محتوا: همیشه `2`"
                            },
                            "title": {
                              "type": "string",
                              "minLength": 1,
                              "maxLength": 200,
                              "description": "The Lobbe's own title, 1–200 characters",
                              "x-lobbe-description-fa": "عنوان خود لُب، ۱ تا ۲۰۰ نویسه"
                            },
                            "sections": {
                              "minItems": 1,
                              "type": "array",
                              "items": {
                                "oneOf": [
                                  {
                                    "type": "object",
                                    "properties": {
                                      "kind": {
                                        "type": "string",
                                        "const": "summary",
                                        "description": "The section's kind, which decides its other fields: `summary`, `decision_list`, `action_item_list`, `key_point_list`, `qa_list`, `topic_notes`, `follow_up_list` or `free_text`",
                                        "x-lobbe-description-fa": "نوع بخش، که فیلدهای دیگرش را تعیین می‌کند: `summary`، `decision_list`، `action_item_list`، `key_point_list`، `qa_list`، `topic_notes`، `follow_up_list` یا `free_text`"
                                      },
                                      "text": {
                                        "type": "string",
                                        "description": "The section's prose (`summary` and `free_text`)",
                                        "x-lobbe-description-fa": "متن بخش (`summary` و `free_text`)"
                                      }
                                    },
                                    "required": [
                                      "kind",
                                      "text"
                                    ]
                                  },
                                  {
                                    "type": "object",
                                    "properties": {
                                      "kind": {
                                        "type": "string",
                                        "const": "decision_list",
                                        "description": "The section's kind, which decides its other fields: `summary`, `decision_list`, `action_item_list`, `key_point_list`, `qa_list`, `topic_notes`, `follow_up_list` or `free_text`",
                                        "x-lobbe-description-fa": "نوع بخش، که فیلدهای دیگرش را تعیین می‌کند: `summary`، `decision_list`، `action_item_list`، `key_point_list`، `qa_list`، `topic_notes`، `follow_up_list` یا `free_text`"
                                      },
                                      "items": {
                                        "type": "array",
                                        "items": {
                                          "type": "object",
                                          "properties": {
                                            "text": {
                                              "type": "string",
                                              "description": "The entry itself: a decision, an action, a key point or a follow-up",
                                              "x-lobbe-description-fa": "خود مدخل: یک تصمیم، یک اقدام، یک نکتهٔ کلیدی یا یک پیگیری"
                                            },
                                            "sourceMs": {
                                              "description": "Where the meeting supports the entry: the `startMs` of that transcript turn, in milliseconds; null when no single turn does, absent on Lobbes made before citations, and on Lobbes made before 6 September 2026 it may be the second shown to the model rather than the turn's exact start",
                                              "x-lobbe-description-fa": "جایی از جلسه که این مدخل را پشتیبانی می‌کند: `startMs` همان نوبت رونوشت، به میلی‌ثانیه؛ اگر هیچ نوبت واحدی پشتیبانش نباشد `null` است، در لُب‌های ساخته‌شده پیش از ارجاع‌ها نمی‌آید، و در لُب‌های پیش از ۶ سپتامبر ۲۰۲۶ ممکن است به‌جای شروع دقیق نوبت، ثانیه‌ای باشد که به مدل نشان داده شد",
                                              "anyOf": [
                                                {
                                                  "type": "number"
                                                },
                                                {
                                                  "type": "null"
                                                }
                                              ]
                                            }
                                          },
                                          "required": [
                                            "text"
                                          ]
                                        },
                                        "description": "The section's entries (`decision_list`, `action_item_list`, `key_point_list`, `qa_list` and `follow_up_list`)",
                                        "x-lobbe-description-fa": "مدخل‌های بخش (`decision_list`، `action_item_list`، `key_point_list`، `qa_list` و `follow_up_list`)"
                                      }
                                    },
                                    "required": [
                                      "kind",
                                      "items"
                                    ]
                                  },
                                  {
                                    "type": "object",
                                    "properties": {
                                      "kind": {
                                        "type": "string",
                                        "const": "action_item_list",
                                        "description": "The section's kind, which decides its other fields: `summary`, `decision_list`, `action_item_list`, `key_point_list`, `qa_list`, `topic_notes`, `follow_up_list` or `free_text`",
                                        "x-lobbe-description-fa": "نوع بخش، که فیلدهای دیگرش را تعیین می‌کند: `summary`، `decision_list`، `action_item_list`، `key_point_list`، `qa_list`، `topic_notes`، `follow_up_list` یا `free_text`"
                                      },
                                      "items": {
                                        "type": "array",
                                        "items": {
                                          "type": "object",
                                          "properties": {
                                            "text": {
                                              "type": "string",
                                              "description": "The entry itself: a decision, an action, a key point or a follow-up",
                                              "x-lobbe-description-fa": "خود مدخل: یک تصمیم، یک اقدام، یک نکتهٔ کلیدی یا یک پیگیری"
                                            },
                                            "owner": {
                                              "anyOf": [
                                                {
                                                  "type": "string"
                                                },
                                                {
                                                  "type": "null"
                                                }
                                              ],
                                              "description": "Who takes the action, by a spoken name or a speaker label; null when the meeting does not make it clear",
                                              "x-lobbe-description-fa": "چه کسی اقدام را انجام می‌دهد، با نامی که در جلسه گفته شد یا برچسب گوینده؛ اگر جلسه روشن نکرده باشد `null` است"
                                            },
                                            "due": {
                                              "anyOf": [
                                                {
                                                  "type": "string"
                                                },
                                                {
                                                  "type": "null"
                                                }
                                              ],
                                              "description": "When the action is due, as it was said (never an invented date); null when no time was said",
                                              "x-lobbe-description-fa": "موعد اقدام، همان‌طور که گفته شد (هرگز تاریخی ساختگی)؛ اگر زمانی گفته نشده باشد `null` است"
                                            },
                                            "sourceMs": {
                                              "description": "Where the meeting supports the entry: the `startMs` of that transcript turn, in milliseconds; null when no single turn does, absent on Lobbes made before citations, and on Lobbes made before 6 September 2026 it may be the second shown to the model rather than the turn's exact start",
                                              "x-lobbe-description-fa": "جایی از جلسه که این مدخل را پشتیبانی می‌کند: `startMs` همان نوبت رونوشت، به میلی‌ثانیه؛ اگر هیچ نوبت واحدی پشتیبانش نباشد `null` است، در لُب‌های ساخته‌شده پیش از ارجاع‌ها نمی‌آید، و در لُب‌های پیش از ۶ سپتامبر ۲۰۲۶ ممکن است به‌جای شروع دقیق نوبت، ثانیه‌ای باشد که به مدل نشان داده شد",
                                              "anyOf": [
                                                {
                                                  "type": "number"
                                                },
                                                {
                                                  "type": "null"
                                                }
                                              ]
                                            }
                                          },
                                          "required": [
                                            "text",
                                            "owner",
                                            "due"
                                          ]
                                        },
                                        "description": "The section's entries (`decision_list`, `action_item_list`, `key_point_list`, `qa_list` and `follow_up_list`)",
                                        "x-lobbe-description-fa": "مدخل‌های بخش (`decision_list`، `action_item_list`، `key_point_list`، `qa_list` و `follow_up_list`)"
                                      }
                                    },
                                    "required": [
                                      "kind",
                                      "items"
                                    ]
                                  },
                                  {
                                    "type": "object",
                                    "properties": {
                                      "kind": {
                                        "type": "string",
                                        "const": "key_point_list",
                                        "description": "The section's kind, which decides its other fields: `summary`, `decision_list`, `action_item_list`, `key_point_list`, `qa_list`, `topic_notes`, `follow_up_list` or `free_text`",
                                        "x-lobbe-description-fa": "نوع بخش، که فیلدهای دیگرش را تعیین می‌کند: `summary`، `decision_list`، `action_item_list`، `key_point_list`، `qa_list`، `topic_notes`، `follow_up_list` یا `free_text`"
                                      },
                                      "items": {
                                        "type": "array",
                                        "items": {
                                          "type": "object",
                                          "properties": {
                                            "text": {
                                              "type": "string",
                                              "description": "The entry itself: a decision, an action, a key point or a follow-up",
                                              "x-lobbe-description-fa": "خود مدخل: یک تصمیم، یک اقدام، یک نکتهٔ کلیدی یا یک پیگیری"
                                            }
                                          },
                                          "required": [
                                            "text"
                                          ]
                                        },
                                        "description": "The section's entries (`decision_list`, `action_item_list`, `key_point_list`, `qa_list` and `follow_up_list`)",
                                        "x-lobbe-description-fa": "مدخل‌های بخش (`decision_list`، `action_item_list`، `key_point_list`، `qa_list` و `follow_up_list`)"
                                      }
                                    },
                                    "required": [
                                      "kind",
                                      "items"
                                    ]
                                  },
                                  {
                                    "type": "object",
                                    "properties": {
                                      "kind": {
                                        "type": "string",
                                        "const": "qa_list",
                                        "description": "The section's kind, which decides its other fields: `summary`, `decision_list`, `action_item_list`, `key_point_list`, `qa_list`, `topic_notes`, `follow_up_list` or `free_text`",
                                        "x-lobbe-description-fa": "نوع بخش، که فیلدهای دیگرش را تعیین می‌کند: `summary`، `decision_list`، `action_item_list`، `key_point_list`، `qa_list`، `topic_notes`، `follow_up_list` یا `free_text`"
                                      },
                                      "items": {
                                        "type": "array",
                                        "items": {
                                          "type": "object",
                                          "properties": {
                                            "question": {
                                              "type": "string",
                                              "description": "A question asked in the meeting (`qa_list`)",
                                              "x-lobbe-description-fa": "پرسشی که در جلسه مطرح شد (`qa_list`)"
                                            },
                                            "answer": {
                                              "type": "string",
                                              "description": "The answer the meeting gave it",
                                              "x-lobbe-description-fa": "پاسخی که در جلسه به آن داده شد"
                                            }
                                          },
                                          "required": [
                                            "question",
                                            "answer"
                                          ]
                                        },
                                        "description": "The section's entries (`decision_list`, `action_item_list`, `key_point_list`, `qa_list` and `follow_up_list`)",
                                        "x-lobbe-description-fa": "مدخل‌های بخش (`decision_list`، `action_item_list`، `key_point_list`، `qa_list` و `follow_up_list`)"
                                      }
                                    },
                                    "required": [
                                      "kind",
                                      "items"
                                    ]
                                  },
                                  {
                                    "type": "object",
                                    "properties": {
                                      "kind": {
                                        "type": "string",
                                        "const": "topic_notes",
                                        "description": "The section's kind, which decides its other fields: `summary`, `decision_list`, `action_item_list`, `key_point_list`, `qa_list`, `topic_notes`, `follow_up_list` or `free_text`",
                                        "x-lobbe-description-fa": "نوع بخش، که فیلدهای دیگرش را تعیین می‌کند: `summary`، `decision_list`، `action_item_list`، `key_point_list`، `qa_list`، `topic_notes`، `follow_up_list` یا `free_text`"
                                      },
                                      "topics": {
                                        "type": "array",
                                        "items": {
                                          "type": "object",
                                          "properties": {
                                            "topic": {
                                              "type": "string",
                                              "description": "The topic",
                                              "x-lobbe-description-fa": "موضوع"
                                            },
                                            "notes": {
                                              "type": "string",
                                              "description": "What was said about it",
                                              "x-lobbe-description-fa": "آنچه دربارهٔ آن گفته شد"
                                            }
                                          },
                                          "required": [
                                            "topic",
                                            "notes"
                                          ]
                                        },
                                        "description": "A `topic_notes` section's topics",
                                        "x-lobbe-description-fa": "موضوع‌های بخش `topic_notes`"
                                      }
                                    },
                                    "required": [
                                      "kind",
                                      "topics"
                                    ]
                                  },
                                  {
                                    "type": "object",
                                    "properties": {
                                      "kind": {
                                        "type": "string",
                                        "const": "follow_up_list",
                                        "description": "The section's kind, which decides its other fields: `summary`, `decision_list`, `action_item_list`, `key_point_list`, `qa_list`, `topic_notes`, `follow_up_list` or `free_text`",
                                        "x-lobbe-description-fa": "نوع بخش، که فیلدهای دیگرش را تعیین می‌کند: `summary`، `decision_list`، `action_item_list`، `key_point_list`، `qa_list`، `topic_notes`، `follow_up_list` یا `free_text`"
                                      },
                                      "items": {
                                        "type": "array",
                                        "items": {
                                          "type": "object",
                                          "properties": {
                                            "text": {
                                              "type": "string",
                                              "description": "The entry itself: a decision, an action, a key point or a follow-up",
                                              "x-lobbe-description-fa": "خود مدخل: یک تصمیم، یک اقدام، یک نکتهٔ کلیدی یا یک پیگیری"
                                            },
                                            "sourceMs": {
                                              "description": "Where the meeting supports the entry: the `startMs` of that transcript turn, in milliseconds; null when no single turn does, absent on Lobbes made before citations, and on Lobbes made before 6 September 2026 it may be the second shown to the model rather than the turn's exact start",
                                              "x-lobbe-description-fa": "جایی از جلسه که این مدخل را پشتیبانی می‌کند: `startMs` همان نوبت رونوشت، به میلی‌ثانیه؛ اگر هیچ نوبت واحدی پشتیبانش نباشد `null` است، در لُب‌های ساخته‌شده پیش از ارجاع‌ها نمی‌آید، و در لُب‌های پیش از ۶ سپتامبر ۲۰۲۶ ممکن است به‌جای شروع دقیق نوبت، ثانیه‌ای باشد که به مدل نشان داده شد",
                                              "anyOf": [
                                                {
                                                  "type": "number"
                                                },
                                                {
                                                  "type": "null"
                                                }
                                              ]
                                            }
                                          },
                                          "required": [
                                            "text"
                                          ]
                                        },
                                        "description": "The section's entries (`decision_list`, `action_item_list`, `key_point_list`, `qa_list` and `follow_up_list`)",
                                        "x-lobbe-description-fa": "مدخل‌های بخش (`decision_list`، `action_item_list`، `key_point_list`، `qa_list` و `follow_up_list`)"
                                      }
                                    },
                                    "required": [
                                      "kind",
                                      "items"
                                    ]
                                  },
                                  {
                                    "type": "object",
                                    "properties": {
                                      "kind": {
                                        "type": "string",
                                        "const": "free_text",
                                        "description": "The section's kind, which decides its other fields: `summary`, `decision_list`, `action_item_list`, `key_point_list`, `qa_list`, `topic_notes`, `follow_up_list` or `free_text`",
                                        "x-lobbe-description-fa": "نوع بخش، که فیلدهای دیگرش را تعیین می‌کند: `summary`، `decision_list`، `action_item_list`، `key_point_list`، `qa_list`، `topic_notes`، `follow_up_list` یا `free_text`"
                                      },
                                      "title": {
                                        "anyOf": [
                                          {
                                            "type": "string"
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ],
                                        "description": "A `free_text` section's own heading; null = the default heading",
                                        "x-lobbe-description-fa": "عنوان خود بخش `free_text`؛ `null` یعنی عنوان پیش‌فرض"
                                      },
                                      "text": {
                                        "type": "string",
                                        "description": "The section's prose (`summary` and `free_text`)",
                                        "x-lobbe-description-fa": "متن بخش (`summary` و `free_text`)"
                                      }
                                    },
                                    "required": [
                                      "kind",
                                      "title",
                                      "text"
                                    ]
                                  }
                                ]
                              },
                              "description": "The sections the Lobbe is made of, at least one, in reading order; which kinds appear depends on the meeting",
                              "x-lobbe-description-fa": "بخش‌هایی که لُب از آن‌ها ساخته شده، دست‌کم یکی، به ترتیب خواندن؛ این‌که کدام نوع‌ها بیایند به جلسه بستگی دارد"
                            }
                          },
                          "required": [
                            "version",
                            "title",
                            "sections"
                          ],
                          "description": "The Lobbe's structured content",
                          "x-lobbe-description-fa": "محتوای ساختاریافتهٔ لُب"
                        },
                        "markdown": {
                          "type": "string",
                          "description": "The Lobbe as one standalone Markdown document, headed by the meeting's title as an H1",
                          "x-lobbe-description-fa": "لُب به‌صورت یک سند Markdown مستقل، با عنوان جلسه به‌صورت `H1` در بالای آن"
                        }
                      },
                      "required": [
                        "id",
                        "type",
                        "language",
                        "promptVersion",
                        "transcriptRevision",
                        "content",
                        "markdown"
                      ],
                      "description": "The meeting's Lobbe: the AI write-up, in its latest version",
                      "x-lobbe-description-fa": "لُب جلسه: نوشتهٔ هوش مصنوعی، در تازه‌ترین نسخه‌اش"
                    },
                    "stats": {
                      "anyOf": [
                        {
                          "type": "object",
                          "properties": {
                            "version": {
                              "type": "number",
                              "const": 2,
                              "description": "The stats format's version: always `2`",
                              "x-lobbe-description-fa": "نسخهٔ قالب آمار: همیشه `2`"
                            },
                            "meetingDurationSeconds": {
                              "type": "number",
                              "description": "The meeting's length in seconds",
                              "x-lobbe-description-fa": "طول جلسه به ثانیه"
                            },
                            "spokenSeconds": {
                              "type": "number",
                              "description": "Everyone's speaking time added up, in seconds to one decimal",
                              "x-lobbe-description-fa": "جمع زمان صحبت همه، به ثانیه با یک رقم اعشار"
                            },
                            "speakerCount": {
                              "type": "integer",
                              "minimum": -9007199254740991,
                              "maximum": 9007199254740991,
                              "description": "How many people spoke",
                              "x-lobbe-description-fa": "شمار کسانی که صحبت کردند"
                            },
                            "wordCount": {
                              "type": "integer",
                              "minimum": -9007199254740991,
                              "maximum": 9007199254740991,
                              "description": "Words spoken in the meeting",
                              "x-lobbe-description-fa": "شمار کلمه‌های گفته‌شده در جلسه"
                            },
                            "turnCount": {
                              "type": "integer",
                              "minimum": -9007199254740991,
                              "maximum": 9007199254740991,
                              "description": "Turns in the meeting: runs of one person speaking without another in between",
                              "x-lobbe-description-fa": "شمار نوبت‌های جلسه: هر بار که یک نفر بی‌آنکه دیگری میانش صحبت کند حرف می‌زند"
                            },
                            "questionCount": {
                              "type": "integer",
                              "minimum": -9007199254740991,
                              "maximum": 9007199254740991,
                              "description": "Question marks (`؟` or `?`) across all turns",
                              "x-lobbe-description-fa": "شمار علامت‌های سؤال (`؟` یا `?`) در همهٔ نوبت‌ها"
                            },
                            "longestSilence": {
                              "anyOf": [
                                {
                                  "type": "object",
                                  "properties": {
                                    "seconds": {
                                      "type": "number",
                                      "description": "The gap's length in seconds, to one decimal",
                                      "x-lobbe-description-fa": "طول فاصله به ثانیه، با یک رقم اعشار"
                                    },
                                    "afterSpeaker": {
                                      "type": "string",
                                      "description": "Who spoke last before it: a `transcript.speakers[].label`",
                                      "x-lobbe-description-fa": "آخرین کسی که پیش از آن صحبت کرد: یکی از `transcript.speakers[].label`"
                                    },
                                    "afterQuote": {
                                      "type": "string",
                                      "description": "The end of that person's line before the gap, at most 80 characters, cut at a word",
                                      "x-lobbe-description-fa": "پایان جملهٔ همان فرد پیش از فاصله، حداکثر ۸۰ نویسه، بریده‌شده در مرز کلمه"
                                    }
                                  },
                                  "required": [
                                    "seconds",
                                    "afterSpeaker",
                                    "afterQuote"
                                  ]
                                },
                                {
                                  "type": "null"
                                }
                              ],
                              "description": "The longest gap between two turns, when it is at least 3 seconds; null otherwise",
                              "x-lobbe-description-fa": "طولانی‌ترین فاصلهٔ میان دو نوبت، اگر دست‌کم ۳ ثانیه باشد؛ در غیر این صورت `null` است"
                            },
                            "speakers": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "speaker": {
                                    "type": "string",
                                    "description": "The person: a `transcript.speakers[].label`",
                                    "x-lobbe-description-fa": "این فرد: یکی از `transcript.speakers[].label`"
                                  },
                                  "talkSeconds": {
                                    "type": "number",
                                    "description": "Their speaking time in seconds, to one decimal",
                                    "x-lobbe-description-fa": "زمان صحبت این فرد به ثانیه، با یک رقم اعشار"
                                  },
                                  "sharePct": {
                                    "type": "number",
                                    "description": "Their share of all speaking time, 0–100, to one decimal",
                                    "x-lobbe-description-fa": "سهم این فرد از کل زمان صحبت، از ۰ تا ۱۰۰، با یک رقم اعشار"
                                  },
                                  "wordCount": {
                                    "type": "integer",
                                    "minimum": -9007199254740991,
                                    "maximum": 9007199254740991,
                                    "description": "Words they spoke",
                                    "x-lobbe-description-fa": "شمار کلمه‌هایی که این فرد گفت"
                                  },
                                  "wordsPerMinute": {
                                    "anyOf": [
                                      {
                                        "type": "number"
                                      },
                                      {
                                        "type": "null"
                                      }
                                    ],
                                    "description": "Their pace in words per minute; null under 5 seconds of speech",
                                    "x-lobbe-description-fa": "سرعت صحبت این فرد به کلمه در دقیقه؛ اگر کمتر از ۵ ثانیه صحبت کرده باشد `null` است"
                                  },
                                  "longestMonologueSeconds": {
                                    "type": "number",
                                    "description": "Their longest turn in seconds, to one decimal",
                                    "x-lobbe-description-fa": "طولانی‌ترین نوبت این فرد به ثانیه، با یک رقم اعشار"
                                  },
                                  "turnCount": {
                                    "type": "integer",
                                    "minimum": -9007199254740991,
                                    "maximum": 9007199254740991,
                                    "description": "How many turns they took",
                                    "x-lobbe-description-fa": "شمار نوبت‌های این فرد"
                                  },
                                  "avgTurnSeconds": {
                                    "type": "number",
                                    "description": "Their average turn in seconds, to one decimal; `0` when they took no timed turn",
                                    "x-lobbe-description-fa": "میانگین نوبت این فرد به ثانیه، با یک رقم اعشار؛ اگر نوبتی با زمان مشخص نداشته باشد `0` است"
                                  },
                                  "questionCount": {
                                    "type": "integer",
                                    "minimum": -9007199254740991,
                                    "maximum": 9007199254740991,
                                    "description": "Question marks (`؟` or `?`) in their turns",
                                    "x-lobbe-description-fa": "شمار علامت‌های سؤال (`؟` یا `?`) در نوبت‌های این فرد"
                                  }
                                },
                                "required": [
                                  "speaker",
                                  "talkSeconds",
                                  "sharePct",
                                  "wordCount",
                                  "wordsPerMinute",
                                  "longestMonologueSeconds",
                                  "turnCount",
                                  "avgTurnSeconds",
                                  "questionCount"
                                ]
                              },
                              "description": "One row per person, most speaking time first",
                              "x-lobbe-description-fa": "برای هر نفر یک سطر، از بیشترین زمان صحبت"
                            }
                          },
                          "required": [
                            "version",
                            "meetingDurationSeconds",
                            "spokenSeconds",
                            "speakerCount",
                            "wordCount",
                            "turnCount",
                            "questionCount",
                            "longestSilence",
                            "speakers"
                          ]
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "The meeting's stats, counted from the transcript (no AI) under the labels of `transcript.speakers`; this route always fills it",
                      "x-lobbe-description-fa": "آمار جلسه که از روی رونوشت شمرده می‌شود (بدون هوش مصنوعی)، با همان برچسب‌های `transcript.speakers`؛ این مسیر همیشه آن را پر می‌کند"
                    }
                  },
                  "required": [
                    "schemaVersion",
                    "recording",
                    "transcript",
                    "lobbe",
                    "stats"
                  ],
                  "description": "One finished meeting: its transcript, its Lobbe and its stats",
                  "x-lobbe-description-fa": "یک جلسهٔ آماده: رونوشت، لُب و آمار آن"
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "default": {
            "description": "An error. `error.code` is the contract; `message` may change.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "object",
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "The error's code: stable, the part to branch on",
                          "x-lobbe-description-fa": "کد خطا: ثابت می‌ماند و برنامهٔ شما باید بر اساس همین تصمیم بگیرد"
                        },
                        "message": {
                          "type": "string",
                          "description": "A human-readable explanation; its wording may change",
                          "x-lobbe-description-fa": "توضیحی خواندنی برای انسان؛ متن آن ممکن است تغییر کند"
                        },
                        "details": {
                          "description": "Extra facts some codes carry, e.g. `requiredMinutes` with `INSUFFICIENT_MINUTES`; absent otherwise",
                          "x-lobbe-description-fa": "اطلاعات بیشتری که بعضی کدها همراه دارند، مثلاً `requiredMinutes` همراه `INSUFFICIENT_MINUTES`؛ در غیر این صورت نمی‌آید",
                          "type": "object",
                          "propertyNames": {
                            "type": "string"
                          },
                          "additionalProperties": {}
                        }
                      },
                      "required": [
                        "code",
                        "message"
                      ],
                      "description": "What went wrong",
                      "x-lobbe-description-fa": "چه چیزی درست پیش نرفت"
                    }
                  },
                  "required": [
                    "error"
                  ],
                  "description": "An error",
                  "x-lobbe-description-fa": "یک خطا"
                }
              }
            }
          }
        }
      }
    },
    "/recordings/{id}/status": {
      "get": {
        "operationId": "getRecordingStatus",
        "summary": "One meeting's progress; at NAMING, the link that asks the owner to name the speakers",
        "x-lobbe-summary-fa": "پیشرفت یک جلسه؛ در مرحلهٔ نام‌گذاری، لینکی که از صاحب جلسه می‌خواهد گوینده‌ها را نام‌گذاری کند",
        "x-lobbe-scopes": [
          "recordings:read",
          "recordings:write"
        ],
        "x-lobbe-spends": false,
        "x-lobbe-rate-limit": {
          "class": "read",
          "requests": 600,
          "windowSeconds": 600
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The meeting's id",
            "x-lobbe-description-fa": "شناسهٔ جلسه",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "One meeting's progress; at NAMING, the link that asks the owner to name the speakers",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "schemaVersion": {
                      "type": "number",
                      "const": 1,
                      "description": "Always `1` within API v1",
                      "x-lobbe-description-fa": "در نسخهٔ ۱ API همیشه `1`"
                    },
                    "id": {
                      "type": "string",
                      "description": "The meeting's id",
                      "x-lobbe-description-fa": "شناسهٔ جلسه"
                    },
                    "status": {
                      "type": "string",
                      "enum": [
                        "QUEUED",
                        "TRANSCRIBING",
                        "NAMING",
                        "GENERATING",
                        "READY",
                        "FAILED"
                      ],
                      "description": "Where the meeting is: `QUEUED`, `TRANSCRIBING`, `NAMING` (waiting for the speakers' names), `GENERATING` (the Lobbe is being made), then `READY`; or `FAILED`",
                      "x-lobbe-description-fa": "جلسه کجاست: `QUEUED`، `TRANSCRIBING`، `NAMING` (در انتظار نام گوینده‌ها)، `GENERATING` (لُب در حال ساخت است)، سپس `READY`؛ یا `FAILED`"
                    },
                    "title": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "The meeting's title: the one it was submitted with or its owner gave it, else its Lobbe's once that is made; null until then",
                      "x-lobbe-description-fa": "عنوان جلسه: همان‌که با جلسه فرستاده شد یا صاحب جلسه داد، وگرنه عنوان لُب آن پس از ساخته‌شدن؛ تا آن زمان `null` است"
                    },
                    "error": {
                      "anyOf": [
                        {
                          "type": "object",
                          "properties": {
                            "code": {
                              "type": "string",
                              "description": "The failure's code, e.g. `NO_SPEECH` or `AUDIO_CORRUPT`; `FAILED` when there is no more specific one",
                              "x-lobbe-description-fa": "کد شکست، مثلاً `NO_SPEECH` یا `AUDIO_CORRUPT`؛ اگر کد دقیق‌تری نباشد `FAILED`"
                            },
                            "retryable": {
                              "type": "boolean",
                              "description": "Whether `retryRecording` can help: `false` for a meeting with no speech or damaged audio",
                              "x-lobbe-description-fa": "این‌که `retryRecording` کمکی می‌کند یا نه: برای جلسهٔ بدون گفتار یا با صدای آسیب‌دیده `false` است"
                            }
                          },
                          "required": [
                            "code",
                            "retryable"
                          ]
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "Why the meeting failed; null unless `status` is `FAILED`",
                      "x-lobbe-description-fa": "چرا جلسه ناموفق شد؛ اگر `status` برابر `FAILED` نباشد `null` است"
                    },
                    "naming": {
                      "anyOf": [
                        {
                          "type": "object",
                          "properties": {
                            "url": {
                              "type": "string",
                              "description": "Send it to the owner: it opens the meeting's naming sheet, for the owner alone, signed in",
                              "x-lobbe-description-fa": "آن را برای صاحب جلسه بفرستید: صفحهٔ نام‌گذاری جلسه را باز می‌کند، فقط برای خود او و وقتی وارد حساب شده باشد"
                            },
                            "deadline": {
                              "anyOf": [
                                {
                                  "type": "string"
                                },
                                {
                                  "type": "null"
                                }
                              ],
                              "description": "The earliest time Lobbe goes ahead without names (ISO 8601, UTC); null = it waits until the owner names the speakers or skips",
                              "x-lobbe-description-fa": "زودترین زمانی که لُب بدون نام‌ها ادامه می‌دهد (`ISO 8601`، به وقت UTC)؛ `null` یعنی تا وقتی صاحب جلسه گوینده‌ها را نام‌گذاری کند یا رد شود منتظر می‌ماند"
                            }
                          },
                          "required": [
                            "url",
                            "deadline"
                          ]
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "Naming the speakers; null unless `status` is `NAMING`",
                      "x-lobbe-description-fa": "نام‌گذاری گوینده‌ها؛ اگر `status` برابر `NAMING` نباشد `null` است"
                    },
                    "bundleUrl": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "The meeting's bundle once it is `READY`, for a token holding `recordings:read`; null otherwise",
                      "x-lobbe-description-fa": "جلسهٔ کامل پس از `READY` شدن، برای توکنی که دسترسی `recordings:read` دارد؛ در غیر این صورت `null` است"
                    },
                    "url": {
                      "type": "string",
                      "description": "The meeting's page in the web app",
                      "x-lobbe-description-fa": "صفحهٔ جلسه در برنامهٔ وب"
                    }
                  },
                  "required": [
                    "schemaVersion",
                    "id",
                    "status",
                    "title",
                    "error",
                    "naming",
                    "bundleUrl",
                    "url"
                  ],
                  "description": "One meeting's progress",
                  "x-lobbe-description-fa": "پیشرفت یک جلسه"
                }
              }
            }
          },
          "default": {
            "description": "An error. `error.code` is the contract; `message` may change.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "object",
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "The error's code: stable, the part to branch on",
                          "x-lobbe-description-fa": "کد خطا: ثابت می‌ماند و برنامهٔ شما باید بر اساس همین تصمیم بگیرد"
                        },
                        "message": {
                          "type": "string",
                          "description": "A human-readable explanation; its wording may change",
                          "x-lobbe-description-fa": "توضیحی خواندنی برای انسان؛ متن آن ممکن است تغییر کند"
                        },
                        "details": {
                          "description": "Extra facts some codes carry, e.g. `requiredMinutes` with `INSUFFICIENT_MINUTES`; absent otherwise",
                          "x-lobbe-description-fa": "اطلاعات بیشتری که بعضی کدها همراه دارند، مثلاً `requiredMinutes` همراه `INSUFFICIENT_MINUTES`؛ در غیر این صورت نمی‌آید",
                          "type": "object",
                          "propertyNames": {
                            "type": "string"
                          },
                          "additionalProperties": {}
                        }
                      },
                      "required": [
                        "code",
                        "message"
                      ],
                      "description": "What went wrong",
                      "x-lobbe-description-fa": "چه چیزی درست پیش نرفت"
                    }
                  },
                  "required": [
                    "error"
                  ],
                  "description": "An error",
                  "x-lobbe-description-fa": "یک خطا"
                }
              }
            }
          }
        }
      }
    },
    "/events": {
      "get": {
        "operationId": "listEvents",
        "summary": "What happened to the owner's meetings since a cursor: created, waiting for names, ready, failed, updated, deleted",
        "x-lobbe-summary-fa": "آنچه پس از یک نشانگر برای جلسه‌های صاحب حساب رخ داده است: ساخته‌شدن، انتظار برای نام‌گذاری، آماده‌شدن، شکست، تغییر و حذف",
        "x-lobbe-scopes": [
          "recordings:read",
          "recordings:write"
        ],
        "x-lobbe-spends": false,
        "x-lobbe-rate-limit": {
          "class": "read",
          "requests": 600,
          "windowSeconds": 600
        },
        "parameters": [
          {
            "name": "after",
            "in": "query",
            "required": false,
            "description": "Where to read from: the `nextCursor` of the previous page, passed back as is, or `latest`, which starts from now (no events, and a cursor to poll with). Absent = the oldest event a fresh read serves, about two hours inside the 30-day window events are kept for. A cursor older than that window answers `410 CURSOR_EXPIRED`: take a new cursor with `after=latest` first, then catch up from `listReadyRecordings`, then read on from that new cursor. A malformed value is a `400`",
            "x-lobbe-description-fa": "از کجا خوانده شود: مقدار `nextCursor` صفحهٔ قبل، بی‌تغییر، یا `latest` که از همین حالا شروع می‌کند (بدون رویداد، با نشانگری برای پرسیدن‌های بعدی). اگر نباشد، از قدیمی‌ترین رویدادی که خواندنِ از نو برمی‌گرداند، حدود دو ساعت پس از آغاز بازهٔ ۳۰ روزه‌ای که رویدادها نگه داشته می‌شوند. نشانگری که از این بازه قدیمی‌تر باشد پاسخ `410 CURSOR_EXPIRED` می‌گیرد: نخست با `after=latest` نشانگر تازه‌ای بگیرید، بعد عقب‌ماندگی را از `listReadyRecordings` جبران کنید و سپس از همان نشانگر تازه به بعد بخوانید. مقدار نادرست پاسخ `400` می‌گیرد",
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "const": "latest"
                },
                {
                  "type": "string",
                  "maxLength": 64,
                  "pattern": "^\\d{1,19}\\.\\d{1,19}\\.\\d{1,15}$"
                }
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "How many events to return, 1–500 (default 100)",
            "x-lobbe-description-fa": "تعداد رویدادهایی که برمی‌گردد، از ۱ تا ۵۰۰ (پیش‌فرض ۱۰۰)",
            "schema": {
              "default": 100,
              "type": "integer",
              "minimum": 1,
              "maximum": 500
            }
          }
        ],
        "responses": {
          "200": {
            "description": "What happened to the owner's meetings since a cursor: created, waiting for names, ready, failed, updated, deleted",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "schemaVersion": {
                      "type": "number",
                      "const": 1,
                      "description": "Always `1` within API v1",
                      "x-lobbe-description-fa": "در نسخهٔ ۱ API همیشه `1`"
                    },
                    "events": {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string",
                                "description": "The event's own id, the same on every read: use it to skip an event you already handled. It is not a cursor (page with `nextCursor`)",
                                "x-lobbe-description-fa": "شناسهٔ خود رویداد که در هر بار خواندن یکسان است: با آن رویدادی را که قبلاً پردازش کرده‌اید کنار بگذارید. این شناسه نشانگر نیست (برای صفحهٔ بعد از `nextCursor` استفاده کنید)"
                              },
                              "recordingId": {
                                "type": "string",
                                "description": "The id of the meeting it is about",
                                "x-lobbe-description-fa": "شناسهٔ جلسه‌ای که رویداد دربارهٔ آن است"
                              },
                              "seriesId": {
                                "anyOf": [
                                  {
                                    "type": "string"
                                  },
                                  {
                                    "type": "null"
                                  }
                                ],
                                "description": "The series the meeting was in when the change happened; null when it was in none, or while series are switched off",
                                "x-lobbe-description-fa": "سری‌ای که جلسه هنگام این تغییر در آن بود؛ اگر در هیچ سری‌ای نبود یا سری‌ها خاموش باشند `null` است"
                              },
                              "occurredAt": {
                                "type": "string",
                                "description": "When the change happened (ISO 8601, UTC); follow the feed's order rather than sorting by it",
                                "x-lobbe-description-fa": "زمان رخ دادن تغییر (`ISO 8601`، به وقت UTC)؛ به‌جای مرتب‌کردن بر اساس آن، ترتیب همین فهرست را دنبال کنید"
                              },
                              "type": {
                                "type": "string",
                                "const": "recording.created",
                                "description": "`recording.created`: the meeting was received in full, whether recorded in the app, uploaded or submitted by a token",
                                "x-lobbe-description-fa": "`recording.created`: جلسه کامل دریافت شد، چه در برنامه ضبط شده باشد، چه بارگذاری شده باشد و چه با توکن فرستاده شده باشد"
                              },
                              "data": {
                                "type": "object",
                                "properties": {
                                  "status": {
                                    "type": "string",
                                    "enum": [
                                      "QUEUED",
                                      "TRANSCRIBING",
                                      "NAMING",
                                      "GENERATING",
                                      "READY",
                                      "FAILED"
                                    ],
                                    "description": "Where the meeting is: `QUEUED`, `TRANSCRIBING`, `NAMING` (waiting for the speakers' names), `GENERATING` (the Lobbe is being made), then `READY`; or `FAILED`",
                                    "x-lobbe-description-fa": "جلسه کجاست: `QUEUED`، `TRANSCRIBING`، `NAMING` (در انتظار نام گوینده‌ها)، `GENERATING` (لُب در حال ساخت است)، سپس `READY`؛ یا `FAILED`"
                                  }
                                },
                                "required": [
                                  "status"
                                ],
                                "description": "The meeting's `status` as the change left it",
                                "x-lobbe-description-fa": "`status` جلسه پس از این تغییر"
                              }
                            },
                            "required": [
                              "id",
                              "recordingId",
                              "seriesId",
                              "occurredAt",
                              "type",
                              "data"
                            ],
                            "description": "A meeting was received",
                            "x-lobbe-description-fa": "جلسه‌ای دریافت شد"
                          },
                          {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string",
                                "description": "The event's own id, the same on every read: use it to skip an event you already handled. It is not a cursor (page with `nextCursor`)",
                                "x-lobbe-description-fa": "شناسهٔ خود رویداد که در هر بار خواندن یکسان است: با آن رویدادی را که قبلاً پردازش کرده‌اید کنار بگذارید. این شناسه نشانگر نیست (برای صفحهٔ بعد از `nextCursor` استفاده کنید)"
                              },
                              "recordingId": {
                                "type": "string",
                                "description": "The id of the meeting it is about",
                                "x-lobbe-description-fa": "شناسهٔ جلسه‌ای که رویداد دربارهٔ آن است"
                              },
                              "seriesId": {
                                "anyOf": [
                                  {
                                    "type": "string"
                                  },
                                  {
                                    "type": "null"
                                  }
                                ],
                                "description": "The series the meeting was in when the change happened; null when it was in none, or while series are switched off",
                                "x-lobbe-description-fa": "سری‌ای که جلسه هنگام این تغییر در آن بود؛ اگر در هیچ سری‌ای نبود یا سری‌ها خاموش باشند `null` است"
                              },
                              "occurredAt": {
                                "type": "string",
                                "description": "When the change happened (ISO 8601, UTC); follow the feed's order rather than sorting by it",
                                "x-lobbe-description-fa": "زمان رخ دادن تغییر (`ISO 8601`، به وقت UTC)؛ به‌جای مرتب‌کردن بر اساس آن، ترتیب همین فهرست را دنبال کنید"
                              },
                              "type": {
                                "type": "string",
                                "const": "recording.naming_required",
                                "description": "`recording.naming_required`: the meeting is at `NAMING`, waiting for its speakers' names or a skip (`skipRecordingNaming`); sent again each time naming opens again",
                                "x-lobbe-description-fa": "`recording.naming_required`: جلسه در مرحلهٔ `NAMING` است و منتظر نام گوینده‌ها یا رد شدن (`skipRecordingNaming`) است؛ هر بار که نام‌گذاری دوباره باز شود دوباره فرستاده می‌شود"
                              },
                              "data": {
                                "type": "object",
                                "properties": {
                                  "status": {
                                    "type": "string",
                                    "enum": [
                                      "QUEUED",
                                      "TRANSCRIBING",
                                      "NAMING",
                                      "GENERATING",
                                      "READY",
                                      "FAILED"
                                    ],
                                    "description": "Where the meeting is: `QUEUED`, `TRANSCRIBING`, `NAMING` (waiting for the speakers' names), `GENERATING` (the Lobbe is being made), then `READY`; or `FAILED`",
                                    "x-lobbe-description-fa": "جلسه کجاست: `QUEUED`، `TRANSCRIBING`، `NAMING` (در انتظار نام گوینده‌ها)، `GENERATING` (لُب در حال ساخت است)، سپس `READY`؛ یا `FAILED`"
                                  }
                                },
                                "required": [
                                  "status"
                                ],
                                "description": "The meeting's `status` as the change left it",
                                "x-lobbe-description-fa": "`status` جلسه پس از این تغییر"
                              }
                            },
                            "required": [
                              "id",
                              "recordingId",
                              "seriesId",
                              "occurredAt",
                              "type",
                              "data"
                            ],
                            "description": "A meeting is waiting for names",
                            "x-lobbe-description-fa": "جلسه‌ای منتظر نام‌گذاری است"
                          },
                          {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string",
                                "description": "The event's own id, the same on every read: use it to skip an event you already handled. It is not a cursor (page with `nextCursor`)",
                                "x-lobbe-description-fa": "شناسهٔ خود رویداد که در هر بار خواندن یکسان است: با آن رویدادی را که قبلاً پردازش کرده‌اید کنار بگذارید. این شناسه نشانگر نیست (برای صفحهٔ بعد از `nextCursor` استفاده کنید)"
                              },
                              "recordingId": {
                                "type": "string",
                                "description": "The id of the meeting it is about",
                                "x-lobbe-description-fa": "شناسهٔ جلسه‌ای که رویداد دربارهٔ آن است"
                              },
                              "seriesId": {
                                "anyOf": [
                                  {
                                    "type": "string"
                                  },
                                  {
                                    "type": "null"
                                  }
                                ],
                                "description": "The series the meeting was in when the change happened; null when it was in none, or while series are switched off",
                                "x-lobbe-description-fa": "سری‌ای که جلسه هنگام این تغییر در آن بود؛ اگر در هیچ سری‌ای نبود یا سری‌ها خاموش باشند `null` است"
                              },
                              "occurredAt": {
                                "type": "string",
                                "description": "When the change happened (ISO 8601, UTC); follow the feed's order rather than sorting by it",
                                "x-lobbe-description-fa": "زمان رخ دادن تغییر (`ISO 8601`، به وقت UTC)؛ به‌جای مرتب‌کردن بر اساس آن، ترتیب همین فهرست را دنبال کنید"
                              },
                              "type": {
                                "type": "string",
                                "const": "recording.ready",
                                "description": "`recording.ready`: the meeting's Lobbe was made for the first time and its bundle can be read; a later regeneration is `recording.updated` with `regenerated`, never a second `recording.ready`",
                                "x-lobbe-description-fa": "`recording.ready`: لُب جلسه برای نخستین بار ساخته شد و جلسهٔ کامل آن را می‌توان خواند؛ ساخت دوبارهٔ بعدی `recording.updated` با `regenerated` است، هرگز یک `recording.ready` دیگر"
                              },
                              "data": {
                                "type": "object",
                                "properties": {
                                  "status": {
                                    "type": "string",
                                    "enum": [
                                      "QUEUED",
                                      "TRANSCRIBING",
                                      "NAMING",
                                      "GENERATING",
                                      "READY",
                                      "FAILED"
                                    ],
                                    "description": "Where the meeting is: `QUEUED`, `TRANSCRIBING`, `NAMING` (waiting for the speakers' names), `GENERATING` (the Lobbe is being made), then `READY`; or `FAILED`",
                                    "x-lobbe-description-fa": "جلسه کجاست: `QUEUED`، `TRANSCRIBING`، `NAMING` (در انتظار نام گوینده‌ها)، `GENERATING` (لُب در حال ساخت است)، سپس `READY`؛ یا `FAILED`"
                                  }
                                },
                                "required": [
                                  "status"
                                ],
                                "description": "The meeting's `status` as the change left it",
                                "x-lobbe-description-fa": "`status` جلسه پس از این تغییر"
                              }
                            },
                            "required": [
                              "id",
                              "recordingId",
                              "seriesId",
                              "occurredAt",
                              "type",
                              "data"
                            ],
                            "description": "A meeting's Lobbe is ready",
                            "x-lobbe-description-fa": "لُب جلسه‌ای آماده شد"
                          },
                          {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string",
                                "description": "The event's own id, the same on every read: use it to skip an event you already handled. It is not a cursor (page with `nextCursor`)",
                                "x-lobbe-description-fa": "شناسهٔ خود رویداد که در هر بار خواندن یکسان است: با آن رویدادی را که قبلاً پردازش کرده‌اید کنار بگذارید. این شناسه نشانگر نیست (برای صفحهٔ بعد از `nextCursor` استفاده کنید)"
                              },
                              "recordingId": {
                                "type": "string",
                                "description": "The id of the meeting it is about",
                                "x-lobbe-description-fa": "شناسهٔ جلسه‌ای که رویداد دربارهٔ آن است"
                              },
                              "seriesId": {
                                "anyOf": [
                                  {
                                    "type": "string"
                                  },
                                  {
                                    "type": "null"
                                  }
                                ],
                                "description": "The series the meeting was in when the change happened; null when it was in none, or while series are switched off",
                                "x-lobbe-description-fa": "سری‌ای که جلسه هنگام این تغییر در آن بود؛ اگر در هیچ سری‌ای نبود یا سری‌ها خاموش باشند `null` است"
                              },
                              "occurredAt": {
                                "type": "string",
                                "description": "When the change happened (ISO 8601, UTC); follow the feed's order rather than sorting by it",
                                "x-lobbe-description-fa": "زمان رخ دادن تغییر (`ISO 8601`، به وقت UTC)؛ به‌جای مرتب‌کردن بر اساس آن، ترتیب همین فهرست را دنبال کنید"
                              },
                              "type": {
                                "type": "string",
                                "const": "recording.failed",
                                "description": "`recording.failed`: the meeting failed for good; a failure Lobbe still retries on its own is never sent. After `retryRecording` the meeting moves on with no event of its own, and its next event follows",
                                "x-lobbe-description-fa": "`recording.failed`: جلسه به‌طور قطعی ناموفق شد؛ شکستی که لُب هنوز خودش دوباره امتحانش می‌کند هرگز فرستاده نمی‌شود. پس از `retryRecording` جلسه بی‌آنکه رویداد جداگانه‌ای داشته باشد ادامه می‌دهد و رویداد بعدی‌اش از پی آن می‌آید"
                              },
                              "data": {
                                "type": "object",
                                "properties": {
                                  "status": {
                                    "type": "string",
                                    "enum": [
                                      "QUEUED",
                                      "TRANSCRIBING",
                                      "NAMING",
                                      "GENERATING",
                                      "READY",
                                      "FAILED"
                                    ],
                                    "description": "Where the meeting is: `QUEUED`, `TRANSCRIBING`, `NAMING` (waiting for the speakers' names), `GENERATING` (the Lobbe is being made), then `READY`; or `FAILED`",
                                    "x-lobbe-description-fa": "جلسه کجاست: `QUEUED`، `TRANSCRIBING`، `NAMING` (در انتظار نام گوینده‌ها)، `GENERATING` (لُب در حال ساخت است)، سپس `READY`؛ یا `FAILED`"
                                  },
                                  "error": {
                                    "type": "object",
                                    "properties": {
                                      "code": {
                                        "type": "string",
                                        "description": "The failure's code, e.g. `NO_SPEECH` or `AUDIO_CORRUPT`",
                                        "x-lobbe-description-fa": "کد شکست، مثلاً `NO_SPEECH` یا `AUDIO_CORRUPT`"
                                      },
                                      "retryable": {
                                        "type": "boolean",
                                        "description": "Whether `retryRecording` can help: `false` for a meeting with no speech or damaged audio",
                                        "x-lobbe-description-fa": "این‌که `retryRecording` کمکی می‌کند یا نه: برای جلسهٔ بدون گفتار یا با صدای آسیب‌دیده `false` است"
                                      }
                                    },
                                    "required": [
                                      "code",
                                      "retryable"
                                    ],
                                    "description": "Why the meeting failed",
                                    "x-lobbe-description-fa": "چرا جلسه ناموفق شد"
                                  }
                                },
                                "required": [
                                  "status",
                                  "error"
                                ],
                                "description": "The meeting's `status` and why it failed",
                                "x-lobbe-description-fa": "`status` جلسه و دلیل شکست آن"
                              }
                            },
                            "required": [
                              "id",
                              "recordingId",
                              "seriesId",
                              "occurredAt",
                              "type",
                              "data"
                            ],
                            "description": "A meeting failed",
                            "x-lobbe-description-fa": "جلسه‌ای ناموفق شد"
                          },
                          {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string",
                                "description": "The event's own id, the same on every read: use it to skip an event you already handled. It is not a cursor (page with `nextCursor`)",
                                "x-lobbe-description-fa": "شناسهٔ خود رویداد که در هر بار خواندن یکسان است: با آن رویدادی را که قبلاً پردازش کرده‌اید کنار بگذارید. این شناسه نشانگر نیست (برای صفحهٔ بعد از `nextCursor` استفاده کنید)"
                              },
                              "recordingId": {
                                "type": "string",
                                "description": "The id of the meeting it is about",
                                "x-lobbe-description-fa": "شناسهٔ جلسه‌ای که رویداد دربارهٔ آن است"
                              },
                              "seriesId": {
                                "anyOf": [
                                  {
                                    "type": "string"
                                  },
                                  {
                                    "type": "null"
                                  }
                                ],
                                "description": "The series the meeting was in when the change happened; null when it was in none, or while series are switched off",
                                "x-lobbe-description-fa": "سری‌ای که جلسه هنگام این تغییر در آن بود؛ اگر در هیچ سری‌ای نبود یا سری‌ها خاموش باشند `null` است"
                              },
                              "occurredAt": {
                                "type": "string",
                                "description": "When the change happened (ISO 8601, UTC); follow the feed's order rather than sorting by it",
                                "x-lobbe-description-fa": "زمان رخ دادن تغییر (`ISO 8601`، به وقت UTC)؛ به‌جای مرتب‌کردن بر اساس آن، ترتیب همین فهرست را دنبال کنید"
                              },
                              "type": {
                                "type": "string",
                                "const": "recording.updated",
                                "description": "`recording.updated`: a `READY` meeting changed, and `data.change` says how; an edit to a meeting still in progress is carried by its `recording.ready`. The exception is `restored`, which follows a `recording.deleted`: the meeting came back at the status it had, so its `data.status` can be any status",
                                "x-lobbe-description-fa": "`recording.updated`: جلسه‌ای `READY` تغییر کرد و `data.change` می‌گوید چگونه؛ ویرایش جلسه‌ای که هنوز در جریان است با `recording.ready` همان جلسه می‌آید. استثنا `restored` است که پس از یک `recording.deleted` می‌آید: جلسه با همان وضعیتی که داشت برگشت، پس `data.status` آن می‌تواند هر وضعیتی باشد"
                              },
                              "data": {
                                "type": "object",
                                "properties": {
                                  "status": {
                                    "type": "string",
                                    "enum": [
                                      "QUEUED",
                                      "TRANSCRIBING",
                                      "NAMING",
                                      "GENERATING",
                                      "READY",
                                      "FAILED"
                                    ],
                                    "description": "Where the meeting is: `QUEUED`, `TRANSCRIBING`, `NAMING` (waiting for the speakers' names), `GENERATING` (the Lobbe is being made), then `READY`; or `FAILED`",
                                    "x-lobbe-description-fa": "جلسه کجاست: `QUEUED`، `TRANSCRIBING`، `NAMING` (در انتظار نام گوینده‌ها)، `GENERATING` (لُب در حال ساخت است)، سپس `READY`؛ یا `FAILED`"
                                  },
                                  "change": {
                                    "type": "string",
                                    "enum": [
                                      "regenerated",
                                      "renamed",
                                      "transcript_edited",
                                      "speakers_renamed",
                                      "series_changed",
                                      "restored"
                                    ],
                                    "description": "What kind of change, never the change itself: `regenerated` (the Lobbe was made again), `renamed` (the title changed), `transcript_edited` (the owner corrected the transcript), `speakers_renamed` (a speaker's name changed), `series_changed` (the meeting moved into, out of or between series) or `restored` (a deleted meeting is back)",
                                    "x-lobbe-description-fa": "نوع تغییر، هرگز خود تغییر: `regenerated` (لُب دوباره ساخته شد)، `renamed` (عنوان تغییر کرد)، `transcript_edited` (صاحب جلسه رونوشت را اصلاح کرد)، `speakers_renamed` (نام یک گوینده تغییر کرد)، `series_changed` (جلسه به سری‌ای رفت، از سری بیرون آمد یا سری‌اش عوض شد) یا `restored` (جلسهٔ حذف‌شده برگشت)"
                                  }
                                },
                                "required": [
                                  "status",
                                  "change"
                                ],
                                "description": "The meeting's `status` and the kind of change",
                                "x-lobbe-description-fa": "`status` جلسه و نوع تغییر"
                              }
                            },
                            "required": [
                              "id",
                              "recordingId",
                              "seriesId",
                              "occurredAt",
                              "type",
                              "data"
                            ],
                            "description": "A meeting changed: a finished one, or a deleted one that came back",
                            "x-lobbe-description-fa": "جلسه‌ای تغییر کرد: جلسه‌ای آماده، یا جلسهٔ حذف‌شده‌ای که برگشت"
                          },
                          {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string",
                                "description": "The event's own id, the same on every read: use it to skip an event you already handled. It is not a cursor (page with `nextCursor`)",
                                "x-lobbe-description-fa": "شناسهٔ خود رویداد که در هر بار خواندن یکسان است: با آن رویدادی را که قبلاً پردازش کرده‌اید کنار بگذارید. این شناسه نشانگر نیست (برای صفحهٔ بعد از `nextCursor` استفاده کنید)"
                              },
                              "recordingId": {
                                "type": "string",
                                "description": "The id of the meeting it is about",
                                "x-lobbe-description-fa": "شناسهٔ جلسه‌ای که رویداد دربارهٔ آن است"
                              },
                              "seriesId": {
                                "anyOf": [
                                  {
                                    "type": "string"
                                  },
                                  {
                                    "type": "null"
                                  }
                                ],
                                "description": "The series the meeting was in when the change happened; null when it was in none, or while series are switched off",
                                "x-lobbe-description-fa": "سری‌ای که جلسه هنگام این تغییر در آن بود؛ اگر در هیچ سری‌ای نبود یا سری‌ها خاموش باشند `null` است"
                              },
                              "occurredAt": {
                                "type": "string",
                                "description": "When the change happened (ISO 8601, UTC); follow the feed's order rather than sorting by it",
                                "x-lobbe-description-fa": "زمان رخ دادن تغییر (`ISO 8601`، به وقت UTC)؛ به‌جای مرتب‌کردن بر اساس آن، ترتیب همین فهرست را دنبال کنید"
                              },
                              "type": {
                                "type": "string",
                                "const": "recording.deleted",
                                "description": "`recording.deleted`: the meeting was deleted, at any status; its bundle answers `404` from then on, unless it is restored",
                                "x-lobbe-description-fa": "`recording.deleted`: جلسه حذف شد، در هر وضعیتی؛ از آن پس خواندن جلسهٔ کامل آن پاسخ `404` می‌گیرد، مگر این‌که جلسه برگردانده شود"
                              },
                              "data": {
                                "type": "object",
                                "properties": {
                                  "status": {
                                    "type": "string",
                                    "enum": [
                                      "QUEUED",
                                      "TRANSCRIBING",
                                      "NAMING",
                                      "GENERATING",
                                      "READY",
                                      "FAILED"
                                    ],
                                    "description": "Where the meeting is: `QUEUED`, `TRANSCRIBING`, `NAMING` (waiting for the speakers' names), `GENERATING` (the Lobbe is being made), then `READY`; or `FAILED`",
                                    "x-lobbe-description-fa": "جلسه کجاست: `QUEUED`، `TRANSCRIBING`، `NAMING` (در انتظار نام گوینده‌ها)، `GENERATING` (لُب در حال ساخت است)، سپس `READY`؛ یا `FAILED`"
                                  }
                                },
                                "required": [
                                  "status"
                                ],
                                "description": "The meeting's `status` as the change left it",
                                "x-lobbe-description-fa": "`status` جلسه پس از این تغییر"
                              }
                            },
                            "required": [
                              "id",
                              "recordingId",
                              "seriesId",
                              "occurredAt",
                              "type",
                              "data"
                            ],
                            "description": "A meeting was deleted",
                            "x-lobbe-description-fa": "جلسه‌ای حذف شد"
                          }
                        ]
                      },
                      "description": "The events on this page, oldest first; for one meeting, in the order its changes happened. No event carries a meeting's content: only ids, its status, an error code or the kind of change",
                      "x-lobbe-description-fa": "رویدادهای این صفحه، از قدیمی‌ترین؛ برای یک جلسه، به همان ترتیبی که تغییرهایش رخ داد. هیچ رویدادی محتوای جلسه را همراه ندارد: فقط شناسه‌ها، وضعیت جلسه، کد خطا یا نوع تغییر"
                    },
                    "nextCursor": {
                      "type": "string",
                      "description": "Always set: pass it back as `after` for what happens next. A page that has caught up gets a cursor at now, so polling an account with nothing new never ages into `410`",
                      "x-lobbe-description-fa": "همیشه هست: آن را به‌عنوان `after` بفرستید تا رویدادهای بعدی را بگیرید. صفحه‌ای که به آخرین رویداد رسیده باشد نشانگری از همین لحظه می‌گیرد، پس پرسیدن پی‌درپی از حسابی که رویداد تازه‌ای ندارد هرگز به `410` نمی‌رسد"
                    }
                  },
                  "required": [
                    "schemaVersion",
                    "events",
                    "nextCursor"
                  ],
                  "description": "What happened to the meetings this token reaches since `after`, oldest first. With `recordings:read`, the owner's own meetings (not those of a series they joined); with only `recordings:write`, the meetings this token submitted",
                  "x-lobbe-description-fa": "آنچه از `after` به این سو برای جلسه‌هایی که این توکن به آن‌ها دسترسی دارد رخ داده است، از قدیمی‌ترین. با دسترسی `recordings:read`، جلسه‌های خود صاحب حساب (نه جلسه‌های سری‌هایی که عضوشان است)؛ اگر توکن فقط `recordings:write` داشته باشد، جلسه‌هایی که همین توکن فرستاده است"
                }
              }
            }
          },
          "default": {
            "description": "An error. `error.code` is the contract; `message` may change.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "object",
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "The error's code: stable, the part to branch on",
                          "x-lobbe-description-fa": "کد خطا: ثابت می‌ماند و برنامهٔ شما باید بر اساس همین تصمیم بگیرد"
                        },
                        "message": {
                          "type": "string",
                          "description": "A human-readable explanation; its wording may change",
                          "x-lobbe-description-fa": "توضیحی خواندنی برای انسان؛ متن آن ممکن است تغییر کند"
                        },
                        "details": {
                          "description": "Extra facts some codes carry, e.g. `requiredMinutes` with `INSUFFICIENT_MINUTES`; absent otherwise",
                          "x-lobbe-description-fa": "اطلاعات بیشتری که بعضی کدها همراه دارند، مثلاً `requiredMinutes` همراه `INSUFFICIENT_MINUTES`؛ در غیر این صورت نمی‌آید",
                          "type": "object",
                          "propertyNames": {
                            "type": "string"
                          },
                          "additionalProperties": {}
                        }
                      },
                      "required": [
                        "code",
                        "message"
                      ],
                      "description": "What went wrong",
                      "x-lobbe-description-fa": "چه چیزی درست پیش نرفت"
                    }
                  },
                  "required": [
                    "error"
                  ],
                  "description": "An error",
                  "x-lobbe-description-fa": "یک خطا"
                }
              }
            }
          }
        }
      }
    },
    "/recordings": {
      "post": {
        "operationId": "submitRecording",
        "summary": "Submit a meeting's audio (multipart); answers 202 with its status link",
        "x-lobbe-summary-fa": "ارسال صدای یک جلسه (`multipart`)؛ پاسخ ۲۰۲ همراه با لینک وضعیت آن",
        "x-lobbe-scopes": [
          "recordings:write"
        ],
        "x-lobbe-spends": true,
        "x-lobbe-rate-limit": {
          "class": "submit",
          "requests": 30,
          "windowSeconds": 600
        },
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Recommended. Make one key (8–64 characters, a random UUID say) once per new meeting or question, and send that same key unchanged on every retry of that request; never reuse it for a different request. A replay returns the original outcome and never charges twice. Keys are the owner's for good: they never expire.",
            "x-lobbe-description-fa": "پیشنهاد می‌شود. برای هر جلسه یا سؤال تازه یک بار کلیدی بسازید (۸ تا ۶۴ نویسه، مثلاً یک UUID تصادفی) و همان کلید را بی‌تغییر در هر تلاش دوبارهٔ همان درخواست بفرستید؛ هرگز آن را برای درخواست دیگری به کار نبرید. تکرار یک درخواست همان نتیجهٔ اول را برمی‌گرداند و هرگز دو بار هزینه نمی‌گیرد. کلید برای همیشه از آنِ صاحب حساب می‌ماند و هرگز منقضی نمی‌شود.",
            "schema": {
              "type": "string",
              "minLength": 8,
              "maxLength": 64
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "recordedAt": {
                    "description": "When the meeting happened, ISO 8601 with an offset, at most 5 minutes ahead and not before 2000; absent = now",
                    "x-lobbe-description-fa": "زمان برگزاری جلسه، به `ISO 8601` با اختلاف ساعت، حداکثر ۵ دقیقه جلوتر از اکنون و نه پیش از سال ۲۰۰۰؛ اگر نباشد، همین حالا",
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  },
                  "title": {
                    "description": "One line: whitespace runs collapse to a space and the ends are trimmed, then 1–120 characters",
                    "x-lobbe-description-fa": "یک خط: هر رشته از فاصله‌ها به یک فاصله تبدیل و دو سر آن پیراسته می‌شود، سپس ۱ تا ۱۲۰ نویسه",
                    "type": "string"
                  },
                  "seriesId": {
                    "description": "A series you own to file the meeting in; any other id files it in your personal archive, never an error",
                    "x-lobbe-description-fa": "سری‌ای که خودتان ساخته‌اید تا جلسه در آن قرار بگیرد؛ هر شناسهٔ دیگری جلسه را در «آرشیو شخصی» می‌گذارد و هرگز خطا نمی‌دهد",
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 64
                  },
                  "kind": {
                    "default": "MEETING",
                    "description": "What was recorded, which picks the Lobbe's template: `MEETING`, `LECTURE`, `INTERVIEW`, `VOICE_MEMO` or `CALL` (default `MEETING`)",
                    "x-lobbe-description-fa": "چه چیزی ضبط شده است، که قالب لُب را تعیین می‌کند: `MEETING`، `LECTURE`، `INTERVIEW`، `VOICE_MEMO` یا `CALL` (پیش‌فرض `MEETING`)",
                    "type": "string",
                    "enum": [
                      "MEETING",
                      "LECTURE",
                      "INTERVIEW",
                      "VOICE_MEMO",
                      "CALL"
                    ]
                  },
                  "outputLanguage": {
                    "default": "MATCH",
                    "description": "The Lobbe's language: `MATCH` (the meeting's own), `FA` or `EN` (default `MATCH`)",
                    "x-lobbe-description-fa": "زبان لُب: `MATCH` (مطابق جلسه)، `FA` یا `EN` (پیش‌فرض `MATCH`)",
                    "type": "string",
                    "enum": [
                      "MATCH",
                      "FA",
                      "EN"
                    ]
                  },
                  "useKeyterms": {
                    "default": "on",
                    "description": "`on` (the default) transcribes with your vocabulary, and the series' when the meeting is filed in one, adding a 20% surcharge whenever there are words to use; `off` uses none",
                    "x-lobbe-description-fa": "با `on` (پیش‌فرض) رونوشت با واژگان شما ساخته می‌شود، و اگر جلسه در سری‌ای باشد با واژگان آن سری هم، و هرگاه واژه‌ای در کار باشد ۲۰٪ به هزینه افزوده می‌شود؛ با `off` هیچ واژگانی به کار نمی‌رود",
                    "type": "string",
                    "enum": [
                      "on",
                      "off"
                    ]
                  },
                  "naming": {
                    "default": "default",
                    "description": "`default` (the default) follows your speaker-naming setting; `skip` makes the Lobbe without waiting for names, unnamed voices taking Lobbe's suggestions",
                    "x-lobbe-description-fa": "با `default` (پیش‌فرض) تنظیم نام‌گذاری گوینده‌های شما به کار می‌رود؛ با `skip` لُب بی‌آنکه منتظر نام‌ها بماند ساخته می‌شود و صداهای بی‌نام پیشنهادهای لُب را می‌گیرند",
                    "type": "string",
                    "enum": [
                      "default",
                      "skip"
                    ]
                  },
                  "audio": {
                    "type": "string",
                    "contentMediaType": "application/octet-stream",
                    "description": "The meeting's audio file",
                    "x-lobbe-description-fa": "فایل صوتی جلسه"
                  },
                  "attachment": {
                    "type": "string",
                    "contentMediaType": "application/octet-stream",
                    "description": "One PDF, PPTX or DOCX the Lobbe reads with the meeting",
                    "x-lobbe-description-fa": "یک فایل PDF، PPTX یا DOCX که لُب همراه جلسه می‌خواند"
                  }
                },
                "required": [
                  "audio"
                ],
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Submit a meeting's audio (multipart); answers 202 with its status link",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "schemaVersion": {
                      "type": "number",
                      "const": 1,
                      "description": "Always `1` within API v1",
                      "x-lobbe-description-fa": "در نسخهٔ ۱ API همیشه `1`"
                    },
                    "recording": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "The meeting's id",
                          "x-lobbe-description-fa": "شناسهٔ جلسه"
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "QUEUED",
                            "TRANSCRIBING",
                            "NAMING",
                            "GENERATING",
                            "READY",
                            "FAILED"
                          ],
                          "description": "Where the meeting is: `QUEUED`, `TRANSCRIBING`, `NAMING` (waiting for the speakers' names), `GENERATING` (the Lobbe is being made), then `READY`; or `FAILED`",
                          "x-lobbe-description-fa": "جلسه کجاست: `QUEUED`، `TRANSCRIBING`، `NAMING` (در انتظار نام گوینده‌ها)، `GENERATING` (لُب در حال ساخت است)، سپس `READY`؛ یا `FAILED`"
                        },
                        "minutes": {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 9007199254740991,
                          "description": "What the meeting costs, in minutes: its measured length with the vocabulary surcharge, plus the attachment",
                          "x-lobbe-description-fa": "هزینهٔ جلسه به دقیقه: طول اندازه‌گیری‌شدهٔ آن با هزینهٔ افزودهٔ واژگان، به‌اضافهٔ پیوست"
                        },
                        "recordedAt": {
                          "type": "string",
                          "description": "When the meeting happened (ISO 8601, UTC): the `recordedAt` it was submitted with, else when Lobbe received it",
                          "x-lobbe-description-fa": "زمان برگزاری جلسه (`ISO 8601`، به وقت UTC): همان `recordedAt` که با جلسه فرستاده شد، وگرنه زمانی که لُب آن را دریافت کرد"
                        },
                        "statusUrl": {
                          "type": "string",
                          "description": "GET it with the same token to follow the meeting (`getRecordingStatus`)",
                          "x-lobbe-description-fa": "با درخواست `GET` و همین توکن، پیشرفت جلسه را دنبال کنید (`getRecordingStatus`)"
                        },
                        "bundleUrl": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "The meeting's bundle when it is already `READY` (a replay) and the token holds `recordings:read`; null otherwise",
                          "x-lobbe-description-fa": "جلسهٔ کامل، اگر جلسه از قبل `READY` باشد (در تکرار درخواست) و توکن دسترسی `recordings:read` داشته باشد؛ در غیر این صورت `null` است"
                        },
                        "url": {
                          "type": "string",
                          "description": "The meeting's page in the web app",
                          "x-lobbe-description-fa": "صفحهٔ جلسه در برنامهٔ وب"
                        }
                      },
                      "required": [
                        "id",
                        "status",
                        "minutes",
                        "recordedAt",
                        "statusUrl",
                        "bundleUrl",
                        "url"
                      ],
                      "description": "The meeting you submitted",
                      "x-lobbe-description-fa": "جلسه‌ای که فرستادید"
                    }
                  },
                  "required": [
                    "schemaVersion",
                    "recording"
                  ],
                  "description": "The meeting, stored; replaying the request with the same `Idempotency-Key` answers the same meeting",
                  "x-lobbe-description-fa": "جلسهٔ ذخیره‌شده؛ تکرار درخواست با همان `Idempotency-Key` همین جلسه را برمی‌گرداند"
                }
              }
            }
          },
          "default": {
            "description": "An error. `error.code` is the contract; `message` may change.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "object",
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "The error's code: stable, the part to branch on",
                          "x-lobbe-description-fa": "کد خطا: ثابت می‌ماند و برنامهٔ شما باید بر اساس همین تصمیم بگیرد"
                        },
                        "message": {
                          "type": "string",
                          "description": "A human-readable explanation; its wording may change",
                          "x-lobbe-description-fa": "توضیحی خواندنی برای انسان؛ متن آن ممکن است تغییر کند"
                        },
                        "details": {
                          "description": "Extra facts some codes carry, e.g. `requiredMinutes` with `INSUFFICIENT_MINUTES`; absent otherwise",
                          "x-lobbe-description-fa": "اطلاعات بیشتری که بعضی کدها همراه دارند، مثلاً `requiredMinutes` همراه `INSUFFICIENT_MINUTES`؛ در غیر این صورت نمی‌آید",
                          "type": "object",
                          "propertyNames": {
                            "type": "string"
                          },
                          "additionalProperties": {}
                        }
                      },
                      "required": [
                        "code",
                        "message"
                      ],
                      "description": "What went wrong",
                      "x-lobbe-description-fa": "چه چیزی درست پیش نرفت"
                    }
                  },
                  "required": [
                    "error"
                  ],
                  "description": "An error",
                  "x-lobbe-description-fa": "یک خطا"
                }
              }
            }
          }
        }
      }
    },
    "/recordings/{id}/naming": {
      "post": {
        "operationId": "skipRecordingNaming",
        "summary": "Skip naming the speakers: unnamed voices take Lobbe's suggestions and the Lobbe is made",
        "x-lobbe-summary-fa": "رد شدن از نام‌گذاری گوینده‌ها: صداهای بی‌نام پیشنهادهای لُب را می‌گیرند و لُب ساخته می‌شود",
        "x-lobbe-scopes": [
          "recordings:write"
        ],
        "x-lobbe-spends": false,
        "x-lobbe-rate-limit": {
          "class": "submit",
          "requests": 30,
          "windowSeconds": 600
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The meeting's id",
            "x-lobbe-description-fa": "شناسهٔ جلسه",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "action": {
                    "type": "string",
                    "const": "skip",
                    "description": "Always `skip`: make the Lobbe now, unnamed voices taking Lobbe's suggestions",
                    "x-lobbe-description-fa": "همیشه `skip`: لُب همین حالا ساخته شود و صداهای بی‌نام پیشنهادهای لُب را بگیرند"
                  }
                },
                "required": [
                  "action"
                ],
                "additionalProperties": false,
                "description": "The only naming action a token may take",
                "x-lobbe-description-fa": "تنها کار نام‌گذاری که توکن می‌تواند بکند"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Skip naming the speakers: unnamed voices take Lobbe's suggestions and the Lobbe is made",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "schemaVersion": {
                      "type": "number",
                      "const": 1,
                      "description": "Always `1` within API v1",
                      "x-lobbe-description-fa": "در نسخهٔ ۱ API همیشه `1`"
                    },
                    "id": {
                      "type": "string",
                      "description": "The meeting's id",
                      "x-lobbe-description-fa": "شناسهٔ جلسه"
                    },
                    "status": {
                      "type": "string",
                      "enum": [
                        "QUEUED",
                        "TRANSCRIBING",
                        "NAMING",
                        "GENERATING",
                        "READY",
                        "FAILED"
                      ],
                      "description": "Where the meeting is: `QUEUED`, `TRANSCRIBING`, `NAMING` (waiting for the speakers' names), `GENERATING` (the Lobbe is being made), then `READY`; or `FAILED`",
                      "x-lobbe-description-fa": "جلسه کجاست: `QUEUED`، `TRANSCRIBING`، `NAMING` (در انتظار نام گوینده‌ها)، `GENERATING` (لُب در حال ساخت است)، سپس `READY`؛ یا `FAILED`"
                    },
                    "title": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "The meeting's title: the one it was submitted with or its owner gave it, else its Lobbe's once that is made; null until then",
                      "x-lobbe-description-fa": "عنوان جلسه: همان‌که با جلسه فرستاده شد یا صاحب جلسه داد، وگرنه عنوان لُب آن پس از ساخته‌شدن؛ تا آن زمان `null` است"
                    },
                    "error": {
                      "anyOf": [
                        {
                          "type": "object",
                          "properties": {
                            "code": {
                              "type": "string",
                              "description": "The failure's code, e.g. `NO_SPEECH` or `AUDIO_CORRUPT`; `FAILED` when there is no more specific one",
                              "x-lobbe-description-fa": "کد شکست، مثلاً `NO_SPEECH` یا `AUDIO_CORRUPT`؛ اگر کد دقیق‌تری نباشد `FAILED`"
                            },
                            "retryable": {
                              "type": "boolean",
                              "description": "Whether `retryRecording` can help: `false` for a meeting with no speech or damaged audio",
                              "x-lobbe-description-fa": "این‌که `retryRecording` کمکی می‌کند یا نه: برای جلسهٔ بدون گفتار یا با صدای آسیب‌دیده `false` است"
                            }
                          },
                          "required": [
                            "code",
                            "retryable"
                          ]
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "Why the meeting failed; null unless `status` is `FAILED`",
                      "x-lobbe-description-fa": "چرا جلسه ناموفق شد؛ اگر `status` برابر `FAILED` نباشد `null` است"
                    },
                    "naming": {
                      "anyOf": [
                        {
                          "type": "object",
                          "properties": {
                            "url": {
                              "type": "string",
                              "description": "Send it to the owner: it opens the meeting's naming sheet, for the owner alone, signed in",
                              "x-lobbe-description-fa": "آن را برای صاحب جلسه بفرستید: صفحهٔ نام‌گذاری جلسه را باز می‌کند، فقط برای خود او و وقتی وارد حساب شده باشد"
                            },
                            "deadline": {
                              "anyOf": [
                                {
                                  "type": "string"
                                },
                                {
                                  "type": "null"
                                }
                              ],
                              "description": "The earliest time Lobbe goes ahead without names (ISO 8601, UTC); null = it waits until the owner names the speakers or skips",
                              "x-lobbe-description-fa": "زودترین زمانی که لُب بدون نام‌ها ادامه می‌دهد (`ISO 8601`، به وقت UTC)؛ `null` یعنی تا وقتی صاحب جلسه گوینده‌ها را نام‌گذاری کند یا رد شود منتظر می‌ماند"
                            }
                          },
                          "required": [
                            "url",
                            "deadline"
                          ]
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "Naming the speakers; null unless `status` is `NAMING`",
                      "x-lobbe-description-fa": "نام‌گذاری گوینده‌ها؛ اگر `status` برابر `NAMING` نباشد `null` است"
                    },
                    "bundleUrl": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "The meeting's bundle once it is `READY`, for a token holding `recordings:read`; null otherwise",
                      "x-lobbe-description-fa": "جلسهٔ کامل پس از `READY` شدن، برای توکنی که دسترسی `recordings:read` دارد؛ در غیر این صورت `null` است"
                    },
                    "url": {
                      "type": "string",
                      "description": "The meeting's page in the web app",
                      "x-lobbe-description-fa": "صفحهٔ جلسه در برنامهٔ وب"
                    }
                  },
                  "required": [
                    "schemaVersion",
                    "id",
                    "status",
                    "title",
                    "error",
                    "naming",
                    "bundleUrl",
                    "url"
                  ],
                  "description": "One meeting's progress",
                  "x-lobbe-description-fa": "پیشرفت یک جلسه"
                }
              }
            }
          },
          "default": {
            "description": "An error. `error.code` is the contract; `message` may change.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "object",
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "The error's code: stable, the part to branch on",
                          "x-lobbe-description-fa": "کد خطا: ثابت می‌ماند و برنامهٔ شما باید بر اساس همین تصمیم بگیرد"
                        },
                        "message": {
                          "type": "string",
                          "description": "A human-readable explanation; its wording may change",
                          "x-lobbe-description-fa": "توضیحی خواندنی برای انسان؛ متن آن ممکن است تغییر کند"
                        },
                        "details": {
                          "description": "Extra facts some codes carry, e.g. `requiredMinutes` with `INSUFFICIENT_MINUTES`; absent otherwise",
                          "x-lobbe-description-fa": "اطلاعات بیشتری که بعضی کدها همراه دارند، مثلاً `requiredMinutes` همراه `INSUFFICIENT_MINUTES`؛ در غیر این صورت نمی‌آید",
                          "type": "object",
                          "propertyNames": {
                            "type": "string"
                          },
                          "additionalProperties": {}
                        }
                      },
                      "required": [
                        "code",
                        "message"
                      ],
                      "description": "What went wrong",
                      "x-lobbe-description-fa": "چه چیزی درست پیش نرفت"
                    }
                  },
                  "required": [
                    "error"
                  ],
                  "description": "An error",
                  "x-lobbe-description-fa": "یک خطا"
                }
              }
            }
          }
        }
      }
    },
    "/recordings/{id}/retry": {
      "post": {
        "operationId": "retryRecording",
        "summary": "Retry a failed meeting: the step that failed runs again, at no new charge",
        "x-lobbe-summary-fa": "تلاش دوباره برای جلسهٔ ناموفق: مرحله‌ای که شکست خورد دوباره اجرا می‌شود، بدون هزینهٔ تازه",
        "x-lobbe-scopes": [
          "recordings:write"
        ],
        "x-lobbe-spends": false,
        "x-lobbe-rate-limit": {
          "class": "submit",
          "requests": 30,
          "windowSeconds": 600
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The meeting's id",
            "x-lobbe-description-fa": "شناسهٔ جلسه",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retry a failed meeting: the step that failed runs again, at no new charge",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "schemaVersion": {
                      "type": "number",
                      "const": 1,
                      "description": "Always `1` within API v1",
                      "x-lobbe-description-fa": "در نسخهٔ ۱ API همیشه `1`"
                    },
                    "id": {
                      "type": "string",
                      "description": "The meeting's id",
                      "x-lobbe-description-fa": "شناسهٔ جلسه"
                    },
                    "status": {
                      "type": "string",
                      "enum": [
                        "QUEUED",
                        "TRANSCRIBING",
                        "NAMING",
                        "GENERATING",
                        "READY",
                        "FAILED"
                      ],
                      "description": "Where the meeting is: `QUEUED`, `TRANSCRIBING`, `NAMING` (waiting for the speakers' names), `GENERATING` (the Lobbe is being made), then `READY`; or `FAILED`",
                      "x-lobbe-description-fa": "جلسه کجاست: `QUEUED`، `TRANSCRIBING`، `NAMING` (در انتظار نام گوینده‌ها)، `GENERATING` (لُب در حال ساخت است)، سپس `READY`؛ یا `FAILED`"
                    },
                    "title": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "The meeting's title: the one it was submitted with or its owner gave it, else its Lobbe's once that is made; null until then",
                      "x-lobbe-description-fa": "عنوان جلسه: همان‌که با جلسه فرستاده شد یا صاحب جلسه داد، وگرنه عنوان لُب آن پس از ساخته‌شدن؛ تا آن زمان `null` است"
                    },
                    "error": {
                      "anyOf": [
                        {
                          "type": "object",
                          "properties": {
                            "code": {
                              "type": "string",
                              "description": "The failure's code, e.g. `NO_SPEECH` or `AUDIO_CORRUPT`; `FAILED` when there is no more specific one",
                              "x-lobbe-description-fa": "کد شکست، مثلاً `NO_SPEECH` یا `AUDIO_CORRUPT`؛ اگر کد دقیق‌تری نباشد `FAILED`"
                            },
                            "retryable": {
                              "type": "boolean",
                              "description": "Whether `retryRecording` can help: `false` for a meeting with no speech or damaged audio",
                              "x-lobbe-description-fa": "این‌که `retryRecording` کمکی می‌کند یا نه: برای جلسهٔ بدون گفتار یا با صدای آسیب‌دیده `false` است"
                            }
                          },
                          "required": [
                            "code",
                            "retryable"
                          ]
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "Why the meeting failed; null unless `status` is `FAILED`",
                      "x-lobbe-description-fa": "چرا جلسه ناموفق شد؛ اگر `status` برابر `FAILED` نباشد `null` است"
                    },
                    "naming": {
                      "anyOf": [
                        {
                          "type": "object",
                          "properties": {
                            "url": {
                              "type": "string",
                              "description": "Send it to the owner: it opens the meeting's naming sheet, for the owner alone, signed in",
                              "x-lobbe-description-fa": "آن را برای صاحب جلسه بفرستید: صفحهٔ نام‌گذاری جلسه را باز می‌کند، فقط برای خود او و وقتی وارد حساب شده باشد"
                            },
                            "deadline": {
                              "anyOf": [
                                {
                                  "type": "string"
                                },
                                {
                                  "type": "null"
                                }
                              ],
                              "description": "The earliest time Lobbe goes ahead without names (ISO 8601, UTC); null = it waits until the owner names the speakers or skips",
                              "x-lobbe-description-fa": "زودترین زمانی که لُب بدون نام‌ها ادامه می‌دهد (`ISO 8601`، به وقت UTC)؛ `null` یعنی تا وقتی صاحب جلسه گوینده‌ها را نام‌گذاری کند یا رد شود منتظر می‌ماند"
                            }
                          },
                          "required": [
                            "url",
                            "deadline"
                          ]
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "Naming the speakers; null unless `status` is `NAMING`",
                      "x-lobbe-description-fa": "نام‌گذاری گوینده‌ها؛ اگر `status` برابر `NAMING` نباشد `null` است"
                    },
                    "bundleUrl": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "The meeting's bundle once it is `READY`, for a token holding `recordings:read`; null otherwise",
                      "x-lobbe-description-fa": "جلسهٔ کامل پس از `READY` شدن، برای توکنی که دسترسی `recordings:read` دارد؛ در غیر این صورت `null` است"
                    },
                    "url": {
                      "type": "string",
                      "description": "The meeting's page in the web app",
                      "x-lobbe-description-fa": "صفحهٔ جلسه در برنامهٔ وب"
                    }
                  },
                  "required": [
                    "schemaVersion",
                    "id",
                    "status",
                    "title",
                    "error",
                    "naming",
                    "bundleUrl",
                    "url"
                  ],
                  "description": "One meeting's progress",
                  "x-lobbe-description-fa": "پیشرفت یک جلسه"
                }
              }
            }
          },
          "default": {
            "description": "An error. `error.code` is the contract; `message` may change.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "object",
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "The error's code: stable, the part to branch on",
                          "x-lobbe-description-fa": "کد خطا: ثابت می‌ماند و برنامهٔ شما باید بر اساس همین تصمیم بگیرد"
                        },
                        "message": {
                          "type": "string",
                          "description": "A human-readable explanation; its wording may change",
                          "x-lobbe-description-fa": "توضیحی خواندنی برای انسان؛ متن آن ممکن است تغییر کند"
                        },
                        "details": {
                          "description": "Extra facts some codes carry, e.g. `requiredMinutes` with `INSUFFICIENT_MINUTES`; absent otherwise",
                          "x-lobbe-description-fa": "اطلاعات بیشتری که بعضی کدها همراه دارند، مثلاً `requiredMinutes` همراه `INSUFFICIENT_MINUTES`؛ در غیر این صورت نمی‌آید",
                          "type": "object",
                          "propertyNames": {
                            "type": "string"
                          },
                          "additionalProperties": {}
                        }
                      },
                      "required": [
                        "code",
                        "message"
                      ],
                      "description": "What went wrong",
                      "x-lobbe-description-fa": "چه چیزی درست پیش نرفت"
                    }
                  },
                  "required": [
                    "error"
                  ],
                  "description": "An error",
                  "x-lobbe-description-fa": "یک خطا"
                }
              }
            }
          }
        }
      }
    },
    "/series/readable": {
      "get": {
        "operationId": "listReadableSeries",
        "summary": "The series you own or joined",
        "x-lobbe-summary-fa": "سری‌هایی که ساخته‌اید یا عضوشان هستید",
        "x-lobbe-scopes": [
          "series:read"
        ],
        "x-lobbe-spends": false,
        "x-lobbe-rate-limit": {
          "class": "read",
          "requests": 600,
          "windowSeconds": 600
        },
        "parameters": [],
        "responses": {
          "200": {
            "description": "The series you own or joined",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "schemaVersion": {
                      "type": "number",
                      "const": 1,
                      "description": "Always `1` within API v1",
                      "x-lobbe-description-fa": "در نسخهٔ ۱ API همیشه `1`"
                    },
                    "items": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "description": "The series' id, as `seriesId` takes it",
                            "x-lobbe-description-fa": "شناسهٔ سری، همان‌که `seriesId` می‌گیرد"
                          },
                          "name": {
                            "type": "string",
                            "description": "The series' name",
                            "x-lobbe-description-fa": "نام سری"
                          },
                          "role": {
                            "type": "string",
                            "enum": [
                              "owner",
                              "member"
                            ],
                            "description": "`owner` when you made the series; `member` when you joined it",
                            "x-lobbe-description-fa": "اگر سری را خودتان ساخته باشید `owner`؛ اگر عضوش باشید `member`"
                          },
                          "meetingCount": {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991,
                            "description": "How many finished meetings `meetingsUrl` lists for you right now",
                            "x-lobbe-description-fa": "شمار جلسه‌های آماده‌ای که `meetingsUrl` همین حالا برای شما فهرست می‌کند"
                          },
                          "url": {
                            "type": "string",
                            "format": "uri",
                            "description": "The series' page in the web app",
                            "x-lobbe-description-fa": "صفحهٔ سری در برنامهٔ وب"
                          },
                          "meetingsUrl": {
                            "type": "string",
                            "format": "uri",
                            "description": "GET it with the same token for the series' finished meetings (`listReadyRecordings` with `seriesId`)",
                            "x-lobbe-description-fa": "با درخواست `GET` و همین توکن، جلسه‌های آمادهٔ سری را بگیرید (`listReadyRecordings` با `seriesId`)"
                          }
                        },
                        "required": [
                          "id",
                          "name",
                          "role",
                          "meetingCount",
                          "url",
                          "meetingsUrl"
                        ]
                      },
                      "description": "The series",
                      "x-lobbe-description-fa": "سری‌ها"
                    }
                  },
                  "required": [
                    "schemaVersion",
                    "items"
                  ],
                  "description": "The series you own, then the ones you joined, each group by name; empty while series are switched off",
                  "x-lobbe-description-fa": "سری‌هایی که ساخته‌اید و سپس سری‌هایی که عضوشان هستید، هر گروه به ترتیب نام؛ تا وقتی سری‌ها خاموش باشند خالی است"
                }
              }
            }
          },
          "default": {
            "description": "An error. `error.code` is the contract; `message` may change.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "object",
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "The error's code: stable, the part to branch on",
                          "x-lobbe-description-fa": "کد خطا: ثابت می‌ماند و برنامهٔ شما باید بر اساس همین تصمیم بگیرد"
                        },
                        "message": {
                          "type": "string",
                          "description": "A human-readable explanation; its wording may change",
                          "x-lobbe-description-fa": "توضیحی خواندنی برای انسان؛ متن آن ممکن است تغییر کند"
                        },
                        "details": {
                          "description": "Extra facts some codes carry, e.g. `requiredMinutes` with `INSUFFICIENT_MINUTES`; absent otherwise",
                          "x-lobbe-description-fa": "اطلاعات بیشتری که بعضی کدها همراه دارند، مثلاً `requiredMinutes` همراه `INSUFFICIENT_MINUTES`؛ در غیر این صورت نمی‌آید",
                          "type": "object",
                          "propertyNames": {
                            "type": "string"
                          },
                          "additionalProperties": {}
                        }
                      },
                      "required": [
                        "code",
                        "message"
                      ],
                      "description": "What went wrong",
                      "x-lobbe-description-fa": "چه چیزی درست پیش نرفت"
                    }
                  },
                  "required": [
                    "error"
                  ],
                  "description": "An error",
                  "x-lobbe-description-fa": "یک خطا"
                }
              }
            }
          }
        }
      }
    },
    "/series/{id}": {
      "get": {
        "operationId": "getSeries",
        "summary": "One series you own or joined: its name, its defaults and how many finished meetings it holds",
        "x-lobbe-summary-fa": "یک سری که ساخته‌اید یا عضو آن هستید: نام، پیش‌فرض‌ها و شمار جلسه‌های آمادهٔ آن",
        "x-lobbe-scopes": [
          "series:read"
        ],
        "x-lobbe-spends": false,
        "x-lobbe-rate-limit": {
          "class": "read",
          "requests": 600,
          "windowSeconds": 600
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The series' id",
            "x-lobbe-description-fa": "شناسهٔ سری",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "One series you own or joined: its name, its defaults and how many finished meetings it holds",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "schemaVersion": {
                      "type": "number",
                      "const": 1,
                      "description": "Always `1` within API v1",
                      "x-lobbe-description-fa": "در نسخهٔ ۱ API همیشه `1`"
                    },
                    "series": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "The series' id, as `seriesId` takes it",
                          "x-lobbe-description-fa": "شناسهٔ سری، همان‌که `seriesId` می‌گیرد"
                        },
                        "name": {
                          "type": "string",
                          "description": "The series' name",
                          "x-lobbe-description-fa": "نام سری"
                        },
                        "access": {
                          "type": "string",
                          "enum": [
                            "owner",
                            "member"
                          ],
                          "description": "`owner` when you made the series; `member` when you joined it",
                          "x-lobbe-description-fa": "اگر سری را خودتان ساخته باشید `owner`؛ اگر عضوش باشید `member`"
                        },
                        "defaultKind": {
                          "type": "string",
                          "enum": [
                            "MEETING",
                            "LECTURE",
                            "INTERVIEW",
                            "VOICE_MEMO",
                            "CALL"
                          ],
                          "description": "The kind of recording, which picks the Lobbe's template: `MEETING`, `LECTURE`, `INTERVIEW`, `VOICE_MEMO` or `CALL`",
                          "x-lobbe-description-fa": "نوع ضبط، که قالب لُب را تعیین می‌کند: `MEETING`، `LECTURE`، `INTERVIEW`، `VOICE_MEMO` یا `CALL`"
                        },
                        "defaultOutputLanguage": {
                          "type": "string",
                          "enum": [
                            "MATCH",
                            "FA",
                            "EN"
                          ],
                          "description": "A Lobbe language: `MATCH` (the meeting's own), `FA` or `EN`",
                          "x-lobbe-description-fa": "زبان لُب: `MATCH` (مطابق جلسه)، `FA` یا `EN`"
                        },
                        "titleStyle": {
                          "type": "string",
                          "enum": [
                            "SESSION",
                            "TOPIC"
                          ],
                          "description": "How the series' meetings are titled: `SESSION` (\"Series name + date\": the series' name and the meeting's date, with the meeting's own title beneath) or `TOPIC` (\"Each meeting's topic\": its own title)",
                          "x-lobbe-description-fa": "شیوهٔ عنوان جلسه‌های سری: `SESSION` («نام سری + تاریخ»: نام سری و تاریخ جلسه، با عنوان خود جلسه زیر آن) یا `TOPIC` («موضوع هر جلسه»: عنوان خود جلسه)"
                        },
                        "dateCalendar": {
                          "type": "string",
                          "enum": [
                            "AUTO",
                            "JALALI",
                            "GREGORIAN"
                          ],
                          "description": "The calendar of the date in a `SESSION` title: `AUTO` (by the Lobbe's language: Solar Hijri for Persian, Gregorian for English), `JALALI` (Solar Hijri) or `GREGORIAN`",
                          "x-lobbe-description-fa": "تقویم تاریخ در عنوان `SESSION`: `AUTO` (بر اساس زبان لُب: شمسی برای فارسی، میلادی برای انگلیسی)، `JALALI` (شمسی) یا `GREGORIAN` (میلادی)"
                        },
                        "meetingCount": {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 9007199254740991,
                          "description": "How many finished meetings of the series you can read: the ones `listReadyRecordings` with `seriesId` lists",
                          "x-lobbe-description-fa": "شمار جلسه‌های آماده‌ای از سری که می‌توانید بخوانید: همان‌هایی که `listReadyRecordings` با `seriesId` فهرست می‌کند"
                        },
                        "lastRecordedAt": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "When the newest of those meetings happened (ISO 8601, UTC); null when there is none",
                          "x-lobbe-description-fa": "زمان برگزاری تازه‌ترینِ همان جلسه‌ها (`ISO 8601`، به وقت UTC)؛ اگر جلسه‌ای نباشد `null` است"
                        }
                      },
                      "required": [
                        "id",
                        "name",
                        "access",
                        "defaultKind",
                        "defaultOutputLanguage",
                        "titleStyle",
                        "dateCalendar",
                        "meetingCount",
                        "lastRecordedAt"
                      ],
                      "description": "The series. `defaultKind` and `defaultOutputLanguage` are what the app's \"Lobbe settings\" start with for a meeting filed in it; `submitRecording` does not read them",
                      "x-lobbe-description-fa": "سری. `defaultKind` و `defaultOutputLanguage` همان چیزی است که «تنظیمات لُب» در برنامه برای جلسه‌ای در این سری با آن شروع می‌کند؛ `submitRecording` آن‌ها را نمی‌خواند"
                    }
                  },
                  "required": [
                    "schemaVersion",
                    "series"
                  ],
                  "description": "One series",
                  "x-lobbe-description-fa": "یک سری"
                }
              }
            }
          },
          "default": {
            "description": "An error. `error.code` is the contract; `message` may change.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "object",
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "The error's code: stable, the part to branch on",
                          "x-lobbe-description-fa": "کد خطا: ثابت می‌ماند و برنامهٔ شما باید بر اساس همین تصمیم بگیرد"
                        },
                        "message": {
                          "type": "string",
                          "description": "A human-readable explanation; its wording may change",
                          "x-lobbe-description-fa": "توضیحی خواندنی برای انسان؛ متن آن ممکن است تغییر کند"
                        },
                        "details": {
                          "description": "Extra facts some codes carry, e.g. `requiredMinutes` with `INSUFFICIENT_MINUTES`; absent otherwise",
                          "x-lobbe-description-fa": "اطلاعات بیشتری که بعضی کدها همراه دارند، مثلاً `requiredMinutes` همراه `INSUFFICIENT_MINUTES`؛ در غیر این صورت نمی‌آید",
                          "type": "object",
                          "propertyNames": {
                            "type": "string"
                          },
                          "additionalProperties": {}
                        }
                      },
                      "required": [
                        "code",
                        "message"
                      ],
                      "description": "What went wrong",
                      "x-lobbe-description-fa": "چه چیزی درست پیش نرفت"
                    }
                  },
                  "required": [
                    "error"
                  ],
                  "description": "An error",
                  "x-lobbe-description-fa": "یک خطا"
                }
              }
            }
          }
        }
      },
      "patch": {
        "operationId": "updateSeries",
        "summary": "Change a series you own: its name, type and default language, title style or calendar",
        "x-lobbe-summary-fa": "تغییر سری‌ای که ساخته‌اید: نام، نوع سری و زبان پیش‌فرض، شیوهٔ عنوان یا تقویم آن",
        "x-lobbe-scopes": [
          "series:write"
        ],
        "x-lobbe-spends": false,
        "x-lobbe-rate-limit": {
          "class": "settings",
          "requests": 60,
          "windowSeconds": 600
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The series' id",
            "x-lobbe-description-fa": "شناسهٔ سری",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "description": "One line: whitespace runs (line breaks and tabs included) collapse to a single space and the ends are trimmed, then 1–60 characters; any other control character is refused",
                    "x-lobbe-description-fa": "یک خط: هر رشته از فاصله‌ها (از جمله شکست خط و تب) به یک فاصله تبدیل و دو سر آن پیراسته می‌شود، سپس ۱ تا ۶۰ نویسه؛ هر نویسهٔ کنترلی دیگری پذیرفته نمی‌شود",
                    "type": "string"
                  },
                  "defaultKind": {
                    "description": "The kind the app's \"Lobbe settings\" start with for a meeting filed in the series: `MEETING`, `LECTURE`, `INTERVIEW`, `VOICE_MEMO` or `CALL`",
                    "x-lobbe-description-fa": "نوعی که «تنظیمات لُب» در برنامه برای جلسه‌ای در این سری با آن شروع می‌کند: `MEETING`، `LECTURE`، `INTERVIEW`، `VOICE_MEMO` یا `CALL`",
                    "type": "string",
                    "enum": [
                      "MEETING",
                      "LECTURE",
                      "INTERVIEW",
                      "VOICE_MEMO",
                      "CALL"
                    ]
                  },
                  "defaultOutputLanguage": {
                    "description": "The Lobbe language the app's \"Lobbe settings\" start with for a meeting filed in the series: `MATCH` (the meeting's own), `FA` or `EN`",
                    "x-lobbe-description-fa": "زبان لُب که «تنظیمات لُب» در برنامه برای جلسه‌ای در این سری با آن شروع می‌کند: `MATCH` (مطابق جلسه)، `FA` یا `EN`",
                    "type": "string",
                    "enum": [
                      "MATCH",
                      "FA",
                      "EN"
                    ]
                  },
                  "titleStyle": {
                    "description": "How the series' meetings are titled: `SESSION` (\"Series name + date\": the series' name and the meeting's date, with the meeting's own title beneath) or `TOPIC` (\"Each meeting's topic\": its own title)",
                    "x-lobbe-description-fa": "شیوهٔ عنوان جلسه‌های سری: `SESSION` («نام سری + تاریخ»: نام سری و تاریخ جلسه، با عنوان خود جلسه زیر آن) یا `TOPIC` («موضوع هر جلسه»: عنوان خود جلسه)",
                    "type": "string",
                    "enum": [
                      "SESSION",
                      "TOPIC"
                    ]
                  },
                  "dateCalendar": {
                    "description": "The calendar of the date in a `SESSION` title: `AUTO` (by the Lobbe's language: Solar Hijri for Persian, Gregorian for English), `JALALI` (Solar Hijri) or `GREGORIAN`",
                    "x-lobbe-description-fa": "تقویم تاریخ در عنوان `SESSION`: `AUTO` (بر اساس زبان لُب: شمسی برای فارسی، میلادی برای انگلیسی)، `JALALI` (شمسی) یا `GREGORIAN` (میلادی)",
                    "type": "string",
                    "enum": [
                      "AUTO",
                      "JALALI",
                      "GREGORIAN"
                    ]
                  }
                },
                "additionalProperties": false,
                "description": "The fields to change, at least one; a field you leave out keeps its value. Owner only: a series that isn't yours is a `404`. A name one of your series already has (ignoring case) is `409 SERIES_NAME_TAKEN`",
                "x-lobbe-description-fa": "فیلدهایی که تغییر می‌کنند، دست‌کم یکی؛ فیلدی که نفرستید مقدارش را نگه می‌دارد. فقط برای سازندهٔ سری: سری‌ای که مال شما نیست پاسخ `404` می‌گیرد. نامی که یکی از سری‌های شما از قبل دارد (بدون توجه به بزرگی و کوچکی حروف) پاسخ `409 SERIES_NAME_TAKEN` می‌گیرد",
                "minProperties": 1
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Change a series you own: its name, type and default language, title style or calendar",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "schemaVersion": {
                      "type": "number",
                      "const": 1,
                      "description": "Always `1` within API v1",
                      "x-lobbe-description-fa": "در نسخهٔ ۱ API همیشه `1`"
                    },
                    "series": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "The series' id, as `seriesId` takes it",
                          "x-lobbe-description-fa": "شناسهٔ سری، همان‌که `seriesId` می‌گیرد"
                        },
                        "name": {
                          "type": "string",
                          "description": "The series' name",
                          "x-lobbe-description-fa": "نام سری"
                        },
                        "access": {
                          "type": "string",
                          "enum": [
                            "owner",
                            "member"
                          ],
                          "description": "`owner` when you made the series; `member` when you joined it",
                          "x-lobbe-description-fa": "اگر سری را خودتان ساخته باشید `owner`؛ اگر عضوش باشید `member`"
                        },
                        "defaultKind": {
                          "type": "string",
                          "enum": [
                            "MEETING",
                            "LECTURE",
                            "INTERVIEW",
                            "VOICE_MEMO",
                            "CALL"
                          ],
                          "description": "The kind of recording, which picks the Lobbe's template: `MEETING`, `LECTURE`, `INTERVIEW`, `VOICE_MEMO` or `CALL`",
                          "x-lobbe-description-fa": "نوع ضبط، که قالب لُب را تعیین می‌کند: `MEETING`، `LECTURE`، `INTERVIEW`، `VOICE_MEMO` یا `CALL`"
                        },
                        "defaultOutputLanguage": {
                          "type": "string",
                          "enum": [
                            "MATCH",
                            "FA",
                            "EN"
                          ],
                          "description": "A Lobbe language: `MATCH` (the meeting's own), `FA` or `EN`",
                          "x-lobbe-description-fa": "زبان لُب: `MATCH` (مطابق جلسه)، `FA` یا `EN`"
                        },
                        "titleStyle": {
                          "type": "string",
                          "enum": [
                            "SESSION",
                            "TOPIC"
                          ],
                          "description": "How the series' meetings are titled: `SESSION` (\"Series name + date\": the series' name and the meeting's date, with the meeting's own title beneath) or `TOPIC` (\"Each meeting's topic\": its own title)",
                          "x-lobbe-description-fa": "شیوهٔ عنوان جلسه‌های سری: `SESSION` («نام سری + تاریخ»: نام سری و تاریخ جلسه، با عنوان خود جلسه زیر آن) یا `TOPIC` («موضوع هر جلسه»: عنوان خود جلسه)"
                        },
                        "dateCalendar": {
                          "type": "string",
                          "enum": [
                            "AUTO",
                            "JALALI",
                            "GREGORIAN"
                          ],
                          "description": "The calendar of the date in a `SESSION` title: `AUTO` (by the Lobbe's language: Solar Hijri for Persian, Gregorian for English), `JALALI` (Solar Hijri) or `GREGORIAN`",
                          "x-lobbe-description-fa": "تقویم تاریخ در عنوان `SESSION`: `AUTO` (بر اساس زبان لُب: شمسی برای فارسی، میلادی برای انگلیسی)، `JALALI` (شمسی) یا `GREGORIAN` (میلادی)"
                        },
                        "meetingCount": {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 9007199254740991,
                          "description": "How many finished meetings of the series you can read: the ones `listReadyRecordings` with `seriesId` lists",
                          "x-lobbe-description-fa": "شمار جلسه‌های آماده‌ای از سری که می‌توانید بخوانید: همان‌هایی که `listReadyRecordings` با `seriesId` فهرست می‌کند"
                        },
                        "lastRecordedAt": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "When the newest of those meetings happened (ISO 8601, UTC); null when there is none",
                          "x-lobbe-description-fa": "زمان برگزاری تازه‌ترینِ همان جلسه‌ها (`ISO 8601`، به وقت UTC)؛ اگر جلسه‌ای نباشد `null` است"
                        }
                      },
                      "required": [
                        "id",
                        "name",
                        "access",
                        "defaultKind",
                        "defaultOutputLanguage",
                        "titleStyle",
                        "dateCalendar",
                        "meetingCount",
                        "lastRecordedAt"
                      ],
                      "description": "The series. `defaultKind` and `defaultOutputLanguage` are what the app's \"Lobbe settings\" start with for a meeting filed in it; `submitRecording` does not read them",
                      "x-lobbe-description-fa": "سری. `defaultKind` و `defaultOutputLanguage` همان چیزی است که «تنظیمات لُب» در برنامه برای جلسه‌ای در این سری با آن شروع می‌کند؛ `submitRecording` آن‌ها را نمی‌خواند"
                    }
                  },
                  "required": [
                    "schemaVersion",
                    "series"
                  ],
                  "description": "One series",
                  "x-lobbe-description-fa": "یک سری"
                }
              }
            }
          },
          "default": {
            "description": "An error. `error.code` is the contract; `message` may change.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "object",
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "The error's code: stable, the part to branch on",
                          "x-lobbe-description-fa": "کد خطا: ثابت می‌ماند و برنامهٔ شما باید بر اساس همین تصمیم بگیرد"
                        },
                        "message": {
                          "type": "string",
                          "description": "A human-readable explanation; its wording may change",
                          "x-lobbe-description-fa": "توضیحی خواندنی برای انسان؛ متن آن ممکن است تغییر کند"
                        },
                        "details": {
                          "description": "Extra facts some codes carry, e.g. `requiredMinutes` with `INSUFFICIENT_MINUTES`; absent otherwise",
                          "x-lobbe-description-fa": "اطلاعات بیشتری که بعضی کدها همراه دارند، مثلاً `requiredMinutes` همراه `INSUFFICIENT_MINUTES`؛ در غیر این صورت نمی‌آید",
                          "type": "object",
                          "propertyNames": {
                            "type": "string"
                          },
                          "additionalProperties": {}
                        }
                      },
                      "required": [
                        "code",
                        "message"
                      ],
                      "description": "What went wrong",
                      "x-lobbe-description-fa": "چه چیزی درست پیش نرفت"
                    }
                  },
                  "required": [
                    "error"
                  ],
                  "description": "An error",
                  "x-lobbe-description-fa": "یک خطا"
                }
              }
            }
          }
        }
      }
    },
    "/series": {
      "post": {
        "operationId": "createSeries",
        "summary": "Create a series: its name, type and default language, title style and calendar",
        "x-lobbe-summary-fa": "ساختن یک سری: نام، نوع سری و زبان پیش‌فرض، شیوهٔ عنوان و تقویم آن",
        "x-lobbe-scopes": [
          "series:write"
        ],
        "x-lobbe-spends": false,
        "x-lobbe-rate-limit": {
          "class": "settings",
          "requests": 60,
          "windowSeconds": 600
        },
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "description": "One line: whitespace runs (line breaks and tabs included) collapse to a single space and the ends are trimmed, then 1–60 characters; any other control character is refused",
                    "x-lobbe-description-fa": "یک خط: هر رشته از فاصله‌ها (از جمله شکست خط و تب) به یک فاصله تبدیل و دو سر آن پیراسته می‌شود، سپس ۱ تا ۶۰ نویسه؛ هر نویسهٔ کنترلی دیگری پذیرفته نمی‌شود",
                    "type": "string"
                  },
                  "defaultKind": {
                    "default": "MEETING",
                    "description": "The kind the app's \"Lobbe settings\" start with for a meeting filed in the series: `MEETING`, `LECTURE`, `INTERVIEW`, `VOICE_MEMO` or `CALL` (default `MEETING`)",
                    "x-lobbe-description-fa": "نوعی که «تنظیمات لُب» در برنامه برای جلسه‌ای در این سری با آن شروع می‌کند: `MEETING`، `LECTURE`، `INTERVIEW`، `VOICE_MEMO` یا `CALL` (پیش‌فرض `MEETING`)",
                    "type": "string",
                    "enum": [
                      "MEETING",
                      "LECTURE",
                      "INTERVIEW",
                      "VOICE_MEMO",
                      "CALL"
                    ]
                  },
                  "defaultOutputLanguage": {
                    "default": "MATCH",
                    "description": "The Lobbe language the app's \"Lobbe settings\" start with for a meeting filed in the series: `MATCH` (the meeting's own), `FA` or `EN` (default `MATCH`)",
                    "x-lobbe-description-fa": "زبان لُب که «تنظیمات لُب» در برنامه برای جلسه‌ای در این سری با آن شروع می‌کند: `MATCH` (مطابق جلسه)، `FA` یا `EN` (پیش‌فرض `MATCH`)",
                    "type": "string",
                    "enum": [
                      "MATCH",
                      "FA",
                      "EN"
                    ]
                  },
                  "titleStyle": {
                    "default": "SESSION",
                    "description": "How the series' meetings are titled: `SESSION` (\"Series name + date\": the series' name and the meeting's date, with the meeting's own title beneath) or `TOPIC` (\"Each meeting's topic\": its own title) (default `SESSION`)",
                    "x-lobbe-description-fa": "شیوهٔ عنوان جلسه‌های سری: `SESSION` («نام سری + تاریخ»: نام سری و تاریخ جلسه، با عنوان خود جلسه زیر آن) یا `TOPIC` («موضوع هر جلسه»: عنوان خود جلسه) (پیش‌فرض `SESSION`)",
                    "type": "string",
                    "enum": [
                      "SESSION",
                      "TOPIC"
                    ]
                  },
                  "dateCalendar": {
                    "default": "AUTO",
                    "description": "The calendar of the date in a `SESSION` title: `AUTO` (by the Lobbe's language: Solar Hijri for Persian, Gregorian for English), `JALALI` (Solar Hijri) or `GREGORIAN` (default `AUTO`)",
                    "x-lobbe-description-fa": "تقویم تاریخ در عنوان `SESSION`: `AUTO` (بر اساس زبان لُب: شمسی برای فارسی، میلادی برای انگلیسی)، `JALALI` (شمسی) یا `GREGORIAN` (میلادی) (پیش‌فرض `AUTO`)",
                    "type": "string",
                    "enum": [
                      "AUTO",
                      "JALALI",
                      "GREGORIAN"
                    ]
                  }
                },
                "required": [
                  "name"
                ],
                "additionalProperties": false,
                "description": "A new series; only `name` is required. A name one of your series already has (ignoring case) is `409 SERIES_NAME_TAKEN`, and an account that already owns 50 series gets `409 SERIES_LIMIT`",
                "x-lobbe-description-fa": "یک سری تازه؛ فقط `name` لازم است. نامی که یکی از سری‌های شما از قبل دارد (بدون توجه به بزرگی و کوچکی حروف) پاسخ `409 SERIES_NAME_TAKEN` می‌گیرد، و حسابی که از قبل ۵۰ سری ساخته است پاسخ `409 SERIES_LIMIT` می‌گیرد"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Create a series: its name, type and default language, title style and calendar",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "schemaVersion": {
                      "type": "number",
                      "const": 1,
                      "description": "Always `1` within API v1",
                      "x-lobbe-description-fa": "در نسخهٔ ۱ API همیشه `1`"
                    },
                    "series": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "The series' id, as `seriesId` takes it",
                          "x-lobbe-description-fa": "شناسهٔ سری، همان‌که `seriesId` می‌گیرد"
                        },
                        "name": {
                          "type": "string",
                          "description": "The series' name",
                          "x-lobbe-description-fa": "نام سری"
                        },
                        "access": {
                          "type": "string",
                          "enum": [
                            "owner",
                            "member"
                          ],
                          "description": "`owner` when you made the series; `member` when you joined it",
                          "x-lobbe-description-fa": "اگر سری را خودتان ساخته باشید `owner`؛ اگر عضوش باشید `member`"
                        },
                        "defaultKind": {
                          "type": "string",
                          "enum": [
                            "MEETING",
                            "LECTURE",
                            "INTERVIEW",
                            "VOICE_MEMO",
                            "CALL"
                          ],
                          "description": "The kind of recording, which picks the Lobbe's template: `MEETING`, `LECTURE`, `INTERVIEW`, `VOICE_MEMO` or `CALL`",
                          "x-lobbe-description-fa": "نوع ضبط، که قالب لُب را تعیین می‌کند: `MEETING`، `LECTURE`، `INTERVIEW`، `VOICE_MEMO` یا `CALL`"
                        },
                        "defaultOutputLanguage": {
                          "type": "string",
                          "enum": [
                            "MATCH",
                            "FA",
                            "EN"
                          ],
                          "description": "A Lobbe language: `MATCH` (the meeting's own), `FA` or `EN`",
                          "x-lobbe-description-fa": "زبان لُب: `MATCH` (مطابق جلسه)، `FA` یا `EN`"
                        },
                        "titleStyle": {
                          "type": "string",
                          "enum": [
                            "SESSION",
                            "TOPIC"
                          ],
                          "description": "How the series' meetings are titled: `SESSION` (\"Series name + date\": the series' name and the meeting's date, with the meeting's own title beneath) or `TOPIC` (\"Each meeting's topic\": its own title)",
                          "x-lobbe-description-fa": "شیوهٔ عنوان جلسه‌های سری: `SESSION` («نام سری + تاریخ»: نام سری و تاریخ جلسه، با عنوان خود جلسه زیر آن) یا `TOPIC` («موضوع هر جلسه»: عنوان خود جلسه)"
                        },
                        "dateCalendar": {
                          "type": "string",
                          "enum": [
                            "AUTO",
                            "JALALI",
                            "GREGORIAN"
                          ],
                          "description": "The calendar of the date in a `SESSION` title: `AUTO` (by the Lobbe's language: Solar Hijri for Persian, Gregorian for English), `JALALI` (Solar Hijri) or `GREGORIAN`",
                          "x-lobbe-description-fa": "تقویم تاریخ در عنوان `SESSION`: `AUTO` (بر اساس زبان لُب: شمسی برای فارسی، میلادی برای انگلیسی)، `JALALI` (شمسی) یا `GREGORIAN` (میلادی)"
                        },
                        "meetingCount": {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 9007199254740991,
                          "description": "How many finished meetings of the series you can read: the ones `listReadyRecordings` with `seriesId` lists",
                          "x-lobbe-description-fa": "شمار جلسه‌های آماده‌ای از سری که می‌توانید بخوانید: همان‌هایی که `listReadyRecordings` با `seriesId` فهرست می‌کند"
                        },
                        "lastRecordedAt": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "When the newest of those meetings happened (ISO 8601, UTC); null when there is none",
                          "x-lobbe-description-fa": "زمان برگزاری تازه‌ترینِ همان جلسه‌ها (`ISO 8601`، به وقت UTC)؛ اگر جلسه‌ای نباشد `null` است"
                        }
                      },
                      "required": [
                        "id",
                        "name",
                        "access",
                        "defaultKind",
                        "defaultOutputLanguage",
                        "titleStyle",
                        "dateCalendar",
                        "meetingCount",
                        "lastRecordedAt"
                      ],
                      "description": "The series. `defaultKind` and `defaultOutputLanguage` are what the app's \"Lobbe settings\" start with for a meeting filed in it; `submitRecording` does not read them",
                      "x-lobbe-description-fa": "سری. `defaultKind` و `defaultOutputLanguage` همان چیزی است که «تنظیمات لُب» در برنامه برای جلسه‌ای در این سری با آن شروع می‌کند؛ `submitRecording` آن‌ها را نمی‌خواند"
                    }
                  },
                  "required": [
                    "schemaVersion",
                    "series"
                  ],
                  "description": "One series",
                  "x-lobbe-description-fa": "یک سری"
                }
              }
            }
          },
          "default": {
            "description": "An error. `error.code` is the contract; `message` may change.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "object",
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "The error's code: stable, the part to branch on",
                          "x-lobbe-description-fa": "کد خطا: ثابت می‌ماند و برنامهٔ شما باید بر اساس همین تصمیم بگیرد"
                        },
                        "message": {
                          "type": "string",
                          "description": "A human-readable explanation; its wording may change",
                          "x-lobbe-description-fa": "توضیحی خواندنی برای انسان؛ متن آن ممکن است تغییر کند"
                        },
                        "details": {
                          "description": "Extra facts some codes carry, e.g. `requiredMinutes` with `INSUFFICIENT_MINUTES`; absent otherwise",
                          "x-lobbe-description-fa": "اطلاعات بیشتری که بعضی کدها همراه دارند، مثلاً `requiredMinutes` همراه `INSUFFICIENT_MINUTES`؛ در غیر این صورت نمی‌آید",
                          "type": "object",
                          "propertyNames": {
                            "type": "string"
                          },
                          "additionalProperties": {}
                        }
                      },
                      "required": [
                        "code",
                        "message"
                      ],
                      "description": "What went wrong",
                      "x-lobbe-description-fa": "چه چیزی درست پیش نرفت"
                    }
                  },
                  "required": [
                    "error"
                  ],
                  "description": "An error",
                  "x-lobbe-description-fa": "یک خطا"
                }
              }
            }
          }
        }
      }
    },
    "/series/{id}/keyterms": {
      "get": {
        "operationId": "getSeriesKeyterms",
        "summary": "A series' vocabulary (owner only), and whether the account's vocabulary applies too",
        "x-lobbe-summary-fa": "واژگان یک سری (فقط برای سازندهٔ آن) و این‌که واژگان حساب هم به کار می‌رود یا نه",
        "x-lobbe-scopes": [
          "series:read"
        ],
        "x-lobbe-spends": false,
        "x-lobbe-rate-limit": {
          "class": "read",
          "requests": 600,
          "windowSeconds": 600
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The series' id",
            "x-lobbe-description-fa": "شناسهٔ سری",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A series' vocabulary (owner only), and whether the account's vocabulary applies too",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "schemaVersion": {
                      "type": "number",
                      "const": 1,
                      "description": "Always `1` within API v1",
                      "x-lobbe-description-fa": "در نسخهٔ ۱ API همیشه `1`"
                    },
                    "keyterms": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "The series' own terms, in their saved order (at most 100); a meeting filed in the series is transcribed with them first",
                      "x-lobbe-description-fa": "واژه‌های خود سری، به ترتیبی که ذخیره شده‌اند (حداکثر ۱۰۰)؛ رونوشت جلسه‌ای که در این سری باشد پیش از همه با این واژه‌ها ساخته می‌شود"
                    },
                    "inheritAccountKeyterms": {
                      "type": "boolean",
                      "description": "Whether the account's vocabulary is used too, after the series' words and up to 100 terms in all; account terms that don't fit are left off the end of its list (the app's \"Also use my vocabulary\")",
                      "x-lobbe-description-fa": "این‌که واژگان حساب هم پس از واژه‌های سری به کار برود یا نه، تا سقف ۱۰۰ واژه در مجموع؛ واژه‌هایی از حساب که جا نشوند از انتهای فهرست آن کنار می‌مانند («واژگان من هم به کار برود» در برنامه)"
                    }
                  },
                  "required": [
                    "schemaVersion",
                    "keyterms",
                    "inheritAccountKeyterms"
                  ],
                  "description": "The series' vocabulary. Owner only: a series that isn't yours is a `404`",
                  "x-lobbe-description-fa": "واژگان سری. فقط برای سازندهٔ سری: سری‌ای که مال شما نیست پاسخ `404` می‌گیرد"
                }
              }
            }
          },
          "default": {
            "description": "An error. `error.code` is the contract; `message` may change.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "object",
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "The error's code: stable, the part to branch on",
                          "x-lobbe-description-fa": "کد خطا: ثابت می‌ماند و برنامهٔ شما باید بر اساس همین تصمیم بگیرد"
                        },
                        "message": {
                          "type": "string",
                          "description": "A human-readable explanation; its wording may change",
                          "x-lobbe-description-fa": "توضیحی خواندنی برای انسان؛ متن آن ممکن است تغییر کند"
                        },
                        "details": {
                          "description": "Extra facts some codes carry, e.g. `requiredMinutes` with `INSUFFICIENT_MINUTES`; absent otherwise",
                          "x-lobbe-description-fa": "اطلاعات بیشتری که بعضی کدها همراه دارند، مثلاً `requiredMinutes` همراه `INSUFFICIENT_MINUTES`؛ در غیر این صورت نمی‌آید",
                          "type": "object",
                          "propertyNames": {
                            "type": "string"
                          },
                          "additionalProperties": {}
                        }
                      },
                      "required": [
                        "code",
                        "message"
                      ],
                      "description": "What went wrong",
                      "x-lobbe-description-fa": "چه چیزی درست پیش نرفت"
                    }
                  },
                  "required": [
                    "error"
                  ],
                  "description": "An error",
                  "x-lobbe-description-fa": "یک خطا"
                }
              }
            }
          }
        }
      },
      "put": {
        "operationId": "replaceSeriesKeyterms",
        "summary": "Replace a series' vocabulary (owner only); a meeting that uses vocabulary carries its surcharge",
        "x-lobbe-summary-fa": "جایگزینی واژگان یک سری (فقط برای سازندهٔ آن)؛ جلسه‌ای که از واژگان استفاده کند هزینهٔ افزودهٔ آن را دارد",
        "x-lobbe-scopes": [
          "series:write"
        ],
        "x-lobbe-spends": false,
        "x-lobbe-rate-limit": {
          "class": "settings",
          "requests": 60,
          "windowSeconds": 600
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The series' id",
            "x-lobbe-description-fa": "شناسهٔ سری",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "keyterms": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "The whole new list. Each term is trimmed and its runs of spaces collapse to one; then at most 100 terms, each 1–49 characters and at most 5 words, none containing `<`, `>`, `{`, `}`, `[`, `]` or `\\`, and no term twice. A list that breaks a rule is a `400` whose message names the first problem",
                    "x-lobbe-description-fa": "کل فهرست تازه. دو سر هر واژه پیراسته و هر رشته از فاصله‌هایش به یک فاصله تبدیل می‌شود؛ سپس حداکثر ۱۰۰ واژه، هر کدام ۱ تا ۴۹ نویسه و حداکثر ۵ کلمه که شامل هیچ‌یک از نویسه‌های `<`، `>`، `{`، `}`، `[`، `]` یا `\\` نباشد، و بدون واژهٔ تکراری. فهرستی که یکی از این قاعده‌ها را رعایت نکند پاسخ `400` می‌گیرد و پیام آن نخستین مشکل را نام می‌برد"
                  },
                  "inheritAccountKeyterms": {
                    "type": "boolean",
                    "description": "Whether the account's vocabulary is used too, after the series' words and up to 100 terms in all; account terms that don't fit are left off the end of its list (the app's \"Also use my vocabulary\")",
                    "x-lobbe-description-fa": "این‌که واژگان حساب هم پس از واژه‌های سری به کار برود یا نه، تا سقف ۱۰۰ واژه در مجموع؛ واژه‌هایی از حساب که جا نشوند از انتهای فهرست آن کنار می‌مانند («واژگان من هم به کار برود» در برنامه)"
                  }
                },
                "required": [
                  "keyterms",
                  "inheritAccountKeyterms"
                ],
                "additionalProperties": false,
                "description": "The series' whole vocabulary, replacing the old one. A meeting keeps the words it was submitted with, and a meeting that uses any costs 20% more",
                "x-lobbe-description-fa": "کل واژگان سری، به‌جای فهرست قبلی. هر جلسه همان واژه‌هایی را نگه می‌دارد که با آن فرستاده شد، و جلسه‌ای که از واژه‌ای استفاده کند ۲۰٪ هزینهٔ بیشتر دارد"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Replace a series' vocabulary (owner only); a meeting that uses vocabulary carries its surcharge",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "schemaVersion": {
                      "type": "number",
                      "const": 1,
                      "description": "Always `1` within API v1",
                      "x-lobbe-description-fa": "در نسخهٔ ۱ API همیشه `1`"
                    },
                    "keyterms": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "The series' own terms, in their saved order (at most 100); a meeting filed in the series is transcribed with them first",
                      "x-lobbe-description-fa": "واژه‌های خود سری، به ترتیبی که ذخیره شده‌اند (حداکثر ۱۰۰)؛ رونوشت جلسه‌ای که در این سری باشد پیش از همه با این واژه‌ها ساخته می‌شود"
                    },
                    "inheritAccountKeyterms": {
                      "type": "boolean",
                      "description": "Whether the account's vocabulary is used too, after the series' words and up to 100 terms in all; account terms that don't fit are left off the end of its list (the app's \"Also use my vocabulary\")",
                      "x-lobbe-description-fa": "این‌که واژگان حساب هم پس از واژه‌های سری به کار برود یا نه، تا سقف ۱۰۰ واژه در مجموع؛ واژه‌هایی از حساب که جا نشوند از انتهای فهرست آن کنار می‌مانند («واژگان من هم به کار برود» در برنامه)"
                    }
                  },
                  "required": [
                    "schemaVersion",
                    "keyterms",
                    "inheritAccountKeyterms"
                  ],
                  "description": "The series' vocabulary. Owner only: a series that isn't yours is a `404`",
                  "x-lobbe-description-fa": "واژگان سری. فقط برای سازندهٔ سری: سری‌ای که مال شما نیست پاسخ `404` می‌گیرد"
                }
              }
            }
          },
          "default": {
            "description": "An error. `error.code` is the contract; `message` may change.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "object",
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "The error's code: stable, the part to branch on",
                          "x-lobbe-description-fa": "کد خطا: ثابت می‌ماند و برنامهٔ شما باید بر اساس همین تصمیم بگیرد"
                        },
                        "message": {
                          "type": "string",
                          "description": "A human-readable explanation; its wording may change",
                          "x-lobbe-description-fa": "توضیحی خواندنی برای انسان؛ متن آن ممکن است تغییر کند"
                        },
                        "details": {
                          "description": "Extra facts some codes carry, e.g. `requiredMinutes` with `INSUFFICIENT_MINUTES`; absent otherwise",
                          "x-lobbe-description-fa": "اطلاعات بیشتری که بعضی کدها همراه دارند، مثلاً `requiredMinutes` همراه `INSUFFICIENT_MINUTES`؛ در غیر این صورت نمی‌آید",
                          "type": "object",
                          "propertyNames": {
                            "type": "string"
                          },
                          "additionalProperties": {}
                        }
                      },
                      "required": [
                        "code",
                        "message"
                      ],
                      "description": "What went wrong",
                      "x-lobbe-description-fa": "چه چیزی درست پیش نرفت"
                    }
                  },
                  "required": [
                    "error"
                  ],
                  "description": "An error",
                  "x-lobbe-description-fa": "یک خطا"
                }
              }
            }
          }
        }
      }
    },
    "/series/{id}/ask/quote": {
      "get": {
        "operationId": "quoteSeriesAsk",
        "summary": "What asking this series a question will cost, in minutes, and over how many meetings",
        "x-lobbe-summary-fa": "هزینهٔ پرسیدن یک سؤال از این سری، به دقیقه، و این‌که چند جلسه را در بر می‌گیرد",
        "x-lobbe-scopes": [
          "series:query"
        ],
        "x-lobbe-spends": false,
        "x-lobbe-rate-limit": {
          "class": "search",
          "requests": 120,
          "windowSeconds": 600
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The series' id",
            "x-lobbe-description-fa": "شناسهٔ سری",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "What asking this series a question will cost, in minutes, and over how many meetings",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "schemaVersion": {
                      "type": "number",
                      "const": 1,
                      "description": "Always `1` within API v1",
                      "x-lobbe-description-fa": "در نسخهٔ ۱ API همیشه `1`"
                    },
                    "minutes": {
                      "type": "integer",
                      "minimum": 0,
                      "maximum": 9007199254740991,
                      "description": "The price in minutes: what `askSeries` charges, worked out the same way, so the two agree while the series' meetings are unchanged",
                      "x-lobbe-description-fa": "قیمت به دقیقه: همان هزینه‌ای که `askSeries` می‌گیرد و به همان شیوه حساب می‌شود، پس تا وقتی جلسه‌های سری تغییر نکنند این دو یکی‌اند"
                    },
                    "meetingCount": {
                      "type": "integer",
                      "minimum": 0,
                      "maximum": 9007199254740991,
                      "description": "How many finished meetings of the series the question reads: every one's Lobbe, then as many full transcripts as fit, newest first. Under 2 the quote answers `409 SERIES_ASK_TOO_FEW`",
                      "x-lobbe-description-fa": "شمار جلسه‌های آماده‌ای از سری که پرسش از آن‌ها خوانده می‌شود: لُب همهٔ آن‌ها، سپس هر چند رونوشت کامل که جا شود، از تازه‌ترین. اگر کمتر از ۲ جلسه باشد، این برآورد پاسخ `409 SERIES_ASK_TOO_FEW` می‌گیرد"
                    }
                  },
                  "required": [
                    "schemaVersion",
                    "minutes",
                    "meetingCount"
                  ],
                  "description": "What one question to this series costs; reading the quote is free",
                  "x-lobbe-description-fa": "هزینهٔ یک پرسش از این سری؛ خواندن این برآورد رایگان است"
                }
              }
            }
          },
          "default": {
            "description": "An error. `error.code` is the contract; `message` may change.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "object",
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "The error's code: stable, the part to branch on",
                          "x-lobbe-description-fa": "کد خطا: ثابت می‌ماند و برنامهٔ شما باید بر اساس همین تصمیم بگیرد"
                        },
                        "message": {
                          "type": "string",
                          "description": "A human-readable explanation; its wording may change",
                          "x-lobbe-description-fa": "توضیحی خواندنی برای انسان؛ متن آن ممکن است تغییر کند"
                        },
                        "details": {
                          "description": "Extra facts some codes carry, e.g. `requiredMinutes` with `INSUFFICIENT_MINUTES`; absent otherwise",
                          "x-lobbe-description-fa": "اطلاعات بیشتری که بعضی کدها همراه دارند، مثلاً `requiredMinutes` همراه `INSUFFICIENT_MINUTES`؛ در غیر این صورت نمی‌آید",
                          "type": "object",
                          "propertyNames": {
                            "type": "string"
                          },
                          "additionalProperties": {}
                        }
                      },
                      "required": [
                        "code",
                        "message"
                      ],
                      "description": "What went wrong",
                      "x-lobbe-description-fa": "چه چیزی درست پیش نرفت"
                    }
                  },
                  "required": [
                    "error"
                  ],
                  "description": "An error",
                  "x-lobbe-description-fa": "یک خطا"
                }
              }
            }
          }
        }
      }
    },
    "/series/{id}/ask": {
      "post": {
        "operationId": "askSeries",
        "summary": "Ask a whole series a question, answered across its finished meetings; each answer is charged",
        "x-lobbe-summary-fa": "پرسیدن یک سؤال از کل یک سری، با پاسخ از همهٔ جلسه‌های آمادهٔ آن؛ هر پاسخ هزینه دارد",
        "x-lobbe-scopes": [
          "series:query"
        ],
        "x-lobbe-spends": true,
        "x-lobbe-rate-limit": {
          "class": "ask",
          "requests": 30,
          "windowSeconds": 600
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The series' id",
            "x-lobbe-description-fa": "شناسهٔ سری",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Recommended. Make one key (8–64 characters, a random UUID say) once per new meeting or question, and send that same key unchanged on every retry of that request; never reuse it for a different request. A replay returns the original outcome and never charges twice. Keys are the owner's for good: they never expire.",
            "x-lobbe-description-fa": "پیشنهاد می‌شود. برای هر جلسه یا سؤال تازه یک بار کلیدی بسازید (۸ تا ۶۴ نویسه، مثلاً یک UUID تصادفی) و همان کلید را بی‌تغییر در هر تلاش دوبارهٔ همان درخواست بفرستید؛ هرگز آن را برای درخواست دیگری به کار نبرید. تکرار یک درخواست همان نتیجهٔ اول را برمی‌گرداند و هرگز دو بار هزینه نمی‌گیرد. کلید برای همیشه از آنِ صاحب حساب می‌ماند و هرگز منقضی نمی‌شود.",
            "schema": {
              "type": "string",
              "minLength": 8,
              "maxLength": 64
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "question": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 500,
                    "description": "The question, trimmed, 1–500 characters",
                    "x-lobbe-description-fa": "سؤال، پس از پیراستن دو سر آن، ۱ تا ۵۰۰ نویسه"
                  },
                  "maxMinutes": {
                    "description": "The most you agree to pay, in minutes (at least 1): when the price is higher, the question is refused with `409 PRICE_ABOVE_MAX` (its `details` carry `minutes` and `maxMinutes`) and nothing is charged; absent = no ceiling",
                    "x-lobbe-description-fa": "بیشترین هزینه‌ای که می‌پذیرید، به دقیقه (دست‌کم ۱): اگر قیمت بیشتر باشد، سؤال با `409 PRICE_ABOVE_MAX` رد می‌شود (`details` آن `minutes` و `maxMinutes` را دارد) و هزینه‌ای گرفته نمی‌شود؛ اگر نباشد، سقفی در کار نیست",
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 9007199254740991
                  },
                  "idempotencyKey": {
                    "description": "The idempotency key in the body, instead of the `Idempotency-Key` header (8–64 characters); the header wins when both are sent",
                    "x-lobbe-description-fa": "کلید تکرار درخواست در بدنه، به‌جای هدر `Idempotency-Key` (۸ تا ۶۴ نویسه)؛ اگر هر دو فرستاده شوند هدر ملاک است",
                    "type": "string",
                    "minLength": 8,
                    "maxLength": 64
                  }
                },
                "required": [
                  "question"
                ],
                "additionalProperties": false,
                "description": "The question, with a price ceiling if you want one",
                "x-lobbe-description-fa": "سؤال، و در صورت نیاز سقفی برای قیمت آن"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Ask a whole series a question, answered across its finished meetings; each answer is charged",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "schemaVersion": {
                      "type": "number",
                      "const": 1,
                      "description": "Always `1` within API v1",
                      "x-lobbe-description-fa": "در نسخهٔ ۱ API همیشه `1`"
                    },
                    "answer": {
                      "type": "string",
                      "description": "The answer. `[n]` marks the claim that `citations[n - 1]` supports, numbered 1, 2, … in reading order",
                      "x-lobbe-description-fa": "پاسخ. `[n]` ادعایی را نشان می‌دهد که `citations[n - 1]` پشتیبان آن است، و این نشانه‌ها به ترتیب خواندن ۱، ۲، … شماره می‌خورند"
                    },
                    "citations": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "startMs": {
                            "type": "number",
                            "minimum": 0,
                            "description": "When the cited turn starts, in milliseconds from the start of the meeting's audio",
                            "x-lobbe-description-fa": "زمان شروع نوبتِ ارجاع‌شده، به میلی‌ثانیه از ابتدای صدای جلسه"
                          },
                          "speaker": {
                            "anyOf": [
                              {
                                "type": "string"
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "description": "Who spoke it: the turn's speaker label as transcribed (e.g. `speaker_0`), never a name given to the voice; null when the turn has none",
                            "x-lobbe-description-fa": "گویندهٔ آن: برچسب گویندهٔ نوبت همان‌طور که در رونوشت آمد (مثلاً `speaker_0`)، هرگز نامی که به صدا داده شده؛ اگر نوبت گوینده‌ای نداشته باشد `null` است"
                          },
                          "recordingId": {
                            "type": "string",
                            "description": "The meeting the turn is from, one of the series' meetings",
                            "x-lobbe-description-fa": "جلسه‌ای که این نوبت از آن است، یکی از جلسه‌های سری"
                          }
                        },
                        "required": [
                          "startMs",
                          "speaker",
                          "recordingId"
                        ]
                      },
                      "description": "Where the series says it: at most 5 turns, from any of its meetings, in the order the answer first cites them",
                      "x-lobbe-description-fa": "جایی از سری که این را می‌گوید: حداکثر ۵ نوبت از هر کدام از جلسه‌هایش، به ترتیبی که پاسخ نخستین بار به آن‌ها ارجاع می‌دهد"
                    },
                    "minutes": {
                      "type": "integer",
                      "minimum": 0,
                      "maximum": 9007199254740991,
                      "description": "What this answer charged, in minutes; a refusal is charged too",
                      "x-lobbe-description-fa": "هزینه‌ای که این پاسخ گرفت، به دقیقه؛ پاسخ ردشده هم هزینه دارد"
                    },
                    "refused": {
                      "type": "boolean",
                      "description": "`true` when Lobbe declines to answer from what was said: `answer` says why, and it is still charged",
                      "x-lobbe-description-fa": "اگر لُب از روی آنچه گفته شده پاسخی ندهد `true` است: `answer` دلیلش را می‌گوید و هزینه همچنان گرفته می‌شود"
                    }
                  },
                  "required": [
                    "schemaVersion",
                    "answer",
                    "citations",
                    "minutes",
                    "refused"
                  ],
                  "description": "The answer across the series' meetings, already charged; a replay with the same idempotency key returns it again and never charges twice",
                  "x-lobbe-description-fa": "پاسخ از روی جلسه‌های سری، که هزینه‌اش گرفته شده است؛ تکرار درخواست با همان کلید همین پاسخ را برمی‌گرداند و هرگز دو بار هزینه نمی‌گیرد"
                }
              }
            }
          },
          "default": {
            "description": "An error. `error.code` is the contract; `message` may change.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "object",
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "The error's code: stable, the part to branch on",
                          "x-lobbe-description-fa": "کد خطا: ثابت می‌ماند و برنامهٔ شما باید بر اساس همین تصمیم بگیرد"
                        },
                        "message": {
                          "type": "string",
                          "description": "A human-readable explanation; its wording may change",
                          "x-lobbe-description-fa": "توضیحی خواندنی برای انسان؛ متن آن ممکن است تغییر کند"
                        },
                        "details": {
                          "description": "Extra facts some codes carry, e.g. `requiredMinutes` with `INSUFFICIENT_MINUTES`; absent otherwise",
                          "x-lobbe-description-fa": "اطلاعات بیشتری که بعضی کدها همراه دارند، مثلاً `requiredMinutes` همراه `INSUFFICIENT_MINUTES`؛ در غیر این صورت نمی‌آید",
                          "type": "object",
                          "propertyNames": {
                            "type": "string"
                          },
                          "additionalProperties": {}
                        }
                      },
                      "required": [
                        "code",
                        "message"
                      ],
                      "description": "What went wrong",
                      "x-lobbe-description-fa": "چه چیزی درست پیش نرفت"
                    }
                  },
                  "required": [
                    "error"
                  ],
                  "description": "An error",
                  "x-lobbe-description-fa": "یک خطا"
                }
              }
            }
          }
        }
      }
    },
    "/account": {
      "get": {
        "operationId": "getAccount",
        "summary": "The account: who owns it, its wallet balance in minutes, and its settings",
        "x-lobbe-summary-fa": "حساب: صاحب آن، موجودی آن به دقیقه و تنظیمات آن",
        "x-lobbe-scopes": [
          "account:read"
        ],
        "x-lobbe-spends": false,
        "x-lobbe-rate-limit": {
          "class": "read",
          "requests": 600,
          "windowSeconds": 600
        },
        "parameters": [],
        "responses": {
          "200": {
            "description": "The account: who owns it, its wallet balance in minutes, and its settings",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "schemaVersion": {
                      "type": "number",
                      "const": 1,
                      "description": "Always `1` within API v1",
                      "x-lobbe-description-fa": "در نسخهٔ ۱ API همیشه `1`"
                    },
                    "owner": {
                      "type": "object",
                      "properties": {
                        "type": {
                          "type": "string",
                          "const": "user",
                          "description": "The owner's kind: `user` today; ignore a type you don't know",
                          "x-lobbe-description-fa": "نوع صاحب حساب: امروز `user`؛ نوعی را که نمی‌شناسید نادیده بگیرید"
                        },
                        "id": {
                          "type": "string",
                          "description": "The owner's account id",
                          "x-lobbe-description-fa": "شناسهٔ حساب صاحب"
                        },
                        "displayName": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "The owner's name; null when none was set (a phone number is never sent)",
                          "x-lobbe-description-fa": "نام صاحب حساب؛ اگر نامی ثبت نشده باشد `null` است (شمارهٔ موبایل هرگز فرستاده نمی‌شود)"
                        }
                      },
                      "required": [
                        "type",
                        "id",
                        "displayName"
                      ],
                      "description": "Who the token acts for: the account's owner",
                      "x-lobbe-description-fa": "کسی که توکن از طرف او کار می‌کند: صاحب حساب"
                    },
                    "wallet": {
                      "type": "object",
                      "properties": {
                        "balanceMinutes": {
                          "type": "integer",
                          "minimum": -9007199254740991,
                          "maximum": 9007199254740991,
                          "description": "The balance in minutes; a meeting not yet transcribed is not taken out of it yet, and a first meeting over the balance can leave it below 0",
                          "x-lobbe-description-fa": "موجودی به دقیقه؛ جلسه‌ای که هنوز رونوشتش آماده نشده هنوز از آن کم نشده است، و نخستین جلسه‌ای که از موجودی بیشتر باشد می‌تواند آن را زیر صفر ببرد"
                        }
                      },
                      "required": [
                        "balanceMinutes"
                      ],
                      "description": "The account's balance",
                      "x-lobbe-description-fa": "موجودی حساب"
                    },
                    "settings": {
                      "type": "object",
                      "properties": {
                        "speakerNamingMode": {
                          "type": "string",
                          "enum": [
                            "AUTO",
                            "FORCE_ON",
                            "FORCE_OFF"
                          ],
                          "description": "How a new meeting waits for its speakers' names: `FORCE_ON` (\"Ask\") holds it at `NAMING` until they are named or skipped, or its `naming.deadline` passes; `AUTO` (\"Ask, but don't wait\") holds it a short while, then goes on; `FORCE_OFF` (\"Auto-guess\") never holds it, and Lobbe guesses the names where it can",
                          "x-lobbe-description-fa": "این‌که جلسهٔ تازه چگونه منتظر نام گوینده‌ها می‌ماند: `FORCE_ON` («بپرس») آن را در `NAMING` نگه می‌دارد تا گوینده‌ها را نام‌گذاری کنید یا از نام‌گذاری رد شوید، یا `naming.deadline` آن بگذرد؛ `AUTO` («بپرس، ولی منتظر نمان») مدت کوتاهی نگهش می‌دارد و سپس ادامه می‌دهد؛ `FORCE_OFF` («حدس خودکار») هرگز نگهش نمی‌دارد و لُب در صورت امکان نام‌ها را حدس می‌زند"
                        },
                        "memoryLearningEnabled": {
                          "type": "boolean",
                          "description": "Whether Lobbe learns new notes into its memory from each new meeting (the app's \"Learn from new meetings\"); `false` stops the learning only, and the notes already kept are still used",
                          "x-lobbe-description-fa": "این‌که لُب از هر جلسهٔ تازه نکته‌های تازه به حافظه‌اش بیفزاید یا نه («یادگیری از جلسه‌های تازه» در برنامه)؛ `false` فقط یادگیری را متوقف می‌کند و نکته‌هایی که از قبل مانده‌اند همچنان به کار می‌روند"
                        },
                        "summaryEmailEnabled": {
                          "type": "boolean",
                          "description": "Whether each new Lobbe is emailed to the owner with its PDF (the app's \"Email me after each meeting\"); a Lobbe made again is not sent again, and nothing is sent while the account has no email address (only the app can set one)",
                          "x-lobbe-description-fa": "این‌که هر لُب تازه همراه فایل PDF آن به ایمیل صاحب حساب فرستاده شود یا نه («ارسال خلاصه پس از هر جلسه» در برنامه)؛ لُبی که دوباره ساخته شود دوباره فرستاده نمی‌شود، و تا وقتی حساب نشانی ایمیلی نداشته باشد چیزی فرستاده نمی‌شود (این نشانی فقط در برنامه ثبت می‌شود)"
                        },
                        "uiLocale": {
                          "type": "string",
                          "enum": [
                            "en",
                            "fa"
                          ],
                          "description": "The app's language for the account, `en` or `fa`: set in the app, never through a token",
                          "x-lobbe-description-fa": "زبان برنامه برای این حساب، `en` یا `fa`: در برنامه تنظیم می‌شود، هرگز با توکن"
                        }
                      },
                      "required": [
                        "speakerNamingMode",
                        "memoryLearningEnabled",
                        "summaryEmailEnabled",
                        "uiLocale"
                      ],
                      "description": "The account's settings a token can see; `updateAccountSettings` changes the first three",
                      "x-lobbe-description-fa": "تنظیماتی از حساب که توکن می‌بیند؛ `updateAccountSettings` سه مورد نخست را تغییر می‌دهد"
                    }
                  },
                  "required": [
                    "schemaVersion",
                    "owner",
                    "wallet",
                    "settings"
                  ],
                  "description": "The account the token acts for: its owner, balance and settings; never its phone number or email address",
                  "x-lobbe-description-fa": "حسابی که توکن از طرف آن کار می‌کند: صاحب، موجودی و تنظیمات آن؛ هرگز شمارهٔ موبایل یا نشانی ایمیل آن"
                }
              }
            }
          },
          "default": {
            "description": "An error. `error.code` is the contract; `message` may change.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "object",
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "The error's code: stable, the part to branch on",
                          "x-lobbe-description-fa": "کد خطا: ثابت می‌ماند و برنامهٔ شما باید بر اساس همین تصمیم بگیرد"
                        },
                        "message": {
                          "type": "string",
                          "description": "A human-readable explanation; its wording may change",
                          "x-lobbe-description-fa": "توضیحی خواندنی برای انسان؛ متن آن ممکن است تغییر کند"
                        },
                        "details": {
                          "description": "Extra facts some codes carry, e.g. `requiredMinutes` with `INSUFFICIENT_MINUTES`; absent otherwise",
                          "x-lobbe-description-fa": "اطلاعات بیشتری که بعضی کدها همراه دارند، مثلاً `requiredMinutes` همراه `INSUFFICIENT_MINUTES`؛ در غیر این صورت نمی‌آید",
                          "type": "object",
                          "propertyNames": {
                            "type": "string"
                          },
                          "additionalProperties": {}
                        }
                      },
                      "required": [
                        "code",
                        "message"
                      ],
                      "description": "What went wrong",
                      "x-lobbe-description-fa": "چه چیزی درست پیش نرفت"
                    }
                  },
                  "required": [
                    "error"
                  ],
                  "description": "An error",
                  "x-lobbe-description-fa": "یک خطا"
                }
              }
            }
          }
        }
      }
    },
    "/account/keyterms": {
      "get": {
        "operationId": "getAccountKeyterms",
        "summary": "The account's vocabulary: words transcription should recognize",
        "x-lobbe-summary-fa": "واژگان حساب: واژه‌هایی که تبدیل گفتار به متن باید بشناسد",
        "x-lobbe-scopes": [
          "account:read"
        ],
        "x-lobbe-spends": false,
        "x-lobbe-rate-limit": {
          "class": "read",
          "requests": 600,
          "windowSeconds": 600
        },
        "parameters": [],
        "responses": {
          "200": {
            "description": "The account's vocabulary: words transcription should recognize",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "schemaVersion": {
                      "type": "number",
                      "const": 1,
                      "description": "Always `1` within API v1",
                      "x-lobbe-description-fa": "در نسخهٔ ۱ API همیشه `1`"
                    },
                    "keyterms": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "The terms transcription should recognize, in their saved order (at most 100). A meeting transcribed with vocabulary uses them when it is in no series, and after the series' own terms when its series has `inheritAccountKeyterms: true`; a meeting in a series without it never uses them",
                      "x-lobbe-description-fa": "واژه‌هایی که تبدیل گفتار به متن باید بشناسد، به ترتیبی که ذخیره شده‌اند (حداکثر ۱۰۰). جلسه‌ای که رونوشتش با واژگان ساخته شود، اگر در هیچ سری‌ای نباشد این واژه‌ها را به کار می‌برد، و اگر `inheritAccountKeyterms` سری‌اش `true` باشد پس از واژه‌های خود آن سری؛ جلسه‌ای در سری‌ای که این گزینه را نداشته باشد هرگز این واژه‌ها را به کار نمی‌برد"
                    }
                  },
                  "required": [
                    "schemaVersion",
                    "keyterms"
                  ],
                  "description": "The account's vocabulary (the app's \"My vocabulary\")",
                  "x-lobbe-description-fa": "واژگان حساب («واژگان من» در برنامه)"
                }
              }
            }
          },
          "default": {
            "description": "An error. `error.code` is the contract; `message` may change.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "object",
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "The error's code: stable, the part to branch on",
                          "x-lobbe-description-fa": "کد خطا: ثابت می‌ماند و برنامهٔ شما باید بر اساس همین تصمیم بگیرد"
                        },
                        "message": {
                          "type": "string",
                          "description": "A human-readable explanation; its wording may change",
                          "x-lobbe-description-fa": "توضیحی خواندنی برای انسان؛ متن آن ممکن است تغییر کند"
                        },
                        "details": {
                          "description": "Extra facts some codes carry, e.g. `requiredMinutes` with `INSUFFICIENT_MINUTES`; absent otherwise",
                          "x-lobbe-description-fa": "اطلاعات بیشتری که بعضی کدها همراه دارند، مثلاً `requiredMinutes` همراه `INSUFFICIENT_MINUTES`؛ در غیر این صورت نمی‌آید",
                          "type": "object",
                          "propertyNames": {
                            "type": "string"
                          },
                          "additionalProperties": {}
                        }
                      },
                      "required": [
                        "code",
                        "message"
                      ],
                      "description": "What went wrong",
                      "x-lobbe-description-fa": "چه چیزی درست پیش نرفت"
                    }
                  },
                  "required": [
                    "error"
                  ],
                  "description": "An error",
                  "x-lobbe-description-fa": "یک خطا"
                }
              }
            }
          }
        }
      },
      "put": {
        "operationId": "replaceAccountKeyterms",
        "summary": "Replace the account's vocabulary; a meeting that uses vocabulary carries its surcharge",
        "x-lobbe-summary-fa": "جایگزینی واژگان حساب؛ جلسه‌ای که از واژگان استفاده کند هزینهٔ افزودهٔ آن را دارد",
        "x-lobbe-scopes": [
          "account:write"
        ],
        "x-lobbe-spends": false,
        "x-lobbe-rate-limit": {
          "class": "settings",
          "requests": 60,
          "windowSeconds": 600
        },
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "keyterms": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "The whole new list. Each term is trimmed and its runs of spaces collapse to one; then at most 100 terms, each 1–49 characters and at most 5 words, none containing `<`, `>`, `{`, `}`, `[`, `]` or `\\`, and no term twice. A list that breaks a rule is a `400` whose message names the first problem",
                    "x-lobbe-description-fa": "کل فهرست تازه. دو سر هر واژه پیراسته و هر رشته از فاصله‌هایش به یک فاصله تبدیل می‌شود؛ سپس حداکثر ۱۰۰ واژه، هر کدام ۱ تا ۴۹ نویسه و حداکثر ۵ کلمه که شامل هیچ‌یک از نویسه‌های `<`، `>`، `{`، `}`، `[`، `]` یا `\\` نباشد، و بدون واژهٔ تکراری. فهرستی که یکی از این قاعده‌ها را رعایت نکند پاسخ `400` می‌گیرد و پیام آن نخستین مشکل را نام می‌برد"
                  }
                },
                "required": [
                  "keyterms"
                ],
                "additionalProperties": false,
                "description": "The account's whole vocabulary, replacing the old one. A meeting keeps the words it was submitted with, and a meeting that uses any costs 20% more",
                "x-lobbe-description-fa": "کل واژگان حساب، به‌جای فهرست قبلی. هر جلسه همان واژه‌هایی را نگه می‌دارد که با آن فرستاده شد، و جلسه‌ای که از واژه‌ای استفاده کند ۲۰٪ هزینهٔ بیشتر دارد"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Replace the account's vocabulary; a meeting that uses vocabulary carries its surcharge",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "schemaVersion": {
                      "type": "number",
                      "const": 1,
                      "description": "Always `1` within API v1",
                      "x-lobbe-description-fa": "در نسخهٔ ۱ API همیشه `1`"
                    },
                    "keyterms": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "The terms transcription should recognize, in their saved order (at most 100). A meeting transcribed with vocabulary uses them when it is in no series, and after the series' own terms when its series has `inheritAccountKeyterms: true`; a meeting in a series without it never uses them",
                      "x-lobbe-description-fa": "واژه‌هایی که تبدیل گفتار به متن باید بشناسد، به ترتیبی که ذخیره شده‌اند (حداکثر ۱۰۰). جلسه‌ای که رونوشتش با واژگان ساخته شود، اگر در هیچ سری‌ای نباشد این واژه‌ها را به کار می‌برد، و اگر `inheritAccountKeyterms` سری‌اش `true` باشد پس از واژه‌های خود آن سری؛ جلسه‌ای در سری‌ای که این گزینه را نداشته باشد هرگز این واژه‌ها را به کار نمی‌برد"
                    }
                  },
                  "required": [
                    "schemaVersion",
                    "keyterms"
                  ],
                  "description": "The account's vocabulary (the app's \"My vocabulary\")",
                  "x-lobbe-description-fa": "واژگان حساب («واژگان من» در برنامه)"
                }
              }
            }
          },
          "default": {
            "description": "An error. `error.code` is the contract; `message` may change.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "object",
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "The error's code: stable, the part to branch on",
                          "x-lobbe-description-fa": "کد خطا: ثابت می‌ماند و برنامهٔ شما باید بر اساس همین تصمیم بگیرد"
                        },
                        "message": {
                          "type": "string",
                          "description": "A human-readable explanation; its wording may change",
                          "x-lobbe-description-fa": "توضیحی خواندنی برای انسان؛ متن آن ممکن است تغییر کند"
                        },
                        "details": {
                          "description": "Extra facts some codes carry, e.g. `requiredMinutes` with `INSUFFICIENT_MINUTES`; absent otherwise",
                          "x-lobbe-description-fa": "اطلاعات بیشتری که بعضی کدها همراه دارند، مثلاً `requiredMinutes` همراه `INSUFFICIENT_MINUTES`؛ در غیر این صورت نمی‌آید",
                          "type": "object",
                          "propertyNames": {
                            "type": "string"
                          },
                          "additionalProperties": {}
                        }
                      },
                      "required": [
                        "code",
                        "message"
                      ],
                      "description": "What went wrong",
                      "x-lobbe-description-fa": "چه چیزی درست پیش نرفت"
                    }
                  },
                  "required": [
                    "error"
                  ],
                  "description": "An error",
                  "x-lobbe-description-fa": "یک خطا"
                }
              }
            }
          }
        }
      }
    },
    "/account/memory": {
      "get": {
        "operationId": "listMemory",
        "summary": "What Lobbe remembers about the account's owner, as the settings screen lists it",
        "x-lobbe-summary-fa": "آنچه لُب دربارهٔ صاحب حساب به یاد دارد، همان‌گونه که صفحهٔ تنظیمات نشان می‌دهد",
        "x-lobbe-scopes": [
          "account:read"
        ],
        "x-lobbe-spends": false,
        "x-lobbe-rate-limit": {
          "class": "read",
          "requests": 600,
          "windowSeconds": 600
        },
        "parameters": [],
        "responses": {
          "200": {
            "description": "What Lobbe remembers about the account's owner, as the settings screen lists it",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "schemaVersion": {
                      "type": "number",
                      "const": 1,
                      "description": "Always `1` within API v1",
                      "x-lobbe-description-fa": "در نسخهٔ ۱ API همیشه `1`"
                    },
                    "memoryEnabled": {
                      "type": "boolean",
                      "description": "Whether memory is switched on for Lobbe; while `false`, `items` is empty and editing or deleting a note answers `409 MEMORY_DISABLED`",
                      "x-lobbe-description-fa": "این‌که حافظه در لُب روشن است یا نه؛ تا وقتی `false` باشد `items` خالی است و ویرایش یا حذف نکته پاسخ `409 MEMORY_DISABLED` می‌گیرد"
                    },
                    "items": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "description": "The note's id, as `updateMemoryItem` and `deleteMemoryItem` take it",
                            "x-lobbe-description-fa": "شناسهٔ نکته، همان‌که `updateMemoryItem` و `deleteMemoryItem` می‌گیرند"
                          },
                          "category": {
                            "type": "string",
                            "enum": [
                              "ABOUT_YOU",
                              "PEOPLE",
                              "TERMS"
                            ],
                            "description": "The section it is in: `ABOUT_YOU` (\"About you\"), `PEOPLE` (\"People you meet with\") or `TERMS` (\"Your terminology\")",
                            "x-lobbe-description-fa": "بخشی که نکته در آن است: `ABOUT_YOU` («دربارهٔ شما»)، `PEOPLE` («آدم‌های تکرارشونده») یا `TERMS` («واژه‌های تخصصی»)"
                          },
                          "text": {
                            "type": "string",
                            "description": "The note itself",
                            "x-lobbe-description-fa": "خود نکته"
                          },
                          "meetingCount": {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991,
                            "description": "How many meetings it was learned from",
                            "x-lobbe-description-fa": "شمار جلسه‌هایی که نکته از آن‌ها یاد گرفته شد"
                          },
                          "pinned": {
                            "type": "boolean",
                            "description": "`true` once the owner edited it: from then on Lobbe never rewrites or removes it",
                            "x-lobbe-description-fa": "پس از آنکه صاحب حساب آن را ویرایش کند `true` است: از آن پس لُب هرگز آن را بازنویسی یا حذف نمی‌کند"
                          }
                        },
                        "required": [
                          "id",
                          "category",
                          "text",
                          "meetingCount",
                          "pinned"
                        ],
                        "description": "One memory note",
                        "x-lobbe-description-fa": "یک نکتهٔ حافظه"
                      },
                      "description": "The notes",
                      "x-lobbe-description-fa": "نکته‌ها"
                    }
                  },
                  "required": [
                    "schemaVersion",
                    "memoryEnabled",
                    "items"
                  ],
                  "description": "What Lobbe remembers about the owner to make each Lobbe more accurate, as the app's \"Lobbe's memory\" lists it",
                  "x-lobbe-description-fa": "آنچه لُب دربارهٔ صاحب حساب به یاد دارد تا هر لُب دقیق‌تر شود، همان‌گونه که «حافظهٔ لُب» در برنامه نشان می‌دهد"
                }
              }
            }
          },
          "default": {
            "description": "An error. `error.code` is the contract; `message` may change.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "object",
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "The error's code: stable, the part to branch on",
                          "x-lobbe-description-fa": "کد خطا: ثابت می‌ماند و برنامهٔ شما باید بر اساس همین تصمیم بگیرد"
                        },
                        "message": {
                          "type": "string",
                          "description": "A human-readable explanation; its wording may change",
                          "x-lobbe-description-fa": "توضیحی خواندنی برای انسان؛ متن آن ممکن است تغییر کند"
                        },
                        "details": {
                          "description": "Extra facts some codes carry, e.g. `requiredMinutes` with `INSUFFICIENT_MINUTES`; absent otherwise",
                          "x-lobbe-description-fa": "اطلاعات بیشتری که بعضی کدها همراه دارند، مثلاً `requiredMinutes` همراه `INSUFFICIENT_MINUTES`؛ در غیر این صورت نمی‌آید",
                          "type": "object",
                          "propertyNames": {
                            "type": "string"
                          },
                          "additionalProperties": {}
                        }
                      },
                      "required": [
                        "code",
                        "message"
                      ],
                      "description": "What went wrong",
                      "x-lobbe-description-fa": "چه چیزی درست پیش نرفت"
                    }
                  },
                  "required": [
                    "error"
                  ],
                  "description": "An error",
                  "x-lobbe-description-fa": "یک خطا"
                }
              }
            }
          }
        }
      }
    },
    "/account/settings": {
      "patch": {
        "operationId": "updateAccountSettings",
        "summary": "Change speaker naming, memory learning or the summary email; nothing else",
        "x-lobbe-summary-fa": "تغییر نام‌گذاری گوینده‌ها، یادگیری حافظه یا ایمیل خلاصه؛ نه چیز دیگری",
        "x-lobbe-scopes": [
          "account:write"
        ],
        "x-lobbe-spends": false,
        "x-lobbe-rate-limit": {
          "class": "settings",
          "requests": 60,
          "windowSeconds": 600
        },
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "speakerNamingMode": {
                    "description": "How a new meeting waits for its speakers' names: `FORCE_ON` (\"Ask\") holds it at `NAMING` until they are named or skipped, or its `naming.deadline` passes; `AUTO` (\"Ask, but don't wait\") holds it a short while, then goes on; `FORCE_OFF` (\"Auto-guess\") never holds it, and Lobbe guesses the names where it can",
                    "x-lobbe-description-fa": "این‌که جلسهٔ تازه چگونه منتظر نام گوینده‌ها می‌ماند: `FORCE_ON` («بپرس») آن را در `NAMING` نگه می‌دارد تا گوینده‌ها را نام‌گذاری کنید یا از نام‌گذاری رد شوید، یا `naming.deadline` آن بگذرد؛ `AUTO` («بپرس، ولی منتظر نمان») مدت کوتاهی نگهش می‌دارد و سپس ادامه می‌دهد؛ `FORCE_OFF` («حدس خودکار») هرگز نگهش نمی‌دارد و لُب در صورت امکان نام‌ها را حدس می‌زند",
                    "type": "string",
                    "enum": [
                      "AUTO",
                      "FORCE_ON",
                      "FORCE_OFF"
                    ]
                  },
                  "memoryLearningEnabled": {
                    "description": "Whether Lobbe learns new notes into its memory from each new meeting (the app's \"Learn from new meetings\"); `false` stops the learning only, and the notes already kept are still used",
                    "x-lobbe-description-fa": "این‌که لُب از هر جلسهٔ تازه نکته‌های تازه به حافظه‌اش بیفزاید یا نه («یادگیری از جلسه‌های تازه» در برنامه)؛ `false` فقط یادگیری را متوقف می‌کند و نکته‌هایی که از قبل مانده‌اند همچنان به کار می‌روند",
                    "type": "boolean"
                  },
                  "summaryEmailEnabled": {
                    "description": "Whether each new Lobbe is emailed to the owner with its PDF (the app's \"Email me after each meeting\"); a Lobbe made again is not sent again, and nothing is sent while the account has no email address (only the app can set one)",
                    "x-lobbe-description-fa": "این‌که هر لُب تازه همراه فایل PDF آن به ایمیل صاحب حساب فرستاده شود یا نه («ارسال خلاصه پس از هر جلسه» در برنامه)؛ لُبی که دوباره ساخته شود دوباره فرستاده نمی‌شود، و تا وقتی حساب نشانی ایمیلی نداشته باشد چیزی فرستاده نمی‌شود (این نشانی فقط در برنامه ثبت می‌شود)",
                    "type": "boolean"
                  }
                },
                "additionalProperties": false,
                "description": "The settings to change, at least one: a field you leave out keeps its value, and any other field is a `400` with nothing written",
                "x-lobbe-description-fa": "تنظیماتی که تغییر می‌کنند، دست‌کم یکی: فیلدی که نفرستید مقدارش را نگه می‌دارد، و هر فیلد دیگری پاسخ `400` می‌گیرد و چیزی نوشته نمی‌شود",
                "minProperties": 1
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Change speaker naming, memory learning or the summary email; nothing else",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "schemaVersion": {
                      "type": "number",
                      "const": 1,
                      "description": "Always `1` within API v1",
                      "x-lobbe-description-fa": "در نسخهٔ ۱ API همیشه `1`"
                    },
                    "owner": {
                      "type": "object",
                      "properties": {
                        "type": {
                          "type": "string",
                          "const": "user",
                          "description": "The owner's kind: `user` today; ignore a type you don't know",
                          "x-lobbe-description-fa": "نوع صاحب حساب: امروز `user`؛ نوعی را که نمی‌شناسید نادیده بگیرید"
                        },
                        "id": {
                          "type": "string",
                          "description": "The owner's account id",
                          "x-lobbe-description-fa": "شناسهٔ حساب صاحب"
                        },
                        "displayName": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "The owner's name; null when none was set (a phone number is never sent)",
                          "x-lobbe-description-fa": "نام صاحب حساب؛ اگر نامی ثبت نشده باشد `null` است (شمارهٔ موبایل هرگز فرستاده نمی‌شود)"
                        }
                      },
                      "required": [
                        "type",
                        "id",
                        "displayName"
                      ],
                      "description": "Who the token acts for: the account's owner",
                      "x-lobbe-description-fa": "کسی که توکن از طرف او کار می‌کند: صاحب حساب"
                    },
                    "wallet": {
                      "type": "object",
                      "properties": {
                        "balanceMinutes": {
                          "type": "integer",
                          "minimum": -9007199254740991,
                          "maximum": 9007199254740991,
                          "description": "The balance in minutes; a meeting not yet transcribed is not taken out of it yet, and a first meeting over the balance can leave it below 0",
                          "x-lobbe-description-fa": "موجودی به دقیقه؛ جلسه‌ای که هنوز رونوشتش آماده نشده هنوز از آن کم نشده است، و نخستین جلسه‌ای که از موجودی بیشتر باشد می‌تواند آن را زیر صفر ببرد"
                        }
                      },
                      "required": [
                        "balanceMinutes"
                      ],
                      "description": "The account's balance",
                      "x-lobbe-description-fa": "موجودی حساب"
                    },
                    "settings": {
                      "type": "object",
                      "properties": {
                        "speakerNamingMode": {
                          "type": "string",
                          "enum": [
                            "AUTO",
                            "FORCE_ON",
                            "FORCE_OFF"
                          ],
                          "description": "How a new meeting waits for its speakers' names: `FORCE_ON` (\"Ask\") holds it at `NAMING` until they are named or skipped, or its `naming.deadline` passes; `AUTO` (\"Ask, but don't wait\") holds it a short while, then goes on; `FORCE_OFF` (\"Auto-guess\") never holds it, and Lobbe guesses the names where it can",
                          "x-lobbe-description-fa": "این‌که جلسهٔ تازه چگونه منتظر نام گوینده‌ها می‌ماند: `FORCE_ON` («بپرس») آن را در `NAMING` نگه می‌دارد تا گوینده‌ها را نام‌گذاری کنید یا از نام‌گذاری رد شوید، یا `naming.deadline` آن بگذرد؛ `AUTO` («بپرس، ولی منتظر نمان») مدت کوتاهی نگهش می‌دارد و سپس ادامه می‌دهد؛ `FORCE_OFF` («حدس خودکار») هرگز نگهش نمی‌دارد و لُب در صورت امکان نام‌ها را حدس می‌زند"
                        },
                        "memoryLearningEnabled": {
                          "type": "boolean",
                          "description": "Whether Lobbe learns new notes into its memory from each new meeting (the app's \"Learn from new meetings\"); `false` stops the learning only, and the notes already kept are still used",
                          "x-lobbe-description-fa": "این‌که لُب از هر جلسهٔ تازه نکته‌های تازه به حافظه‌اش بیفزاید یا نه («یادگیری از جلسه‌های تازه» در برنامه)؛ `false` فقط یادگیری را متوقف می‌کند و نکته‌هایی که از قبل مانده‌اند همچنان به کار می‌روند"
                        },
                        "summaryEmailEnabled": {
                          "type": "boolean",
                          "description": "Whether each new Lobbe is emailed to the owner with its PDF (the app's \"Email me after each meeting\"); a Lobbe made again is not sent again, and nothing is sent while the account has no email address (only the app can set one)",
                          "x-lobbe-description-fa": "این‌که هر لُب تازه همراه فایل PDF آن به ایمیل صاحب حساب فرستاده شود یا نه («ارسال خلاصه پس از هر جلسه» در برنامه)؛ لُبی که دوباره ساخته شود دوباره فرستاده نمی‌شود، و تا وقتی حساب نشانی ایمیلی نداشته باشد چیزی فرستاده نمی‌شود (این نشانی فقط در برنامه ثبت می‌شود)"
                        },
                        "uiLocale": {
                          "type": "string",
                          "enum": [
                            "en",
                            "fa"
                          ],
                          "description": "The app's language for the account, `en` or `fa`: set in the app, never through a token",
                          "x-lobbe-description-fa": "زبان برنامه برای این حساب، `en` یا `fa`: در برنامه تنظیم می‌شود، هرگز با توکن"
                        }
                      },
                      "required": [
                        "speakerNamingMode",
                        "memoryLearningEnabled",
                        "summaryEmailEnabled",
                        "uiLocale"
                      ],
                      "description": "The account's settings a token can see; `updateAccountSettings` changes the first three",
                      "x-lobbe-description-fa": "تنظیماتی از حساب که توکن می‌بیند؛ `updateAccountSettings` سه مورد نخست را تغییر می‌دهد"
                    }
                  },
                  "required": [
                    "schemaVersion",
                    "owner",
                    "wallet",
                    "settings"
                  ],
                  "description": "The account the token acts for: its owner, balance and settings; never its phone number or email address",
                  "x-lobbe-description-fa": "حسابی که توکن از طرف آن کار می‌کند: صاحب، موجودی و تنظیمات آن؛ هرگز شمارهٔ موبایل یا نشانی ایمیل آن"
                }
              }
            }
          },
          "default": {
            "description": "An error. `error.code` is the contract; `message` may change.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "object",
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "The error's code: stable, the part to branch on",
                          "x-lobbe-description-fa": "کد خطا: ثابت می‌ماند و برنامهٔ شما باید بر اساس همین تصمیم بگیرد"
                        },
                        "message": {
                          "type": "string",
                          "description": "A human-readable explanation; its wording may change",
                          "x-lobbe-description-fa": "توضیحی خواندنی برای انسان؛ متن آن ممکن است تغییر کند"
                        },
                        "details": {
                          "description": "Extra facts some codes carry, e.g. `requiredMinutes` with `INSUFFICIENT_MINUTES`; absent otherwise",
                          "x-lobbe-description-fa": "اطلاعات بیشتری که بعضی کدها همراه دارند، مثلاً `requiredMinutes` همراه `INSUFFICIENT_MINUTES`؛ در غیر این صورت نمی‌آید",
                          "type": "object",
                          "propertyNames": {
                            "type": "string"
                          },
                          "additionalProperties": {}
                        }
                      },
                      "required": [
                        "code",
                        "message"
                      ],
                      "description": "What went wrong",
                      "x-lobbe-description-fa": "چه چیزی درست پیش نرفت"
                    }
                  },
                  "required": [
                    "error"
                  ],
                  "description": "An error",
                  "x-lobbe-description-fa": "یک خطا"
                }
              }
            }
          }
        }
      }
    },
    "/account/memory/{id}": {
      "patch": {
        "operationId": "updateMemoryItem",
        "summary": "Rewrite one memory item; an edited item is kept as you wrote it",
        "x-lobbe-summary-fa": "بازنویسی یک نکتهٔ حافظه؛ نکتهٔ ویرایش‌شده همان‌گونه که نوشته‌اید می‌ماند",
        "x-lobbe-scopes": [
          "account:write"
        ],
        "x-lobbe-spends": false,
        "x-lobbe-rate-limit": {
          "class": "settings",
          "requests": 60,
          "windowSeconds": 600
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The memory item's id",
            "x-lobbe-description-fa": "شناسهٔ نکتهٔ حافظه",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "text": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 1000,
                    "description": "The new text, trimmed: at least 1 character and at most the app's limit for a note (never more than 1000); longer is a `400`, and the text of another note in the same section is `409 MEMORY_DUPLICATE`",
                    "x-lobbe-description-fa": "متن تازه، پس از پیراستن دو سر آن: دست‌کم ۱ نویسه و حداکثر به اندازهٔ سقف برنامه برای یک نکته (هرگز بیش از ۱۰۰۰)؛ متن بلندتر پاسخ `400` می‌گیرد، و متنی که نکتهٔ دیگری در همان بخش دارد پاسخ `409 MEMORY_DUPLICATE`"
                  }
                },
                "required": [
                  "text"
                ],
                "additionalProperties": false,
                "description": "The note's new text; the note is then pinned, kept as you wrote it",
                "x-lobbe-description-fa": "متن تازهٔ نکته؛ از آن پس نکته همان‌گونه که نوشته‌اید می‌ماند"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Rewrite one memory item; an edited item is kept as you wrote it",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "schemaVersion": {
                      "type": "number",
                      "const": 1,
                      "description": "Always `1` within API v1",
                      "x-lobbe-description-fa": "در نسخهٔ ۱ API همیشه `1`"
                    },
                    "item": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "The note's id, as `updateMemoryItem` and `deleteMemoryItem` take it",
                          "x-lobbe-description-fa": "شناسهٔ نکته، همان‌که `updateMemoryItem` و `deleteMemoryItem` می‌گیرند"
                        },
                        "category": {
                          "type": "string",
                          "enum": [
                            "ABOUT_YOU",
                            "PEOPLE",
                            "TERMS"
                          ],
                          "description": "The section it is in: `ABOUT_YOU` (\"About you\"), `PEOPLE` (\"People you meet with\") or `TERMS` (\"Your terminology\")",
                          "x-lobbe-description-fa": "بخشی که نکته در آن است: `ABOUT_YOU` («دربارهٔ شما»)، `PEOPLE` («آدم‌های تکرارشونده») یا `TERMS` («واژه‌های تخصصی»)"
                        },
                        "text": {
                          "type": "string",
                          "description": "The note itself",
                          "x-lobbe-description-fa": "خود نکته"
                        },
                        "meetingCount": {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 9007199254740991,
                          "description": "How many meetings it was learned from",
                          "x-lobbe-description-fa": "شمار جلسه‌هایی که نکته از آن‌ها یاد گرفته شد"
                        },
                        "pinned": {
                          "type": "boolean",
                          "description": "`true` once the owner edited it: from then on Lobbe never rewrites or removes it",
                          "x-lobbe-description-fa": "پس از آنکه صاحب حساب آن را ویرایش کند `true` است: از آن پس لُب هرگز آن را بازنویسی یا حذف نمی‌کند"
                        }
                      },
                      "required": [
                        "id",
                        "category",
                        "text",
                        "meetingCount",
                        "pinned"
                      ],
                      "description": "One memory note",
                      "x-lobbe-description-fa": "یک نکتهٔ حافظه"
                    }
                  },
                  "required": [
                    "schemaVersion",
                    "item"
                  ],
                  "description": "The note as it now reads",
                  "x-lobbe-description-fa": "نکته با متن تازه‌اش"
                }
              }
            }
          },
          "default": {
            "description": "An error. `error.code` is the contract; `message` may change.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "object",
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "The error's code: stable, the part to branch on",
                          "x-lobbe-description-fa": "کد خطا: ثابت می‌ماند و برنامهٔ شما باید بر اساس همین تصمیم بگیرد"
                        },
                        "message": {
                          "type": "string",
                          "description": "A human-readable explanation; its wording may change",
                          "x-lobbe-description-fa": "توضیحی خواندنی برای انسان؛ متن آن ممکن است تغییر کند"
                        },
                        "details": {
                          "description": "Extra facts some codes carry, e.g. `requiredMinutes` with `INSUFFICIENT_MINUTES`; absent otherwise",
                          "x-lobbe-description-fa": "اطلاعات بیشتری که بعضی کدها همراه دارند، مثلاً `requiredMinutes` همراه `INSUFFICIENT_MINUTES`؛ در غیر این صورت نمی‌آید",
                          "type": "object",
                          "propertyNames": {
                            "type": "string"
                          },
                          "additionalProperties": {}
                        }
                      },
                      "required": [
                        "code",
                        "message"
                      ],
                      "description": "What went wrong",
                      "x-lobbe-description-fa": "چه چیزی درست پیش نرفت"
                    }
                  },
                  "required": [
                    "error"
                  ],
                  "description": "An error",
                  "x-lobbe-description-fa": "یک خطا"
                }
              }
            }
          }
        }
      },
      "delete": {
        "operationId": "deleteMemoryItem",
        "summary": "Delete one memory item",
        "x-lobbe-summary-fa": "حذف یک نکتهٔ حافظه",
        "x-lobbe-scopes": [
          "account:write"
        ],
        "x-lobbe-spends": false,
        "x-lobbe-rate-limit": {
          "class": "settings",
          "requests": 60,
          "windowSeconds": 600
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The memory item's id",
            "x-lobbe-description-fa": "شناسهٔ نکتهٔ حافظه",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Delete one memory item",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "schemaVersion": {
                      "type": "number",
                      "const": 1,
                      "description": "Always `1` within API v1",
                      "x-lobbe-description-fa": "در نسخهٔ ۱ API همیشه `1`"
                    },
                    "id": {
                      "type": "string",
                      "description": "The deleted note's id",
                      "x-lobbe-description-fa": "شناسهٔ نکتهٔ حذف‌شده"
                    },
                    "deleted": {
                      "type": "boolean",
                      "const": true,
                      "description": "Always `true`",
                      "x-lobbe-description-fa": "همیشه `true`"
                    }
                  },
                  "required": [
                    "schemaVersion",
                    "id",
                    "deleted"
                  ],
                  "description": "The note is gone for good; a later meeting may teach it again",
                  "x-lobbe-description-fa": "نکته برای همیشه حذف شد؛ ممکن است جلسه‌ای در آینده دوباره آن را به لُب یاد بدهد"
                }
              }
            }
          },
          "default": {
            "description": "An error. `error.code` is the contract; `message` may change.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "object",
                      "properties": {
                        "code": {
                          "type": "string",
                          "description": "The error's code: stable, the part to branch on",
                          "x-lobbe-description-fa": "کد خطا: ثابت می‌ماند و برنامهٔ شما باید بر اساس همین تصمیم بگیرد"
                        },
                        "message": {
                          "type": "string",
                          "description": "A human-readable explanation; its wording may change",
                          "x-lobbe-description-fa": "توضیحی خواندنی برای انسان؛ متن آن ممکن است تغییر کند"
                        },
                        "details": {
                          "description": "Extra facts some codes carry, e.g. `requiredMinutes` with `INSUFFICIENT_MINUTES`; absent otherwise",
                          "x-lobbe-description-fa": "اطلاعات بیشتری که بعضی کدها همراه دارند، مثلاً `requiredMinutes` همراه `INSUFFICIENT_MINUTES`؛ در غیر این صورت نمی‌آید",
                          "type": "object",
                          "propertyNames": {
                            "type": "string"
                          },
                          "additionalProperties": {}
                        }
                      },
                      "required": [
                        "code",
                        "message"
                      ],
                      "description": "What went wrong",
                      "x-lobbe-description-fa": "چه چیزی درست پیش نرفت"
                    }
                  },
                  "required": [
                    "error"
                  ],
                  "description": "An error",
                  "x-lobbe-description-fa": "یک خطا"
                }
              }
            }
          }
        }
      }
    }
  }
}
