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

# Angebot anlegen

> Legt ein neues Angebot an. Der Inhalt wird als strukturiertes Dokument aus Blöcken übergeben.



## OpenAPI

````yaml assets/openapi-v2-offers.json post /offers
openapi: 3.1.0
info:
  title: Fynn V2 Angebote API
  version: 2026-06
  description: >-
    REST API für Fynn Angebote. Damit legst du Angebote an, veröffentlichst sie
    für deine Empfänger, forderst elektronische Unterschriften an und liest die
    öffentliche Empfängeransicht. Angebote werden in der Regel im Wallet
    erstellt und vom Empfänger in der Offer-View angenommen. Diese API ist für
    Integrationen gedacht, die denselben Ablauf programmatisch abbilden.
    Authentifiziere die Verwaltungs-Endpunkte mit einem API-Token deiner
    Organisation. Die öffentlichen Endpunkte erreichst du über den persönlichen
    Einladungslink ohne Anmeldung.
servers:
  - url: https://coreapi.io
    description: Production
  - url: https://preview.coreapi.io
    description: Sandbox
security:
  - ApiToken: []
tags:
  - name: Offers
    description: Angebote anlegen, veröffentlichen und verwalten.
  - name: Offer templates
    description: Wiederverwendbare Angebotsvorlagen.
  - name: Public offer
    description: Öffentliche Empfängeransicht über den Einladungslink.
paths:
  /offers:
    post:
      tags:
        - Offers
      summary: Angebot anlegen
      description: >-
        Legt ein neues Angebot an. Der Inhalt wird als strukturiertes Dokument
        aus Blöcken übergeben.
      operationId: createOffer
      parameters: []
      requestBody:
        description: The new Offer resource
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Offer.CreateOfferV2Input-CreateOffer'
        required: true
      responses:
        '201':
          description: Offer resource created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Offer-OfferDetail'
          links: {}
        '400':
          description: Invalid input
        '422':
          description: Unprocessable entity
      deprecated: false
      security:
        - ApiToken: []
