Akeda Finance imports API

Модуль finance (счета и выписки) — управляемый импорт банковских и кассовых операций

Operations 6

GET /api/v1/finance/imports/{id} Получить состояние запуска импорта #
POST /api/v1/finance/imports/{id}/inspect Прочитать лист и колонки файла импорта #
PATCH /api/v1/finance/imports/{id}/mapping Сохранить сопоставление колонок файла с полями Akeda #
POST /api/v1/finance/imports/{id}/preview Проверить импорт и показать изменения без записи #
POST /api/v1/finance/imports/{id}/apply Применить проверенный импорт #
PATCH /api/v1/finance/imports/{id}/item-mapping Сохранить соответствие статей файла статьям справочника #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/akeda-ru:akeda-ru-finance-imports-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

akeda-ru-finance-imports-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Akeda ERP Client Finance imports API
  version: 0.21.0-core-public
  summary: Проверяемый публичный контракт Go API Akeda ERP
  license:
    name: Proprietary
    identifier: LicenseRef-Akeda-Proprietary
  description: 'Этот контракт описывает API Akeda ERP. Полный исходный файл используют

    проверки живых Go-маршрутов, внутренние клиенты и реестр MCP. Скачиваемый

    клиентский контракт в `/docs` содержит только отобранные внешние методы;

    административные методы кабинета показаны отдельно после входа, а

    платформенные операторские методы остаются во внутреннем источнике.

    Стадия `public` означает обещание совместимости; `preview` допускает

    изменение формы. Аудитория, стадия и `security` — разные признаки:

    наличие метода в полном файле само по себе не выдаёт вызывающему право.

    Сервер отдельно проверяет тип токена, кабинет, scope и права на запись.

    Актуальные числа покрытия берите из генерируемой карты маршрутов и

    каталога покрытия, а не из описательного текста.'
servers:
- url: https://erp.akeda.ru
  description: PROD
security:
- erpUserToken: []
- tenantApiKey: []
- mcpOAuth:
  - akeda:delegate
tags:
- name: Finance imports
  description: Модуль finance (счета и выписки) — управляемый импорт банковских и кассовых операций
