> ## Documentation Index
> Fetch the complete documentation index at: https://docs.fintoro.sk/llms.txt
> Use this file to discover all available pages before exploring further.

# Update a CRM event

> Partially updates a CRM event. Only `metadata`, optional new `attachmentUploadTokens[]`, and optional `deletedAttachmentIds[]` are mutable; `type` and target fields are forbidden on update. Attachments are not supported for the `document_linked` type. Metadata field availability is documented directly on `metadata.content`, `metadata.email`, `metadata.personName`, `metadata.phoneNumber`, `metadata.documentType`, and `metadata.documentId`.



## OpenAPI

````yaml /en/openapi.yaml patch /contact-activity-logs/{contactActivityLog}
openapi: 3.1.0
info:
  title: Fintoro API v1
  version: 1.0.0
  description: >
    Fintoro API v1 is a REST API for integrating Fintoro invoicing, CRM, and
    warehouse workflows into third-party systems.


    Production and sandbox companies use the same base URL
    `https://app.fintoro.sk/api/public/v1`. The bearer token decides which
    company you work with.


    The optional `Accept-Language` request header localizes system-owned labels
    in lookups, in related response objects, and in validation errors. The
    `Content-Language` response header returns the language used in the
    response.


    For onboarding and operational guidance, also see:

    - [Getting started](/en/getting-started)

    - [Authentication](/en/authentication)

    - [Webhooks](/en/webhooks)

    - [Sandbox testing](/en/sandbox-testing)

    - [API conventions](/en/conventions)

    - [Errors and idempotency](/en/errors-and-idempotency)
servers:
  - url: https://app.fintoro.sk/api/public/v1
    description: Production Fintoro API.
security:
  - bearerAuth: []
