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

# Workflow status

> **Erforderliche Berechtigungen:** `invoices:write`

Ruft den aktuellen Status eines Workflow-Prozesses anhand der externen Kennung ab.

Dieser Endpunkt ermöglicht es Drittanbieter-Integrationen, den Verarbeitungsstatus einer Rechnung 
anhand ihrer externen ID zu überprüfen. Die Antwort enthält den aktuellen Status, eine URL zur 
Rechnung in comstruct und eine Historie der Statusänderungen.
API-Schlüssel muss mit einem Kunden verknüpft sein.




## OpenAPI

````yaml GET /workflows/status/{external_id}
openapi: 3.0.3
info:
  title: comstruct Public API
  description: >
    Die comstruct API ist eine umfassende und flexible Lösung zur Optimierung
    des Materialbeschaffungsprozesses für Unternehmen. Diese API bietet eine
    einfache Schnittstelle für Entwickler, um auf Materialbeschaffungsdaten
    zuzugreifen und diese zu verwalten, einschließlich Lieferanteninformationen,
    Lieferungen und Projekte.


    ## Erste Schritte

    Um Zugang zur comstruct API zu erhalten, wenden Sie sich bitte an Ihren
    zuständigen Customer Success Manager. Unser Expertenteam steht Ihnen mit
    erstklassigem Support zur Verfügung, um Ihnen zu helfen, das Beste aus
    unserer API herauszuholen.


    ## Authentifizierung

    Alle API-Endpunkte unter `/v1` erfordern eine Authentifizierung mittels
    API-Schlüssel im `x-api-key`-Header. Jeder API-Schlüssel hat spezifische
    Berechtigungen (Scopes), die bestimmen, welche Endpunkte und Operationen
    verfügbar sind. Die Authentifizierung wird durch Middleware durchgesetzt,
    die den API-Schlüssel und die Berechtigungen für jede Anfrage validiert.


    Kalender-Endpunkte unter `/calendars` verwenden Token-basierte
    Authentifizierung anstelle von API-Schlüsseln.


    ## Datenformate

    - Alle Zeitstempel sind im ISO 8601-Format (UTC)

    - Geldbeträge werden als Dezimalzahlen dargestellt

    - IDs sind UUIDs, sofern nicht anders angegeben


    ## Anfragegrößenbeschränkungen

    - PDF-Rechnungsverarbeitung, benutzerdefinierte Rechnungsverarbeitung und
    Workflow-Verarbeitung: 32MiB

    - Alle anderen Endpunkte: 10MiB


    ## Fehlerbehandlung

    Die API verwendet Standard-HTTP-Statuscodes und gibt detaillierte
    Fehlermeldungen im JSON-Format zurück. Weitere Details finden Sie in den
    Fehlerschemas.


    ## Integrationsmuster

    - **SAP-Integration**: Spezialisierte Endpunkte für SAP-ERP-Systeme

    - **Projektverwaltung**: Vollständiges Projektlebenszyklusmanagement mit
    Benutzerrollen

    - **Lieferverfolgung**: Unterstützung mehrerer Lieferscheinformate
    (OpenTrans, PAHM, Q-Point, benutzerdefiniert)

    - **Rechnungsverarbeitung**: Automatisierte Rechnungsanalyse und
    -validierung mit KI/GPT-Unterstützung

    - **Auftragsverwaltung**: IDS-Auftragsverarbeitung mit XML-Parsing und
    Projektkalenderintegration

    - **Kalenderintegration**: Separate Kalender-Endpunkte für
    iCalendar-Abonnement-Feeds
  version: 1.0.9
  license:
    name: Proprietary
    url: https://comstruct.com
  contact:
    name: comstruct ICT GmbH
    url: https://comstruct.com
    email: support@comstruct.com
  termsOfService: https://comstruct.com/datenschutzerklarung/
  x-logo:
    url: https://app.comstruct.com/logo-light-text.png
    altText: comstruct logo