paths:
  /api/v1/finance/imports/{id}:
    get:
      tags:
      - Finance imports
      operationId: financeGetImport
      summary: Получить состояние запуска импорта
      description: Возвращает состояние запуска импорта.
      x-akeda-module: finance
      x-akeda-release-stage: preview
      x-akeda-audience: external
      x-akeda-permission: finance.imports:read
      security:
      - erpUserToken: []
      - tenantApiKey: []
      - mcpOAuth:
        - akeda:delegate
      - installationToken: []
      parameters:
      - $ref: '#/components/parameters/TenantHeader'
      - name: id
        in: path
        required: true
        schema:
          $ref: '#/components/schemas/UUID'
      responses:
        '200':
          description: Запуск импорта
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FinanceImportRun'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalError'
  /api/v1/finance/imports/{id}/inspect:
    post:
      tags:
      - Finance imports
      operationId: financeInspectImport
      summary: Прочитать лист и колонки файла импорта
      description: Читает листы и колонки загруженного файла импорта.
      x-akeda-module: finance
      x-akeda-release-stage: preview
      x-akeda-audience: external
      x-akeda-permission: finance.imports:write
      security:
      - erpUserToken: []
      - tenantApiKey: []
      - mcpOAuth:
        - akeda:delegate
      - installationToken: []
      parameters:
      - $ref: '#/components/parameters/TenantHeader'
      - name: id
        in: path
        required: true
        schema:
          $ref: '#/components/schemas/UUID'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FinanceImportInspect'
      responses:
        '200':
          description: Файл с найденными листами, колонками и целевыми полями
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FinanceImportRun'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '409':
          $ref: '#/components/responses/Conflict'
        '501':
          description: Формат файла пока не поддерживается
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /api/v1/finance/imports/{id}/mapping:
    patch:
      tags:
      - Finance imports
      operationId: financeMapImport
      summary: Сохранить сопоставление колонок файла с полями Akeda
      description: Сохраняет сопоставление колонок файла импорта с полями Akeda.
      x-akeda-module: finance
      x-akeda-release-stage: preview
      x-akeda-audience: external
      x-akeda-permission: finance.imports:write
      security:
      - erpUserToken: []
      - tenantApiKey: []
      - mcpOAuth:
        - akeda:delegate
      - installationToken: []
      parameters:
      - $ref: '#/components/parameters/TenantHeader'
      - name: id
        in: path
        required: true
        schema:
          $ref: '#/components/schemas/UUID'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FinanceImportMapping'
      responses:
        '200':
          description: Импорт с сохранённым сопоставлением
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FinanceImportRun'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '409':
          $ref: '#/components/responses/Conflict'
  /api/v1/finance/imports/{id}/preview:
    post:
      tags:
      - Finance imports
      operationId: financePreviewImport
      summary: Проверить импорт и показать изменения без записи
      description: Проверяет импорт и показывает изменения, которые он внесёт, ничего не записывая.
      x-akeda-module: finance
      x-akeda-release-stage: preview
      x-akeda-audience: external
      x-akeda-permission: finance.imports:write
      security:
      - erpUserToken: []
      - tenantApiKey: []
      - mcpOAuth:
        - akeda:delegate
      - installationToken: []
      parameters:
      - $ref: '#/components/parameters/TenantHeader'
      - name: id
        in: path
        required: true
        schema:
          $ref: '#/components/schemas/UUID'
      responses:
        '200':
          description: Предпросмотр строк и найденных проблем
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FinanceImportRun'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '409':
          $ref: '#/components/responses/Conflict'
  /api/v1/finance/imports/{id}/apply:
    post:
      tags:
      - Finance imports
      operationId: financeApplyImport
      summary: Применить проверенный импорт
      description: Предупреждения требуют явного confirm_warnings; ошибки всегда блокируют применение. Строки, похожие на уже загруженные операции счёта (suspected_duplicate), загружаются только с confirm_duplicates, иначе пропускаются и считаются в skipped_duplicates.
      x-akeda-module: finance
      x-akeda-release-stage: preview
      x-akeda-audience: external
      x-akeda-permission: finance.imports:write
      security:
      - erpUserToken: []
      - tenantApiKey: []
      - mcpOAuth:
        - akeda:delegate
      - installationToken: []
      parameters:
      - $ref: '#/components/parameters/TenantHeader'
      - name: id
        in: path
        required: true
        schema:
          $ref: '#/components/schemas/UUID'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FinanceImportApply'
      responses:
        '200':
          description: Применённый запуск и число созданных операций
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FinanceImportRun'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '409':
          $ref: '#/components/responses/Conflict'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
  /api/v1/finance/imports/{id}/item-mapping:
    patch:
      tags:
      - Finance imports
      operationId: financeMapImportItems
      summary: Сохранить соответствие статей файла статьям справочника
      description: 'Сопоставление «название статьи в файле → статья справочника ДДС». Это не часть общего сопоставления (`financeMapImport`): там сопоставляются КОЛОНКИ, и делается это один раз, целиком, до чтения содержимого. Статьи же живут в значениях колонки, их набор становится известен только на предпросмотре, и названия расходятся со справочником законно — журнал клиента старше справочника. Неопознанные названия предпросмотр возвращает в `unknown_items`, человек отвечает на них по одному, и каждый ответ — частичное уточнение уже сохранённого состояния. Отсюда PATCH на отдельном маршруте: тело присылает всю накопленную карту целиком и заменяет прежнюю, а ответом сразу приходит ПЕРЕСТРОЕННЫЙ предпросмотр — человек обязан увидеть результат сопоставления до загрузки, а не узнать о потерянных статьях после неё. Пустое значение — законный выбор «оставить без статьи»; такая пара просто не сохраняется, а не отвергается. Прогон в статусе `applied` уже нельзя пересопоставить.'
      x-akeda-module: finance
      x-akeda-release-stage: preview
      x-akeda-audience: external
      x-akeda-permission: finance.imports:write
      security:
      - erpUserToken: []
      - tenantApiKey: []
      - mcpOAuth:
        - akeda:delegate
      - installationToken: []
      parameters:
      - $ref: '#/components/parameters/TenantHeader'
      - name: id
        in: path
        required: true
        schema:
          $ref: '#/components/schemas/UUID'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FinanceImportItemMappingRequest'
      responses:
        '200':
          description: Прогон с сохранённой картой статей и перестроенным предпросмотром; поля `item_mapping` и `unknown_items` показывают, что осталось сопоставить
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FinanceImportRun'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '409':
          $ref: '#/components/responses/Conflict'
        '500':
          $ref: '#/components/responses/InternalError'
        '501':
          description: Файловый импорт не настроен на этой сборке
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    FinanceImportField:
      type: object
      additionalProperties: false
      required:
      - key
      - label
      - required
      properties:
        key:
          type: string
        label:
          type: string
        required:
          type: boolean
    FinanceImportApply:
      type: object
      additionalProperties: false
      properties:
        confirm_warnings:
          type: boolean
          default: false
        confirm_duplicates:
          type: boolean
          default: false
          description: Загрузить и строки, похожие на уже загруженные операции счёта (suspected_duplicate); без него они пропускаются
    FinanceImportIssue:
      type: object
      additionalProperties: false
      required:
      - row
      - severity
      - message
      properties:
        row:
          type: integer
          minimum: 0
        column:
          type: string
        severity:
          type: string
          enum:
          - warning
          - error
        message:
          type: string
        code:
          type: string
          description: 'Машинный код проблемы для текста на языке экрана: amount_empty — у строки с датой нет суммы; amount_invalid — сумма не число (params.value); suspected_duplicate — строка похожа на уже загруженную операцию (params.date, params.amount, params.direction, params.transaction_id)'
        params:
          type: object
          additionalProperties:
            type: string
          description: Подстановки для текста по коду
    FinanceImportMapping:
      type: object
      additionalProperties: false
      required:
      - columns
      properties:
        sheet_name:
          type: string
        header_row:
          type: integer
          minimum: 0
        columns:
          type: object
          additionalProperties:
            type: string
          description: Сопоставление «целевое поле Akeda → имя колонки файла».
        opening_balance:
          type: string
          description: Decimal string из заголовка или введённое вручную значение
        closing_balance:
          type: string
          description: Decimal string из заголовка или введённое вручную значение
    FinanceImportKind:
      type: string
      enum:
      - bank_transactions
      - cash_operations
    FinanceImportDiff:
      type: object
      additionalProperties: false
      required:
      - row
      - label
      - values
      properties:
        row:
          type: integer
          minimum: 0
        label:
          type: string
        values:
          type: object
          additionalProperties:
            type: string
        skipped:
          type: boolean
    Error:
      type: object
      additionalProperties: false
      required:
      - detail
      properties:
        detail:
          type: string
          description: One human sentence in the request language (Accept-Language, echoed as Content-Language)
        code:
          type: string
          description: Stable module error code when the endpoint defines one
        field:
          type: string
          description: Request body path of the field the refusal is about, e.g. content.commercial.amount or due_date; present when the endpoint names the field
        reason:
          type: string
          description: Machine code of the field refusal reason, e.g. required, format, total_mismatch; present together with field when the endpoint defines reasons
        request_id:
          type: string
          format: uuid
          description: Case id. Always present on 5xx and on any error produced by the server itself; the same value is returned in the X-Request-ID header and recorded in the access log and the incident. Quote it to support instead of the cause, which the response never carries.
    FinanceImportRun:
      type: object
      additionalProperties: false
      required:
      - id
      - kind
      - format
      - status
      - source_name
      - source_sha256
      - source_size
      - sheet_name
      - header_row
      - mapping
      - opening_balance
      - closing_balance
      - computed_closing_balance
      - created_count
      - warning_count
      - error_count
      - created_at
      properties:
        id:
          $ref: '#/components/schemas/UUID'
        kind:
          $ref: '#/components/schemas/FinanceImportKind'
        format:
          type: string
        status:
          $ref: '#/components/schemas/FinanceImportStatus'
        account_id:
          $ref: '#/components/schemas/UUID'
        wallet_id:
          $ref: '#/components/schemas/UUID'
        source_name:
          type: string
        source_sha256:
          type: string
          pattern: ^[a-f0-9]{64}$
        source_size:
          type: integer
          format: int64
          minimum: 0
        sheet_name:
          type: string
        header_row:
          type: integer
          minimum: 0
        mapping:
          type: object
          additionalProperties:
            type: string
        item_mapping:
          type: object
          additionalProperties:
            type: string
          description: Соответствие «название статьи в файле» и идентификатора статьи справочника. Уточняется отдельным маршрутом, потому что набор статей известен только после предпросмотра
        unknown_items:
          type: array
          items:
            type: string
          description: Названия статей из файла, которых нет ни в справочнике, ни в карте соответствий
        deleted_rows:
          type: array
          description: Строки файла, чьи операции уже были и удалены человеком; повторно не загружены, вернуть — командой financeRestoreTransaction
          items:
            type: object
            required:
            - row
            - transaction_id
            - date
            - amount
            - direction
            properties:
              row:
                type: integer
                minimum: 1
              transaction_id:
                $ref: '#/components/schemas/UUID'
              date:
                type: string
              amount:
                type: string
              direction:
                type: string
              counterparty:
                type: string
        diff:
          type: array
          items:
            $ref: '#/components/schemas/FinanceImportDiff'
        issues:
          type: array
          items:
            $ref: '#/components/schemas/FinanceImportIssue'
        opening_balance:
          type: string
        closing_balance:
          type: string
        computed_closing_balance:
          type: string
        created_count:
          type: integer
          minimum: 0
        warning_count:
          type: integer
          minimum: 0
        error_count:
          type: integer
          minimum: 0
        created_by:
          type: integer
          format: int64
        created_at:
          type: string
          format: date-time
        previewed_at:
          type: string
          format: date-time
        applied_at:
          type: string
          format: date-time
        source_columns:
          type: array
          items:
            type: string
        source_sheets:
          type: array
          items:
            $ref: '#/components/schemas/FinanceImportSheet'
        target_fields:
          type: array
          items:
            $ref: '#/components/schemas/FinanceImportField'
        suspected_duplicates:
          type: integer
          minimum: 0
          description: Строк предпросмотра без № документа и сальдо, похожих на уже загруженные операции счёта (тот же день, направление, сумма, назначение и контрагент). Без confirm_duplicates загрузка их пропускает
        skipped_duplicates:
          type: integer
          minimum: 0
          description: Сколько похожих на дубли строк загрузка пропустила без confirm_duplicates
    UUID:
      type: string
      format: uuid
    FinanceImportInspect:
      type: object
      additionalProperties: false
      properties:
        sheet_name:
          type: string
        header_row:
          type: integer
          minimum: 0
    FinanceImportStatus:
      type: string
      enum:
      - uploaded
      - mapped
      - previewed
      - applied
    FinanceImportSheet:
      type: object
      additionalProperties: false
      required:
      - name
      properties:
        name:
          type: string
    FinanceImportItemMappingRequest:
      type: object
      additionalProperties: false
      required:
      - items
      properties:
        items:
          type: object
          additionalProperties:
            type: string
          description: 'Карта целиком: «название статьи в файле» → идентификатор статьи справочника ДДС. Заменяет прежнюю карту, поэтому присылать надо всё накопленное, а не одну новую пару. Пустое значение означает «оставить без статьи» и не сохраняется; непустое, но не UUID, отклоняется.'
  responses:
    Forbidden:
      description: Текущая роль не имеет требуемого права
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    BadRequest:
      description: Некорректный запрос или нарушение бизнес-правила
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    InternalError:
      description: Внутренняя ошибка без раскрытия server-only деталей
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    UnprocessableEntity:
      description: Запрос разобран, но бизнес-значение недопустимо
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Unauthorized:
      description: Сессия, ключ или кабинет не подтверждены
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Conflict:
      description: Конфликт версии, идемпотентности или бизнес-состояния
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    NotFound:
      description: Запись не найдена или не видима текущему пользователю
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  parameters:
    TenantHeader:
      name: X-Tenant
      in: header
      required: true
      description: Slug выбранного кабинета; кабинет не является юрлицом
      schema:
        type: string
        minLength: 1
  securitySchemes:
    erpUserToken:
      type: http
      scheme: bearer
      bearerFormat: go_session
      description: Пользовательский ERP token, полученный через ORY Kratos session bridge
    tenantApiKey:
      type: apiKey
      in: header
      name: X-Api-Key
      description: Tenant-scoped сервисный API-ключ Akeda
    installationToken:
      type: http
      scheme: bearer
      bearerFormat: akeda_installation_token
      description: 'Краткосрочный токен установки приложения (`ai_…`). Выдаёт его человек: публичной двери обмена учётных данных на токен нет и не будет, пока нет брокера долгой половины секрета, асимметричного подтверждения и ограничителя с аудитом неудачных попыток. Токен принимается и в заголовке X-Api-Key, и живёт минуты — вместо показа его ротируют'
    developerSessionToken:
      type: http
      scheme: bearer
      bearerFormat: akeda_developer_session
      description: 'Сессия аккаунта разработчика (`ad_…`). Своя схема, а не пользовательский токен ERP: у разработчика нет кабинета, роли и прав, а хеш этого токена лежит в отдельном хранилище — на кабинетных маршрутах он не находится ничем. Выдаёт его обмен одноразовой ссылки из письма; пароля в этом контуре нет вовсе'
    developerAppKey:
      type: http
      scheme: bearer
      bearerFormat: akeda_developer_app_key
      description: 'Учётные данные приложения (`adk_…`) — это машина конвейера издателя, а не человек. Ключ привязан к ОДНОМУ приложению внешним ключом, и достижимая им поверхность — маршруты `/api/v1/developer` этого приложения. Обменять его на токен установки нельзя: такой двери нет, и ни одного маршрута к данным кабинета за ним не существует. Выпуск, ротацию и отзыв учётных данных этот ключ не выполняет: ключ, умеющий выпустить следующий ключ, не отзывается никогда. Значение показывается один раз, при выдаче; в хранилище лежит хеш'
    mcpOAuth:
      type: oauth2
      description: OAuth 2.1 delegation для MCP; кабинетные права проверяются на каждом вызове
      flows:
        authorizationCode:
          authorizationUrl: https://erp.akeda.ru/oauth2/authorize
          tokenUrl: https://erp.akeda.ru/oauth2/token
          scopes:
            akeda:delegate: Делегировать текущие пользовательские права MCP-подключению