components:
  schemas:
    Offer.CreateOfferV2Input-CreateOffer:
      type: object
      description: ''
      deprecated: false
      properties:
        template:
          type:
            - string
            - 'null'
          format: uuid
          example: ad8c7c0e-3b1a-4f5c-8b7a-5d5b6a4b2f1e
        customer:
          type:
            - string
            - 'null'
          format: uuid
          example: ad8c7c0e-3b1a-4f5c-8b7a-5d5b6a4b2f1e
        crmDealId:
          type:
            - string
            - 'null'
        crmCompanyId:
          type:
            - string
            - 'null'
        salesChannel:
          description: >-
            Sales channel the offer is assigned to — UUID or technical name
            (e.g.
          type:
            - string
            - 'null'
    Offer-OfferDetail:
      type: object
      description: ''
      deprecated: false
      properties:
        id:
          readOnly: true
          type: string
        subscription:
          anyOf:
            - $ref: '#/components/schemas/Subscription-OfferDetail'
            - type: 'null'
        customer:
          anyOf:
            - $ref: '#/components/schemas/Customer-OfferDetail'
            - type: 'null'
        number:
          type: string
        name:
          type:
            - string
            - 'null'
        status:
          readOnly: true
          type: string
          enum:
            - open
            - signing
            - awaiting_invoice_details
            - signed
            - archived
        sections:
          type: array
          items:
            type: string
        customVariables:
          description: >-
            Vom Nutzer im Editor angelegte eigene Variablen (Feedback-Runde 1,

            Punkt 11): flaches name => Wert-Mapping, das der
            OfferVariableResolver

            zusätzlich zu den Systemvariablen auflöst. Bei Namenskollision haben

            Systemvariablen Vorrang ({@see
            \Fynn\Core\Domain\Offer\Service\OfferVariableResolver}).
          type:
            - object
            - 'null'
          additionalProperties:
            type: string
        locale:
          readOnly: true
          type: string
        recipients:
          readOnly: true
          type: array
          items:
            $ref: '#/components/schemas/OfferRecipient-OfferDetail'
        purchaseOrderDocument:
          readOnly: true
          description: >-
            Vom Käufer (oder der delegierten Person) hochgeladenes
            Purchase-Order-

            Dokument (D17). Verknüpft beim captureInvoiceData über

            `purchaseOrder.ref` aus dem Invoice-Details-Submit; beim Finalize
            wird

            die Relation zusätzlich auf die Subscription kopiert. Die
            KI-Extraktion

            der PO-Daten kommt bewusst NICHT in dieser Welle.
          anyOf:
            - $ref: '#/components/schemas/Media-OfferDetail'
            - type: 'null'
        auditLogDocument:
          readOnly: true
          anyOf:
            - $ref: '#/components/schemas/Media-OfferDetail'
            - type: 'null'
        signedDocument:
          readOnly: true
          anyOf:
            - $ref: '#/components/schemas/Media-OfferDetail'
            - type: 'null'
        signedAt:
          format: date-time
          example: '2021-01-01T00:00:00+00:00'
          readOnly: true
          type:
            - string
            - 'null'
        autoActivateSubscription:
          default: true
          example: true
          type: boolean
        crmDealId:
          readOnly: true
          type:
            - string
            - 'null'
        acceptanceMode:
          description: >-
            Offer-level acceptance mode (per D9 in
            docs/build-offer-view-wave-decisions.md).
          default: click
          example: click
          type: string
        dealType:
          description: Deal-type denormalised at publish-time (per D2).
          default: new_business
          example: new_business
          type: string
        validUntil:
          format: date-time
          example: '2021-01-01T00:00:00+00:00'
          description: >-
            Offer expiry (per D7). Buyers acting on a stale link are rejected
            via

            `OfferExpiredException` (HTTP 410). Frozen at publish time; nullable
            for

            historical offers.
          type:
            - string
            - 'null'
        cachedContractValueCents:
          readOnly: true
          description: >-
            Cached recurring contract value (per D6). Written at publish-time by

            `OfferContractValueCalculator` for list-view filtering/sorting only;

            the read path always recomputes. Cents; flat_fee=qty-agnostic
            invariant

            honored by the calculator.
          type:
            - string
            - 'null'
        cachedContractValueCurrency:
          readOnly: true
          type:
            - string
            - 'null'
        createdAt:
          format: date-time
          example: '2021-01-01T00:00:00+00:00'
          readOnly: true
          description: The date and time when the resource was created.
          type: string
        updatedAt:
          format: date-time
          example: '2021-01-01T00:00:00+00:00'
          readOnly: true
          description: The date and time when the resource was last updated.
          type: string
        capturedInvoiceDetails:
          readOnly: true
          description: >-
            Roh-Shape der erfassten Rechnungsdaten für den wallet-Detail-Output

            (D21 Manual-Completion-Prefill liest `offer.capturedInvoiceDetails`

            tolerant — Legacy-Zeilen tragen 13 Schlüssel, neue zusätzlich

            costCenter/leitwegId). Bewusst der persistierte Array-Shape statt
            des

            VOs, dessen Properties keine Serialisierungs-Gruppen tragen.
          type:
            - object
            - 'null'
          additionalProperties:
            type: string
        contactPerson:
          readOnly: true
          description: The contact person of the offer
          anyOf:
            - $ref: '#/components/schemas/ContactPerson-OfferDetail'
            - type: 'null'
        signed:
          readOnly: true
          type: boolean
        issuedAt:
          format: date-time
          example: '2021-01-01T00:00:00+00:00'
          readOnly: true
          description: >-
            Ausstellungsdatum (issueDate) als roher UTC-Instant: der Zeitpunkt,
            zu dem

            die publizierte Version beim Käufer live ging (autoritativ,
            FYNN-3273).
          type: string
        publishedVersionHash:
          readOnly: true
          type:
            - string
            - 'null'
        currentVersionHash:
          readOnly: true
          type:
            - string
            - 'null'
    Subscription-OfferDetail:
      type: object
      description: ''
      deprecated: false
      properties:
        id:
          readOnly: true
          example: ad8f1c2c-3b1c-4b0a-8b0a-0b0b0b0b0b0b
          type: string
        externalId:
          type:
            - string
            - 'null'
        paymentMethod:
          description: >-
            The payment method of the subscription. If null, the default payment
            method of the customer is used.
          anyOf:
            - $ref: '#/components/schemas/PaymentMethod-OfferDetail'
            - type: 'null'
        invoiceAddress:
          description: >-
            The invoice address of the subscription. If null, the default
            invoice address of the customer is used.
          anyOf:
            - $ref: '#/components/schemas/CustomerAddress-OfferDetail'
            - type: 'null'
        deliveryAddress:
          description: >-
            The delivery address of the subscription. If null, the default
            address of the customer is used.
          anyOf:
            - $ref: '#/components/schemas/CustomerAddress-OfferDetail'
            - type: 'null'
        number:
          description: The number of the subscription.
          example: S-00000001
          type: string
        customer:
          $ref: '#/components/schemas/Customer-OfferDetail'
        plan:
          readOnly: true
          description: Legacy plan reference. Will be removed.
          anyOf:
            - $ref: '#/components/schemas/Plan-OfferDetail'
            - type: 'null'
        activePlanTier:
          readOnly: true
          description: >-
            Optional reference to the active Plan-Tier (new Plan/Tier model in
            Domain\Plan).
          anyOf:
            - $ref: '#/components/schemas/PlanTier-OfferDetail'
            - type: 'null'
        name:
          description: >-
            The name of the subscription. Defaults to the name of the plan. This
            will be used in the invoice for the grouping headers.
          example: Fitness M
          type:
            - string
            - 'null'
        items:
          description: The selected items of the subscription. Can be charges or addons.
          type: array
          items:
            $ref: '#/components/schemas/SubscriptionItem-OfferDetail'
        billingGroup:
          description: The billing group defines the billing cycle of the subscription.
          anyOf:
            - $ref: '#/components/schemas/BillingGroup-OfferDetail'
            - type: 'null'
        periods:
          type: array
          items:
            $ref: '#/components/schemas/TermPeriod-OfferDetail'
        status:
          readOnly: true
          description: |-
            The status of the subscription.

            Possible values:
             * `draft`: The subscription is in draft mode and not active yet.
             * `active`: The subscription is active and will be billed.
             * `paused`: The subscription is paused and will not be billed.
             * `cancelled`: The subscription is cancelled and will not be billed anymore.
             * `terminated`: The subscription is terminated and will not be billed anymore.
             * `voided`: The subscription is voided and will not be billed anymore. Subscription will be removed from all statistics.
             * `offer`: The subscription is an offer and waiting for acceptance.
          example: active
        activatedAt:
          format: date-time
          example: '2021-01-01T00:00:00+00:00'
          readOnly: true
          description: The date the subscription was activated.
          type:
            - string
            - 'null'
        poNumber:
          description: The po number of the subscription.
          example: PO-00000001
          type:
            - string
            - 'null'
        contractDetails:
          $ref: '#/components/schemas/ContractDetails-OfferDetail'
          description: The contract details of the subscription.
        trialEndsOn:
          format: date-time
          example: '2021-01-01T00:00:00+00:00'
          readOnly: true
          description: The date the trial period ends.
          type:
            - string
            - 'null'
        customFields:
          additionalProperties:
            type: string
          type:
            - object
            - 'null'
          description: >-
            Custom fields for the entity. The keys are the field names and the
            values are the field values. They need to be configured under
            \"/custom-fields\" in the API documentation. The input is validated
            against the configuration. For more details see [Custom Fields
            Guide](/guide/tenant/custom-fields)
          example:
            field1: value1
            field2: value2
        statistics:
          readOnly: true
          anyOf:
            - $ref: '#/components/schemas/SubscriptionStatistics-OfferDetail'
            - type: 'null'
        createdAt:
          format: date-time
          example: '2021-01-01T00:00:00+00:00'
          readOnly: true
          description: The date and time when the resource was created.
          type: string
        updatedAt:
          format: date-time
          example: '2021-01-01T00:00:00+00:00'
          readOnly: true
          description: The date and time when the resource was last updated.
          type: string
        defaultPaymentMethod:
          readOnly: true
          description: >-
            The payment method is null, we use the default payment method of the
            customer.
          type: boolean
        defaultInvoiceAddress:
          readOnly: true
          description: >-
            The invoice address is null, we use the default invoice address of
            the customer.
          type: boolean
        nextBillingDate:
          format: date-time
          example: '2021-01-01T00:00:00+00:00'
          readOnly: true
          description: The next billing date of the subscription.
          type:
            - string
            - 'null'
        lastBillingAt:
          format: date-time
          example: '2021-01-01T00:00:00+00:00'
          readOnly: true
          description: The last billing date of the subscription.
          type:
            - string
            - 'null'
        cancellationDate:
          format: date-time
          example: '2021-01-01T00:00:00+00:00'
          readOnly: true
          description: The date the subscription will be cancelled.
          type:
            - string
            - 'null'
        cancelledAt:
          format: date-time
          example: '2021-01-01T00:00:00+00:00'
          readOnly: true
          description: The date when the subscription was cancelled.
          type:
            - string
            - 'null'
        cancellationReason:
          readOnly: true
          description: The reason why the subscription was cancelled.
          anyOf:
            - $ref: '#/components/schemas/CancellationReason-OfferDetail'
            - type: 'null'
        isCancellationPending:
          readOnly: true
          description: >-
            Indicates if the subscription is pending for cancellation. If true,
            the subscription will be cancelled in the future and the
            cancellation could be revoked.
          type: boolean
        nextPossibleCancellationDate:
          readOnly: true
          type:
            - array
            - 'null'
          items:
            type: string
        partner:
          readOnly: true
          description: The partner of the customer.
          anyOf:
            - $ref: '#/components/schemas/PartnerResource-OfferDetail'
            - type: 'null'
        activeItems:
          readOnly: true
          description: >-
            Used to show this in the customerfront, when the customer is logged
            in, instead of complex business logic in the frontend.
          type: array
          items:
            type: string
    Customer-OfferDetail:
      type: object
      description: ''
      deprecated: false
      properties:
        id:
          readOnly: true
          example: 00000000-0000-0000-0000-000000000000
          type: string
        customerNumber:
          minLength: 2
          maxLength: 255
          example: CUSTOMER-000
          nullable: false
        timeZone:
          type: string
          example: Europe/Berlin
          description: IANA time zone
          readOnly: true
          default: Europe/Berlin
        firstName:
          minLength: 2
          maxLength: 255
          description: Can be empty if the customer is a company.
          example: John
          nullable: true
        lastName:
          minLength: 2
          maxLength: 255
          description: Can be empty if the customer is a company.
          example: Doe
          nullable: true
        currencyCode:
          description: >-
            Can be empty. In this case the default currency of the tenant is
            used.
          externalDocs:
            url: https://schema.org/priceCurrency
          example: EUR
          type: string
        companyName:
          minLength: 2
          maxLength: 255
          example: Acme Inc.
          type:
            - string
            - 'null'
        datevId:
          minLength: 2
          maxLength: 255
          description: The ID of the customer in DATEV
          example: '123456789'
          type:
            - string
            - 'null'
        status:
          default: STATUS_ACTIVE
          example: STATUS_ACTIVE
          enum:
            - STATUS_ACTIVE
            - STATUS_ARCHIVED
            - STATUS_SUSPENDED
    OfferRecipient-OfferDetail:
      type: object
      description: ''
      deprecated: false
      properties:
        id:
          readOnly: true
          type: string
        email:
          type: string
        firstName:
          type:
            - string
            - 'null'
        lastName:
          type:
            - string
            - 'null'
        role:
          type: string
          enum:
            - read
            - sign
            - countersigner
        createdAt:
          format: date-time
          example: '2021-01-01T00:00:00+00:00'
          readOnly: true
          type: string
        signingStatus:
          readOnly: true
          default: not_started
          example: not_started
          type: string
          enum:
            - pending
            - started
            - signed
            - not_started
            - archived
        signingLog:
          readOnly: true
          type: array
          items:
            type: string
        signedDocument:
          readOnly: true
          anyOf:
            - $ref: '#/components/schemas/Media-OfferDetail'
            - type: 'null'
        link:
          readOnly: true
          description: Link to the offer for the recipient
          example: https://example.com/o/1/recipient-1
          type: string
    Media-OfferDetail:
      type: object
      description: ''
      deprecated: false
      properties:
        id:
          type: string
          format: uuid
          example: ad8a3b9e-5b0a-4e1a-9c1a-0b9b2b8b0b0b
          readOnly: true
        mimeType:
          description: The mime type of the media
          example: image/jpeg
          type:
            - string
            - 'null'
        fileExtension:
          description: The file extension of the media
          example: jpg
          type: string
        fileName:
          description: The original file name of the media
          example: invoice.jpg
          type: string
    ContactPerson-OfferDetail:
      type: object
      description: ''
      deprecated: false
      properties:
        id:
          type: string
        firstName:
          type: string
        lastName:
          type: string
        email:
          type: string
        avatar:
          type:
            - string
            - 'null'
        phone:
          type:
            - string
            - 'null'
        linkedin:
          type:
            - string
            - 'null'
        position:
          type:
            - string
            - 'null'
        website:
          type:
            - string
            - 'null'
    PaymentMethod-OfferDetail:
      type: object
      description: ''
      deprecated: false
      properties:
        id:
          readOnly: true
          type: string
        gatewayName:
          type: string
          enum:
            - wallet
            - sepa_debit
            - stripe
            - unzer
            - fake_provider
            - paypal
            - bank_transfer
            - go_cardless
            - testing
        type:
          type:
            - string
            - 'null'
          enum:
            - sepa_debit
            - card
            - paypal
            - bank_transfer
            - wallet
            - fake_provider
            - null
        default:
          type: boolean
        status:
          default: active
          example: active
          type: string
          enum:
            - active
            - action_required
            - expired
            - revoked
            - gateway_unconfigured
        enabled:
          type: boolean
        name:
          type:
            - string
            - 'null'
        creationDate:
          format: date-time
          example: '2021-01-01T00:00:00+00:00'
          readOnly: true
          type: string
        expirationDate:
          format: date-time
          example: '2021-01-01T00:00:00+00:00'
          type:
            - string
            - 'null'
        card:
          readOnly: true
          description: The card data of the payment method, if the type is "card"
          type: object
          properties:
            brand:
              type: string
              example: Visa
              description: The brand of the card
            last4:
              type: string
              example: '4242'
              description: The last 4 digits of the card
            expMonth:
              type: integer
              example: 12
              description: The expiration month of the card
            expYear:
              type: integer
              example: 2022
              description: The expiration year of the card
            cardHolder:
              type: string
              example: Max Mustermann
              description: The card holder name
        sepaDebit:
          readOnly: true
          description: >-
            The sepa mandate data of the payment method, if the type is
            "sepa_debit"
          type: object
          properties:
            iban:
              type: string
              example: DE8937*********3232
              description: The iban of the sepa mandate
            bic:
              type: string
              example: COBADEFFXXX
              description: The bic of the sepa mandate
            mandateReference:
              type: string
              example: MNDT-2021-123456
              description: The mandate reference of the sepa mandate
            signingDate:
              type: string
              example: '2021-01-01T00:00:00+00:00'
              description: The signing date of the sepa mandate
        paypal:
          readOnly: true
          description: The paypal data of the payment method, if the type is "paypal"
          type: object
          properties:
            email:
              type: string
              example: max@mustermann.de
              description: The email of the paypal account
            billingAgreementId:
              type: string
              example: I-1J5gqz2eZvKYlo2C2X2X2X2X
              description: The billing agreement id of the paypal account
    CustomerAddress-OfferDetail:
      type: object
      description: ''
      deprecated: false
    Plan-OfferDetail:
      type: object
      description: ''
      deprecated: false
      properties:
        id:
          readOnly: true
          description: The unique identifier of the plan.
          example: ad8f1c2c-3b1c-4b0a-8b0a-0b0b0b0b0b0b
          type: string
        family:
          description: >-
            Allow to group plans together. This allows to upgrade or downgrade
            between plans in the same family.
          anyOf:
            - $ref: '#/components/schemas/PlanFamily-OfferDetail'
            - type: 'null'
        code:
          description: >-
            The code of the plan. This is used to identify the plan e.g. in the
            checkout url.
          example: basic-m2023
          type: string
        allowCheckout:
          description: >-
            Allow to checkout this plan. If this is set to false, the plan will
            not be available in the checkout and can only be assigned to a
            subscription by the API or in the admin panel. The plan.code is a
            part of the checkout url.
          default: true
          example: true
          type: boolean
        status:
          readOnly: true
          description: |-
            The status of the plan.

            Possible values:
             * `draft`: The plan is a draft and not available for usage in a subscription.
             * `active`: The plan is active and can be used in a subscription.
             * `archived`: The plan is archived and not longer available for usage in a subscription.
             * `inactive`: The plan is inactive and not available for usage in a subscription.
          default: draft
          example: draft
        changeBehaviour:
          description: >-
            Define the allowed actions after subscription by customer, for
            upgrade / downgrade.
          default: not_changeable
          example: upgradeable_and_downgradeable
          type: string
          enum:
            - upgradeable
            - downgradeable
            - upgradeable_and_downgradeable
            - not_changeable
        changeApplyBehaviour:
          description: >-
            Define the behaviour when a plan change will be applied. If null the
            default behaviour will be used.
          default: end_of_period
          example: end_of_period
          type: string
          enum:
            - immediately
            - end_of_period
    PlanTier-OfferDetail:
      type: object
      description: ''
      deprecated: false
    SubscriptionItem-OfferDetail:
      type: object
      description: ''
      deprecated: false
      properties:
        id:
          readOnly: true
          example: 01F9ZQZJZJQZJZJZJZJZJZJZJZ
          type: string
        name:
          readOnly: true
          description: >-
            The name of the item which will be used in the invoice. The name is
            translated based on the customer's locale.
          example: Fitness M
          type: string
        description:
          readOnly: true
          description: >-
            The description of the item which will be used in the invoice. The
            description is translated based on the customer's locale.
          example: Everything included
          type:
            - string
            - 'null'
        furtherInformation:
          readOnly: true
          description: >-
            Further information defines additional information for the item
            which will be displayed in the invoice.
          example: 'Additional agreements: The contract includes a free drink flatrate.'
          type:
            - string
            - 'null'
        status:
          readOnly: true
          description: |-
            The status of the item.

            Possible values:
             * `active`: The item is active and will be billed.
             * `canceled`: The item is canceled and will be billed until the end of the contract.
             * `pending`: The item is pending and will be billed after the contract start.
             * `terminated`: The item is terminated and will not be billed.
          example: active
          enum:
            - active
            - canceled
            - pending
            - terminated
        subscriptionId:
          readOnly: true
          type: string
    BillingGroup-OfferDetail:
      type: object
      description: ''
      deprecated: false
    TermPeriod-OfferDetail:
      type: object
      description: ''
      deprecated: false
      properties:
        id:
          readOnly: true
          type: string
        contractPeriodCount:
          readOnly: true
          type: integer
        contractPeriod:
          $ref: '#/components/schemas/Interval-OfferDetail'
          example: 1M
          description: |

            The billing interval describes when the item is billed.
            If the value is null, the item is billed only once (one-time).
            If the value is not null, the item is billed periodically.
            The value is a string in the following format: [number][unit]
            The unit can be one of the following: H, D, W, M, Y
          nullable: false
          readOnly: true
        cancellationPeriod:
          $ref: '#/components/schemas/Interval-OfferDetail'
          example: 1M
          description: |

            The billing interval describes when the item is billed.
            If the value is null, the item is billed only once (one-time).
            If the value is not null, the item is billed periodically.
            The value is a string in the following format: [number][unit]
            The unit can be one of the following: H, D, W, M, Y
          nullable: false
          readOnly: true
        createdAt:
          format: date-time
          example: '2021-01-01T00:00:00+00:00'
          readOnly: true
          type: string
        updatedAt:
          format: date-time
          example: '2021-01-01T00:00:00+00:00'
          readOnly: true
          type: string
    ContractDetails-OfferDetail:
      type: object
      description: ''
      deprecated: false
      properties:
        contractStart:
          format: date-time
          example: '2021-01-01T00:00:00+00:00'
          description: The start of the contract.
          type: string
        contractEnd:
          format: date-time
          example: '2021-01-01T00:00:00+00:00'
          description: The end of the contract.
          type:
            - string
            - 'null'
    SubscriptionStatistics-OfferDetail:
      type: object
      description: ''
      deprecated: false
      properties:
        unpaidGrossAmount:
          type: object
          required:
            - inputValue
            - currency
          nullable: false
          properties:
            amount:
              type: number
              example: 1000
              description: >-
                The amount as big integer, e.g. 1000 = 10.00 (precision = 2),
                10000 = 10.000 (precision = 3)
              readOnly: true
            precision:
              type: integer
              example: 2
              description: >-
                The precision of the amount, which is the number of digits after
                the decimal separator, e.g. 2 = 10.00, 3 = 10.000
              readOnly: true
            currency:
              type: string
              example: EUR
              description: The currency code, e.g. EUR, USD, CHF
            i18n:
              type: string
              example: 10,00 €
              description: The formatted amount, e.g. 10.00 €, 10.00 $, 10.00 CHF
              readOnly: true
            inputValue:
              type: string
              example: '10.00'
              description: Amount which can be used as input value, e.g. 10.00, 10.000.
          readOnly: true
          example:
            amount: 1000
            precision: 2
            currency: EUR
            i18n: 10,00 €
            inputValue: '10.00'
        totalContractValue:
          type: object
          required:
            - inputValue
            - currency
          nullable: false
          properties:
            amount:
              type: number
              example: 1000
              description: >-
                The amount as big integer, e.g. 1000 = 10.00 (precision = 2),
                10000 = 10.000 (precision = 3)
              readOnly: true
            precision:
              type: integer
              example: 2
              description: >-
                The precision of the amount, which is the number of digits after
                the decimal separator, e.g. 2 = 10.00, 3 = 10.000
              readOnly: true
            currency:
              type: string
              example: EUR
              description: The currency code, e.g. EUR, USD, CHF
            i18n:
              type: string
              example: 10,00 €
              description: The formatted amount, e.g. 10.00 €, 10.00 $, 10.00 CHF
              readOnly: true
            inputValue:
              type: string
              example: '10.00'
              description: Amount which can be used as input value, e.g. 10.00, 10.000.
          readOnly: true
          example:
            amount: 1000
            precision: 2
            currency: EUR
            i18n: 10,00 €
            inputValue: '10.00'
    CancellationReason-OfferDetail:
      type: object
      description: ''
      deprecated: false
      properties:
        createdAt:
          format: date-time
          example: '2021-01-01T00:00:00+00:00'
          readOnly: true
          description: The date and time when the resource was created.
          type: string
        updatedAt:
          format: date-time
          example: '2021-01-01T00:00:00+00:00'
          readOnly: true
          description: The date and time when the resource was last updated.
          type: string
    PartnerResource-OfferDetail:
      type: object
      description: ''
      deprecated: false
      properties:
        id:
          description: The ID of the partner
          example: ad8f7e7d-3b3b-4b3b-8b3b-3b3b3b3b3b3b
          type: string
        name:
          description: The name of the partner
          example: John Doe
          type: string
        number:
          description: The customer number of the partner
          example: '123456'
          type: string
        email:
          description: The email address of the partner
          example: partner@example.com
          type:
            - string
            - 'null'
    PlanFamily-OfferDetail:
      type: object
      description: ''
      deprecated: false
      properties:
        createdAt:
          format: date-time
          example: '2021-01-01T00:00:00+00:00'
          readOnly: true
          description: The date and time when the resource was created.
          type: string
        updatedAt:
          format: date-time
          example: '2021-01-01T00:00:00+00:00'
          readOnly: true
          description: The date and time when the resource was last updated.
          type: string
    Interval-OfferDetail:
      type: object
      description: ''
      deprecated: false
  securitySchemes:
    ApiToken:
      type: http
      scheme: bearer
      description: >-
        API-Token der Organisation. Sende es als Authorization: Bearer api_...
        Das Token ist fest an genau eine Organisation gebunden.

````