tags:
  - name: Token identity
    description: >-
      Technical read-only endpoint that confirms which company the current
      bearer token belongs to.
  - name: Lookups
    description: >-
      Read-only lookup endpoints for integration data. These endpoints return
      lookup datasets with stable IDs that are safe to cache on your side. When
      new lookup values are added, existing IDs do not change or get reassigned.
  - name: Numerical Series
    description: >-
      Read-only endpoints for numerical series. They return the live
      configuration used when creating documents, including the next generated
      document number and variable symbol.
  - name: Subjects
    description: Look up and verify subject details before creating a client.
  - name: Clients
    description: >-
      Manage clients, including billing address, delivery address, and
      client-scoped default values that can be reused when building payloads for
      new documents. Create, update, and delete operations can emit
      `clients.created`, `clients.updated`, and `clients.deleted` webhook
      events.
  - name: Suppliers
    description: >-
      Manage suppliers, including billing address and identifier data used by
      the warehouse inbound resolve-or-create flow. Create, update, and delete
      operations can emit `suppliers.created`, `suppliers.updated`, and
      `suppliers.deleted` webhook events.
  - name: Business Case Statuses
    description: >-
      Manage business-case statuses. Statuses represent pipeline columns. In
      this API version, a reorder endpoint is not available; when a status is
      deleted, linked business cases are detached to `null`. Create, update, and
      delete operations can emit `business-case-statuses.created`,
      `business-case-statuses.updated`, and `business-case-statuses.deleted`
      webhook events.
  - name: Business Cases
    description: >-
      Manage business cases, including the nested client or supplier and an
      optional status. Reorder flows and changing the linked contact through
      update are not available in this API version. Create, update, and delete
      operations can emit `business-cases.created`, `business-cases.updated`,
      and `business-cases.deleted` webhook events.
  - name: CRM Events
    description: >-
      Manage CRM events for `note`, `email`, `phone_call`, and
      `document_linked`. Attachments use a separate two-step upload endpoint.
      Create, update, and delete operations can emit
      `contact-activity-logs.created`, `contact-activity-logs.updated`, and
      `contact-activity-logs.deleted` webhook events.
  - name: Bank Accounts
    description: >-
      Manage bank accounts, including bank details, primary account state, and
      open banking metadata. Create, update, and delete operations can emit
      `bank-accounts.created`, `bank-accounts.updated`, and
      `bank-accounts.deleted` webhook events.
  - name: Webhooks
    description: >-
      Manage outbound webhook subscriptions for Fintoro API. This section covers
      subscription CRUD, manual secret rotation, and the delivery payload
      contract for event-driven integrations. The delivery contract, signature
      verification, retry behavior, and full event catalog are documented in the
      [Webhooks guide](/en/webhooks).
  - name: Warehouses
    description: >-
      CRUD operations for warehouses, including inbound and outbound numbering
      series. Create, update, and delete operations can emit
      `warehouses.created`, `warehouses.updated`, and `warehouses.deleted`
      webhook events.
  - name: Warehouse Inbound Receipts
    description: >-
      CRUD operations for warehouse inbound receipts, including warehouse
      detail, supplier snapshot, receipt items, and `pdfDownloadUrl`. Create,
      update, and delete operations can emit
      `warehouse-inbound-receipts.created`,
      `warehouse-inbound-receipts.updated`, and
      `warehouse-inbound-receipts.deleted` webhook events.
  - name: Warehouse Outbound Receipts
    description: >-
      CRUD operations for warehouse outbound receipts, including warehouse
      detail, client snapshot, receipt items, and `pdfDownloadUrl`. Create and
      update use the same stock-availability validation as the web. Create,
      update, and delete operations can emit
      `warehouse-outbound-receipts.created`,
      `warehouse-outbound-receipts.updated`, and
      `warehouse-outbound-receipts.deleted` webhook events.
  - name: Price List Items
    description: >-
      CRUD operations for price list and warehouse items. These endpoints return
      the unit as a nested object, support filtering by name, EAN, warehouse
      code, price, and stock, and expose the same business contract that Fintoro
      uses for warehouse tracking, EANs, and purchase prices. Create, update,
      and delete operations can emit `price-list-items.created`,
      `price-list-items.updated`, and `price-list-items.deleted` webhook events.
      Stock changes caused by warehouse inbound and outbound receipts can emit
      the `price-list-items.stock-updated` webhook event.
  - name: Document Payments
    description: >-
      Payment records for public documents. This section covers listing payments
      of one document, creating a new payment, showing one payment, and deleting
      it. Supported document types are `invoice`, `proforma`, `credit-note`,
      `received-invoice`, and `received-receipt`. Create and delete operations
      can emit `document-payments.created` and `document-payments.deleted`
      webhook events. When a newly recorded payment makes a supported document
      fully paid, Fintoro can also emit the matching `*.paid` event for that
      document resource.
  - name: Document Emails
    description: >-
      Send supported public documents by email. The endpoint uses a single
      contract around `documentType` + `documentId`, validates document
      ownership, and supports `invoice`, `proforma`, `order`, `credit-note`, and
      `quotation`.
  - name: Invoices
    description: >-
      CRUD operations for invoices. Create, update, and delete operations can
      emit `invoices.created`, `invoices.updated`, and `invoices.deleted`
      webhook events. When a recorded payment makes the invoice fully paid,
      Fintoro can also emit `invoices.paid`.
  - name: Credit Notes
    description: >-
      CRUD operations for credit notes. The contract uses camelCase payloads, a
      full `PUT` update flow, and an explicit link to the original invoice
      through `invoiceId`. The credit-note client is always derived from the
      selected source invoice; `clientId` is not part of the request contract,
      and inline client resolution or create behavior is not supported here.
      Create, update, and delete operations can emit `credit-notes.created`,
      `credit-notes.updated`, and `credit-notes.deleted` webhook events. When a
      recorded payment makes the credit note fully paid, Fintoro can also emit
      `credit-notes.paid`.
  - name: Proformas
    description: >-
      CRUD operations for proformas. The contract follows the same philosophy as
      the public invoice API: camelCase payloads, deterministic client
      resolve/create behavior, create-like defaults, and a full `PUT` update
      flow with no patch fallback to the previous persisted document state.
      Create, update, and delete operations can emit `proformas.created`,
      `proformas.updated`, `proformas.deleted`, and, when a recorded payment
      makes the document fully paid, `proformas.paid`.
  - name: Orders
    description: >-
      CRUD operations for orders. The contract uses camelCase payloads,
      deterministic client resolve/create behavior, create-like defaults, and a
      full `PUT` update flow with no patch fallback to the previous persisted
      document state. Create, update, and delete operations can emit
      `orders.created`, `orders.updated`, and `orders.deleted` webhook events.
  - name: Quotations
    description: >-
      CRUD operations for quotations. The contract uses camelCase payloads,
      deterministic client resolve/create behavior, create-like defaults, and a
      full `PUT` update flow with no patch fallback to the previous persisted
      document state. Create, update, and delete operations can emit
      `quotations.created`, `quotations.updated`, and `quotations.deleted`
      webhook events.