servers:
  - url: https://api.comstruct.com/v1
    description: Haupt-API-Endpunkte (erfordert API-Schlüssel-Authentifizierung)
    variables: {}
  - url: https://api.comstruct.com
    description: Basisserver für Kalender- und IDS-Endpunkte (andere Authentifizierung)
    variables: {}
security:
  - ApiKey: []
tags:
  - name: Projects
    description: Endpunkte für Projekte.
  - name: Projects (SAP)
    description: SAP-spezifische Projekt-Endpunkte.
  - name: Project Regions
    description: Endpunkte für die Verwaltung von Projektregionen.
  - name: Deliveries
    description: Endpunkte für Lieferungen.
  - name: Deliveries (Supplier)
    description: Lieferantenspezifische Liefer-Endpunkte.
  - name: Accounts
    description: Endpunkte für die Verwaltung von Sachkonten.
  - name: Payment Terms
    description: Endpunkte für die Verwaltung von Zahlungsbedingungen.
  - name: Tax Codes
    description: Endpunkte für die Verwaltung von Steuercodes.
  - name: Company Codes
    description: Endpunkte für die Verwaltung von Buchungskreisen (juristische Einheiten).
  - name: Suppliers
    description: Endpunkte für die Verwaltung von Lieferanten.
  - name: Purchase Orders
    description: Endpunkte für Bestellungen.
  - name: Purchase Orders (SAP)
    description: SAP-spezifische Bestellungs-Endpunkte.
  - name: Orders (Supplier)
    description: >-
      Lieferantenspezifische Bestellungs-Endpunkte (Bestätigung, Ablehnung,
      Bearbeitung).
  - name: Suppliers (SAP)
    description: SAP-spezifische Lieferanten-Endpunkte.
  - name: Invoices
    description: Endpunkte für Rechnungen.
  - name: Invoices (Supplier)
    description: Lieferantenspezifische Rechnungs-Endpunkte.
  - name: Invoices (SAP)
    description: SAP-spezifische Rechnungs-Endpunkte.
  - name: Invoice Dimensions
    description: >
      Rechnungs-Dimensionen (benutzerdefinierte Eigenschaften) und Zuweisungen
      auf Rechnung (`header`), Position (`line_item`) oder Kontierung
      (`account`).


      Dimensionen haben den Typ `option` (vordefinierte Werte) oder `text`
      (Freitext über `dimension_id` + `text_value`). Bulk-Konto-POST
      (`/assignments/account/bulk`) unterstützt nur Options-Zuweisungen über
      `option_ids`; Freitext auf Kontoebene über Einzel-POST, PATCH-Bulk oder
      Positions-Bulk.
  - name: Workflows
    description: Endpunkte für Workflow- und Prozessmanagement.
  - name: Calendar
    description: Kalender-Abonnement-Endpunkte mit separater Authentifizierung.
  - name: Orders
    description: Endpunkte für Auftragsverarbeitung und -verwaltung.
paths:
  /workflows/status/{external_id}:
    get:
      tags:
        - Workflows
      summary: Workflow-Status nach externer ID abrufen
      description: >
        **Erforderliche Berechtigungen:** `invoices:write`


        Ruft den aktuellen Status eines Workflow-Prozesses anhand der externen
        Kennung ab.


        Dieser Endpunkt ermöglicht es Drittanbieter-Integrationen, den
        Verarbeitungsstatus einer Rechnung 

        anhand ihrer externen ID zu überprüfen. Die Antwort enthält den
        aktuellen Status, eine URL zur 

        Rechnung in comstruct und eine Historie der Statusänderungen.

        API-Schlüssel muss mit einem Kunden verknüpft sein.
      operationId: getWorkflowStatus
      parameters:
        - name: external_id
          in: path
          required: true
          schema:
            type: string
          description: Die externe Kennung der Rechnung/des Workflows
          example: INV-2024-001
      responses:
        '200':
          description: Workflow-Status erfolgreich abgerufen
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkflowStatusResponse'
              example:
                success: true
                status: FACTUAL_CHECKING
                url: https://app.comstruct.com/invoices/123
                history:
                  - created_at: '2024-01-15T10:00:00Z'
                    newStatus: PROCESSING
                    previousStatus: NEW
                    message: Verarbeitung gestartet
                  - created_at: '2024-01-15T10:05:00Z'
                    newStatus: FACTUAL_CHECKING
                    previousStatus: PROCESSING
                    message: Sachliche Prüfung
        '401':
          description: Nicht autorisiert - Ungültiger API-Schlüssel
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          description: Rechnung nicht gefunden
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                example:
                  error: Invoice not found
        '409':
          description: Mehrere Rechnungen mit dieser external_id gefunden
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                example:
                  error: >-
                    Multiple invoices found with this external_id. Please
                    resolve conflicts in comstruct.
        '500':
          description: Rechnungsstatus konnte nicht geladen werden
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                example:
                  error: 'Failed to load invoice status: Database connection error'
      security:
        - ApiKey:
            - invoices:write