x-akeda-contract-coverage:
- dashboard-metrics
- tasks-lifecycle
- tasks-collaboration
- tasks-workflow
- tasks-organization
- tasks-automation
- tasks-planning
- tasks-project-hub
- tasks-files
- calendar-events
- calendar-availability
- calendar-booking
- calendar-notifications
- calendar-connectors
- chat-conversations
- chat-messages
- chat-receipts
- chat-mentions
- chat-realtime
- core-directories
- core-folders
- core-contacts
- core-products
- core-documents
- core-orders
- core-registers
- core-accounting
- core-ledger
- core-items
- core-employees
- core-employee-operations
- core-currency-rates
- core-preferences
- core-ui-state
- core-external-refs
- core-product-imports
- core-product-exports
- core-gl-opening-imports
- core-reference
- core-change-feed
- finance-accounts
- finance-statements
- finance-transactions
- finance-connectors
- finance-connector-sync
- finance-requisites
- finance-counterparty-terms
- finance-operations
- finance-settlements
- finance-trade
- finance-exchange
- finance-imports
- finance-payment-calendar
- finance-pnl-layouts
- finance-registers
- finance-reports
- crm-pipelines
- crm-deals
- crm-leads
- crm-customers
- crm-links
- crm-inbox
- crm-automation
- crm-analytics
- knowledge-spaces
- knowledge-pages
- knowledge-access
- knowledge-files
- knowledge-search
- files-drives
- files-content
- files-access
- files-uploads
- files-shares
- stock-documents
- stock-inventory
- stock-warehouses
- stock-handling-units
- stock-batches
- stock-product-units
- stock-references
- stock-imports
- stock-exports
- stock-reports
- stock-valuation
- stock-reorder-rules
- stock-settings
- stock-purchasing
- marking-settings
- marking-connections
- marking-products
- marking-codes
- marking-labels
- marking-stock-codes
- marking-orders
- marking-gismt-documents
- marking-boxes
- marketplace-stores
- marketplace-ozon
- marketplace-wildberries
- marketplace-yandex
- marketplace-product-groups
- marketplace-accounting
- marketplace-catalog
- settings-companies
- settings-roles
- settings-members
- settings-fields
- settings-api-keys
- finance-payroll
- finance-report-details
- knowledge-tags
- knowledge-revisions
- knowledge-approval
- chat-attachments
- chat-reactions
- chat-folders
- platform-apps
- platform-app-installations
- platform-app-tokens
- platform-app-deliveries
- platform-app-publishers
- platform-app-publication
- platform-app-rollouts
- platform-app-runtime
- platform-app-access
- platform-app-blocks
- platform-demo-data
- billing-usage
- platform-analytics
- finance-staffing
- platform-tenants
- platform-users
- platform-access
- platform-mcp-publication
- platform-incidents
- platform-health
- settings-apps
- docflow-connections
- docflow-mirror
- docflow-signing
- docflow-actions
- docflow-outgoing
- docflow-intake
- docflow-flow
- docflow-approvals
- docflow-flow-accounting
- mail-accounts
- mail-folders
- mail-messages
- mail-rules
- mail-outbound
- mail-attachments
- billing-plans
- billing-subscriptions
- billing-invoices
- billing-analytics
- settings-subscription
- billing-payments
- billing-public
x-akeda-docs-path: /docs
x-akeda-default-release-stage: internal
x-akeda-default-audience: operator