paths:
  /contact-activity-logs/{contactActivityLog}:
    parameters:
      - $ref: '#/components/parameters/ContactActivityLogId'
    patch:
      tags:
        - CRM Events
      summary: Update a CRM event
      description: >-
        Partially updates a CRM event. Only `metadata`, optional new
        `attachmentUploadTokens[]`, and optional `deletedAttachmentIds[]` are
        mutable; `type` and target fields are forbidden on update. Attachments
        are not supported for the `document_linked` type. Metadata field
        availability is documented directly on `metadata.content`,
        `metadata.email`, `metadata.personName`, `metadata.phoneNumber`,
        `metadata.documentType`, and `metadata.documentId`.
      operationId: updateContactActivityLog
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ContactActivityLogUpdateInput'
      responses:
        '200':
          description: CRM event updated.
          headers:
            X-Request-Id:
              $ref: '#/components/headers/XRequestId'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContactActivityLog'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          description: Request payload validation error.
          headers:
            X-Request-Id:
              $ref: '#/components/headers/XRequestId'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: The given data was invalid.
                  errors:
                    type: object
                    additionalProperties:
                      type: array
                      items:
                        type: string
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
components:
  parameters:
    ContactActivityLogId:
      name: contactActivityLog
      in: path
      required: true
      description: Contact activity ID.
      schema:
        type: integer
        example: 551
  schemas:
    ContactActivityLogUpdateInput:
      description: >-
        Payload for updating a CRM event. Only `metadata`, optional new
        `attachmentUploadTokens[]`, and optional `deletedAttachmentIds[]` are
        mutable. `type`, `businessCaseId`, `clientId`, and `supplierId` are
        forbidden on update.
      type: object
      required:
        - metadata
      properties:
        metadata:
          description: >-
            Type-dependent payload for the existing CRM event type. Do not send
            snapshot fields or `relatedDocument`; those are computed or
            persisted by the backend.
          type: object
          properties:
            content:
              description: >-
                Note text, email body, or phone-call summary. Available only for
                existing types `note`, `email`, and `phone_call`. Required when
                the existing type is one of those three values.
              type:
                - string
                - 'null'
              example: Follow-up call summary
            email:
              description: >-
                Sender or recipient email address. Available only for existing
                type `email`. Required when the existing type is `email`.
              type:
                - string
                - 'null'
              format: email
              example: crm@example.test
            personName:
              description: >-
                Name of the person involved in the phone call. Available only
                for existing type `phone_call`. Required when the existing type
                is `phone_call`.
              type:
                - string
                - 'null'
              example: John Caller
            phoneNumber:
              description: >-
                Phone number of the person involved in the phone call. Available
                only for existing type `phone_call`. Optional.
              type:
                - string
                - 'null'
              example: '+421900000000'
            documentType:
              description: >-
                Linked document type. Available only for existing type
                `document_linked`. Required when the existing type is
                `document_linked`.
              type:
                - string
                - 'null'
              enum:
                - invoice
                - proforma
                - order
                - quotation
                - credit-note
              example: invoice
            documentId:
              description: >-
                ID of the linked current-company document. Available only for
                existing type `document_linked`. Required when the existing type
                is `document_linked`.
              type:
                - integer
                - 'null'
              example: 301
        attachmentUploadTokens:
          type: array
          items:
            type: string
          example:
            - eyJpdiI6Ik9wYXF1ZS1Ub2tlbi0xIn0=
        deletedAttachmentIds:
          type: array
          items:
            type: integer
          example:
            - 9001
    ContactActivityLog:
      description: Unified CRM event.
      type: object
      properties:
        id:
          description: Internal CRM event ID.
          type: integer
          example: 551
        type:
          description: CRM event type.
          type: string
          enum:
            - note
            - email
            - phone_call
            - document_linked
            - document_created
            - document_updated
            - document_deleted
            - document_payment_added
          example: note
        metadata:
          $ref: '#/components/schemas/ContactActivityLogMetadata'
          description: CRM event metadata prepared for the Fintoro API response.
        attachments:
          type: array
          items:
            $ref: '#/components/schemas/ContactActivityLogAttachment'
        businessCaseId:
          description: Business case ID when the activity is linked to a business case.
          type:
            - integer
            - 'null'
          example: 501
        clientId:
          description: >-
            Client ID when the activity is linked directly to a client outside a
            business case.
          type:
            - integer
            - 'null'
          example: 101
        supplierId:
          description: >-
            Supplier ID when the activity is linked directly to a supplier
            outside a business case.
          type:
            - integer
            - 'null'
          example: 151
        createdAt:
          description: CRM event creation timestamp.
          type:
            - string
            - 'null'
          format: date-time
          example: '2026-03-10T10:00:00+01:00'
        updatedAt:
          description: CRM event last update timestamp.
          type:
            - string
            - 'null'
          format: date-time
          example: '2026-03-10T10:30:00+01:00'
    ContactActivityLogMetadata:
      description: >-
        CRM event response metadata tailored for the Fintoro API. For
        document-related event types, the live linked document is returned
        directly in `relatedDocument`, and snapshot amounts expose their
        snapshot currency through `documentCurrencySnapshot`.
      type: object
      properties:
        content:
          description: >-
            Stored note text, email body, or phone-call summary of the CRM
            event. Available only for response types `note`, `email`, and
            `phone_call`.
          type:
            - string
            - 'null'
          example: Follow-up call summary
        email:
          description: >-
            Email address stored on the CRM event. Available only for response
            type `email`.
          type:
            - string
            - 'null'
          format: email
          example: crm@example.test
        personName:
          description: >-
            Name of the person involved in the phone call. Available only for
            response type `phone_call`.
          type:
            - string
            - 'null'
          example: John Caller
        phoneNumber:
          description: >-
            Phone number of the person involved in the phone call, when
            provided. Available only for response type `phone_call`.
          type:
            - string
            - 'null'
          example: '+421900000000'
        documentNumberSnapshot:
          description: >-
            Snapshot of the document number stored on lifecycle events
            `document_created`, `document_updated`, and `document_deleted`.
          type:
            - string
            - 'null'
          example: '20260001'
        documentPriceSnapshot:
          description: >-
            Snapshot of the document gross total stored on lifecycle events
            `document_created` and `document_updated`.
          type:
            - number
            - 'null'
          format: float
          example: 121
        documentCurrencySnapshot:
          description: >-
            Currency snapshot used for snapshot amounts in metadata. Available
            on lifecycle events that expose a snapshot amount or payment amount.
          anyOf:
            - $ref: '#/components/schemas/Currency'
            - type: 'null'
        paidAmount:
          description: >-
            Amount of the added payment stored on the `document_payment_added`
            event.
          type:
            - number
            - 'null'
          format: float
          example: 25.5
        relatedDocument:
          description: >-
            Linked document. Available only for `document_linked`,
            `document_created`, `document_updated`, `document_deleted`, and
            `document_payment_added`. `null` when the linked document no longer
            exists.
          anyOf:
            - $ref: '#/components/schemas/RelatedDocument'
            - type: 'null'
    ContactActivityLogAttachment:
      description: One attachment linked to a CRM event.
      type: object
      properties:
        id:
          description: Internal CRM event attachment ID.
          type: integer
          example: 9001
        name:
          description: Original file name.
          type: string
          example: note.pdf
        mimeType:
          description: Attachment MIME type.
          type: string
          example: application/pdf
        url:
          description: Direct attachment URL when available.
          type: string
          example: https://cdn.fintoro.sk/contact-activity-attachments/note.pdf
    Currency:
      description: Currency available in Fintoro API lookup endpoints.
      type: object
      properties:
        id:
          description: Stable currency ID used across the API.
          type: integer
          example: 1
        symbol:
          description: ISO or internal currency symbol.
          type: string
          example: EUR
        name:
          description: >-
            Localized currency label. When you send `Accept-Language`, the
            backend translates this system-owned label accordingly.
          type: string
          example: Euro
        mark:
          description: Short currency mark displayed in Fintoro.
          type: string
          example: €
    RelatedDocument:
      description: Live linked document resolved by the backend from `relatedEntity`.
      type: object
      properties:
        documentType:
          description: Linked document type.
          type: string
          enum:
            - invoice
            - proforma
            - order
            - quotation
            - credit-note
            - received-invoice
            - received-receipt
            - warehouse-inbound-receipt
            - warehouse-outbound-receipt
          example: invoice
        documentId:
          description: Linked document ID.
          type: integer
          example: 301
        name:
          description: Human-readable document label.
          type: string
          example: Invoice 20260001
        number:
          description: Document number.
          type: string
          example: '20260001'
        issueDate:
          description: Document issue date when available.
          type: string
          example: '2026-03-10'
        totalWithVat:
          description: Current live gross total of the linked document when available.
          type:
            - number
            - 'null'
          format: float
          example: 121
        currency:
          description: Current linked document currency when available.
          anyOf:
            - $ref: '#/components/schemas/Currency'
            - type: 'null'
  headers:
    XRequestId:
      description: >-
        Unique request identifier used for tracing, audit logs, and support
        diagnostics.
      schema:
        type: string
        example: req_public_api_01
    ContentLanguage:
      description: Language selected for the request based on `Accept-Language`.
      schema:
        type: string
        example: en
  responses:
    Forbidden:
      description: Access to the resource is not allowed or scope.
      headers:
        X-Request-Id:
          $ref: '#/components/headers/XRequestId'
        Content-Language:
          $ref: '#/components/headers/ContentLanguage'
      content:
        application/json:
          schema:
            type: object
            properties:
              message:
                type: string
                example: This action is unauthorized.
    NotFound:
      description: The requested resource was not found.
      headers:
        X-Request-Id:
          $ref: '#/components/headers/XRequestId'
        Content-Language:
          $ref: '#/components/headers/ContentLanguage'
      content:
        application/json:
          schema:
            type: object
            properties:
              message:
                type: string
                example: No query results for model.
    TooManyRequests:
      description: >-
        The company exceeded the Fintoro API rate limit. This 429 response
        includes the same `X-RateLimit-Limit` and `X-RateLimit-Remaining`
        headers as other throttled responses and additionally adds `Retry-After`
        and `X-RateLimit-Reset`. If you need a higher limit, contact
        info@fintoro.sk for custom enterprise terms.
      headers:
        X-Request-Id:
          $ref: '#/components/headers/XRequestId'
        X-RateLimit-Limit:
          description: >-
            Maximum number of requests allowed for the company in the current
            60-second window. This header is returned on all throttled
            responses, not only on 429.
          schema:
            type: integer
            example: 120
        X-RateLimit-Remaining:
          description: >-
            Number of requests remaining for the company in the current
            60-second window. This header is returned on all throttled
            responses, not only on 429.
          schema:
            type: integer
            example: 0
        Retry-After:
          description: >-
            Number of seconds after which you can safely retry the request. This
            header is sent only on 429 responses.
          schema:
            type: integer
            example: 60
        X-RateLimit-Reset:
          description: >-
            Unix timestamp when the current rate-limit window resets. This
            header is sent only on 429 responses.
          schema:
            type: integer
            example: 1774810800
      content:
        application/json:
          schema:
            type: object
            properties:
              message:
                type: string
                example: Too Many Attempts.
    InternalServerError:
      description: >-
        An unexpected internal error occurred. This should not happen in normal
        operation and is automatically reported to us.
      headers:
        X-Request-Id:
          $ref: '#/components/headers/XRequestId'
        Content-Language:
          $ref: '#/components/headers/ContentLanguage'
      content:
        application/json:
          schema:
            type: object
            properties:
              message:
                type: string
                example: Server Error
    ServiceUnavailable:
      description: >-
        The API is temporarily unavailable during scheduled maintenance. We
        announce planned downtime at least 24 hours in advance.
      headers:
        X-Request-Id:
          $ref: '#/components/headers/XRequestId'
        Content-Language:
          $ref: '#/components/headers/ContentLanguage'
      content:
        application/json:
          schema:
            type: object
            properties:
              message:
                type: string
                example: Service Unavailable
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: Token
      description: Bearer token created for a specific company in Integrations → API.

````