components:
  schemas:
    WorkflowStatusResponse:
      type: object
      properties:
        success:
          type: boolean
          description: Gibt an, ob die Statusabfrage erfolgreich war
          example: true
        status:
          type: string
          enum:
            - NEW
            - PROCESSING
            - FACTUAL_CHECKING
            - PRICE_CHECKING
            - CHECKED
            - CANCELLED
            - ERROR
            - OPEN
          description: Aktueller Rechnungsstatus
          example: FACTUAL_CHECKING
        url:
          type: string
          format: uri
          description: URL zur Anzeige der Rechnung in comstruct
          example: https://app.comstruct.com/invoices/123
        history:
          type: array
          description: Verlauf der Statusänderungen
          items:
            $ref: '#/components/schemas/WorkflowHistoryItem'
    ErrorResponse:
      type: object
      properties:
        error:
          type: string
          description: Fehlermeldung, die beschreibt, was schiefgelaufen ist
        message:
          type: string
          description: Zusätzliche Fehlerdetails oder benutzerfreundliche Nachricht
        success:
          type: boolean
          description: Zeigt Fehlschlag an, wenn in Fehlerantworten vorhanden
      anyOf:
        - required:
            - error
        - required:
            - message
        - required:
            - success
      example:
        error: Validation failed
        message: The provided data did not pass validation checks
    WorkflowHistoryItem:
      type: object
      properties:
        created_at:
          type: string
          format: date-time
          description: Zeitstempel der Statusänderung
          example: '2024-01-15T10:00:00Z'
        user:
          type: object
          description: Benutzer, der die Änderung vorgenommen hat (falls vorhanden)
          properties:
            id:
              type: string
            email:
              type: string
            name:
              type: string
        newStatus:
          type: string
          description: Neuer Status nach der Änderung
          example: FACTUAL_CHECKING
        previousStatus:
          type: string
          description: Vorheriger Status vor der Änderung
          example: PROCESSING
        message:
          type: string
          description: Optionale Nachricht zur Statusänderung
          example: Sachliche Prüfung gestartet
  responses:
    Forbidden:
      description: Verboten - Ungültige oder fehlende Berechtigung
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            invalid_scope:
              summary: Ungültige Berechtigung
              value:
                message: Invalid scope.
            missing_scope:
              summary: Fehlende spezifische Berechtigung
              value:
                error: 'Unauthorized. Missing scope: projects:write'
            missing_invoices_scope:
              summary: Fehlende Rechnungsberechtigung
              value:
                error: 'Unauthorized. Missing scope: invoices:write'
            missing_suppliers_scope:
              summary: Fehlende Lieferantenberechtigung
              value:
                error: 'Unauthorized. Missing scope: suppliers:write'
  securitySchemes:
    ApiKey:
      type: apiKey
      in: header
      name: X-API-Key
      description: >
        API-Schlüssel zur Authentifizierung. Kontaktieren Sie Ihren Customer
        Success Manager, um einen API-Schlüssel zu erhalten.


        Jeder Endpunkt erfordert spezifische Berechtigungen (Scopes); die
        erforderlichen Scopes werden pro Endpunkt angezeigt.

````