Erstellt ein neues Projekt oder aktualisiert ein bestehendes Projekt. Dieser Endpunkt führt eine Upsert-Operation basierend auf dem external_id-Feld (falls vorhanden) oder der project_number durch.
Hauptfunktionen:
Upsert-Logik: Wenn external_id angegeben ist und ein Projekt mit dieser ID existiert, wird es aktualisiert. Andernfalls wird project_number für den Abgleich verwendet. Wenn keine Übereinstimmung gefunden wird, wird ein neues Projekt erstellt.
Benutzerverwaltung: Behandelt automatisch Benutzereinladungen und Rollenzuweisungen für Projektteammitglieder.
Regionszuordnung: Das region-Feld kann verwendet werden, um das Projekt einer Projektregion zuzuordnen.
Buchungskreis-Zuordnung: Das legal_entity_number-Feld kann verwendet werden, um das Projekt einem Buchungskreis zuzuordnen.
Koordinaten: Optionale latitude und longitude setzen den geografischen Standort. Weglassen belässt den gespeicherten Wert; null löscht ihn.
Validierung: Alle erforderlichen Felder (title, project_number) werden vor der Verarbeitung validiert.
Best Practices:
Geben Sie external_id für zuverlässige Upsert-Operationen an
Verwenden Sie region oder project_region_id für die Projektregionszuordnung
Verwenden Sie legal_entity_number oder legal_entity_id für die Buchungskreis-Zuordnung
Fügen Sie vollständige Adressinformationen hinzu, wenn verfügbar, für besseres Projektmanagement
Übergeben Sie latitude und longitude gemeinsam, wenn der Standort bekannt ist
Stellen Sie sicher, dass Rollennamen in project_invites mit bestehenden Rollen in Ihrem Mandanten übereinstimmen
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"comstruct API Dokumentation","colors":{"primary":"#2F6879","light":"#3A8599","dark":"#1E4A57"},"logo":{"light":"https://mintcdn.com/comstruct/Jpsyju8lznqRSEZJ/logo/light.svg?fit=max\u0026auto=format\u0026n=Jpsyju8lznqRSEZJ\u0026q=85\u0026s=acbbee3c044994a3e7752740782d923f","dark":"https://mintcdn.com/comstruct/Jpsyju8lznqRSEZJ/logo/dark.svg?fit=max\u0026auto=format\u0026n=Jpsyju8lznqRSEZJ\u0026q=85\u0026s=3849d724919d807467f3b58d490d50c0"},"favicon":"https://mintcdn.com/comstruct/CqrhxzMG7_sRCFwK/favicon.png?fit=max\u0026auto=format\u0026n=CqrhxzMG7_sRCFwK\u0026q=85\u0026s=ff5a12229b0e3075a0e33fe7354ddae3","api":{},"navbar":{"links":[{"href":"mailto:support@comstruct.com","label":"Support"}],"primary":{"type":"button","label":"App öffnen","href":"https://app.comstruct.com"}},"footer":{"socials":{"linkedin":"https://linkedin.com/company/comstruct","website":"https://comstruct.com"}},"contextual":{"options":["copy","view","chatgpt","claude","cursor"],"display":"header"},"styling":{"latex":false},"navigation":{"global":{"anchors":[{"anchor":"Support","icon":"envelope","href":"mailto:support@comstruct.com"}]},"languages":[{"language":"de","default":true,"href":""},{"language":"en","href":"en"}]}},"deployment":{"deploymentMetadataValue":{"subdomain":"comstruct","hasAudioNarration":false,"actualSubdomain":"comstruct","customDomains":["developer.comstruct.com"],"gitSource":{"type":"github","owner":"comstruct-engineering","repo":"comstruct-one","deployBranch":"main","contentDirectory":"docs","isPrivate":true,"mountPath":"","label":""},"entitlements":{},"buildId":"6af339cb0d36c20f768025e9","clientVersion":"0.0.4102","searchFilterCounts":[{"language":"de","tag":"API-Referenz","count":69},{"language":"en","tag":"API Reference","count":69},{"language":"de","tag":"Rechnungs-Dimensionen","count":15},{"language":"en","tag":"Invoice dimensions","count":15},{"language":"de","tag":"Lieferungen","count":11},{"language":"en","tag":"Deliveries","count":11},{"language":"de","tag":"Stammdaten","count":10},{"language":"en","tag":"Master data","count":10},{"language":"de","tag":"Rechnungen","count":9},{"language":"de","tag":"Projekte","count":9},{"language":"en","tag":"Invoices","count":9},{"language":"en","tag":"Projects","count":9},{"language":"de","tag":"Erste Schritte","count":5},{"language":"en","tag":"Getting started","count":5},{"language":"de","tag":"Integrationsleitfäden","count":4},{"language":"en","tag":"Integration guides","count":4},{"language":"de","tag":"Bestellungen","count":3},{"language":"de","tag":"Lieferanten","count":3},{"language":"en","tag":"Purchase orders","count":3},{"language":"en","tag":"Suppliers","count":3}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/projects-create","slug":"/api-reference/projects-create","pageMetadata":{"title":"Projekt erstellen oder aktualisieren","openapi":"POST /projects","description":"**Erforderliche Berechtigungen:** `projects:write`, `users:read`, `roles:read`, `tenant_settings:read`\n\nErstellt ein neues Projekt oder aktualisiert ein bestehendes Projekt. Dieser Endpunkt führt eine Upsert-Operation basierend auf dem `external_id`-Feld (falls vorhanden) oder der `project_number` durch.\n\n**Hauptfunktionen:**\n- **Upsert-Logik**: Wenn `external_id` angegeben ist und ein Projekt mit dieser ID existiert, wird es aktualisiert. Andernfalls wird `project_number` für den Abgleich verwendet. Wenn keine Übereinstimmung gefunden wird, wird ein neues Projekt erstellt.\n- **Benutzerverwaltung**: Behandelt automatisch Benutzereinladungen und Rollenzuweisungen für Projektteammitglieder.\n- **Regionszuordnung**: Das `region`-Feld kann verwendet werden, um das Projekt einer Projektregion zuzuordnen.\n- **Buchungskreis-Zuordnung**: Das `legal_entity_number`-Feld kann verwendet werden, um das Projekt einem Buchungskreis zuzuordnen.\n- **Koordinaten**: Optionale `latitude` und `longitude` setzen den geografischen Standort. Weglassen belässt den gespeicherten Wert; `null` löscht ihn.\n- **Validierung**: Alle erforderlichen Felder (`title`, `project_number`) werden vor der Verarbeitung validiert.\n\n**Best Practices:**\n- Geben Sie `external_id` für zuverlässige Upsert-Operationen an\n- Verwenden Sie `region` oder `project_region_id` für die Projektregionszuordnung\n- Verwenden Sie `legal_entity_number` oder `legal_entity_id` für die Buchungskreis-Zuordnung\n- Fügen Sie vollständige Adressinformationen hinzu, wenn verfügbar, für besseres Projektmanagement\n- Übergeben Sie `latitude` und `longitude` gemeinsam, wenn der Standort bekannt ist\n- Stellen Sie sicher, dass Rollennamen in `project_invites` mit bestehenden Rollen in Ihrem Mandanten übereinstimmen\n","href":"/api-reference/projects-create"},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n li: \"li\",\n p: \"p\",\n strong: \"strong\",\n ul: \"ul\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: \"Erforderliche Berechtigungen:\"\n }), \" \", _jsx(_components.code, {\n children: \"projects:write\"\n }), \", \", _jsx(_components.code, {\n children: \"users:read\"\n }), \", \", _jsx(_components.code, {\n children: \"roles:read\"\n }), \", \", _jsx(_components.code, {\n children: \"tenant_settings:read\"\n })]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Erstellt ein neues Projekt oder aktualisiert ein bestehendes Projekt. Dieser Endpunkt führt eine Upsert-Operation basierend auf dem \", _jsx(_components.code, {\n children: \"external_id\"\n }), \"-Feld (falls vorhanden) oder der \", _jsx(_components.code, {\n children: \"project_number\"\n }), \" durch.\"]\n }), \"\\n\", _jsx(_components.p, {\n children: _jsx(_components.strong, {\n children: \"Hauptfunktionen:\"\n })\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: \"Upsert-Logik\"\n }), \": Wenn \", _jsx(_components.code, {\n children: \"external_id\"\n }), \" angegeben ist und ein Projekt mit dieser ID existiert, wird es aktualisiert. Andernfalls wird \", _jsx(_components.code, {\n children: \"project_number\"\n }), \" für den Abgleich verwendet. Wenn keine Übereinstimmung gefunden wird, wird ein neues Projekt erstellt.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: \"Benutzerverwaltung\"\n }), \": Behandelt automatisch Benutzereinladungen und Rollenzuweisungen für Projektteammitglieder.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: \"Regionszuordnung\"\n }), \": Das \", _jsx(_components.code, {\n children: \"region\"\n }), \"-Feld kann verwendet werden, um das Projekt einer Projektregion zuzuordnen.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: \"Buchungskreis-Zuordnung\"\n }), \": Das \", _jsx(_components.code, {\n children: \"legal_entity_number\"\n }), \"-Feld kann verwendet werden, um das Projekt einem Buchungskreis zuzuordnen.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: \"Koordinaten\"\n }), \": Optionale \", _jsx(_components.code, {\n children: \"latitude\"\n }), \" und \", _jsx(_components.code, {\n children: \"longitude\"\n }), \" setzen den geografischen Standort. Weglassen belässt den gespeicherten Wert; \", _jsx(_components.code, {\n children: \"null\"\n }), \" löscht ihn.\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: \"Validierung\"\n }), \": Alle erforderlichen Felder (\", _jsx(_components.code, {\n children: \"title\"\n }), \", \", _jsx(_components.code, {\n children: \"project_number\"\n }), \") werden vor der Verarbeitung validiert.\"]\n }), \"\\n\"]\n }), \"\\n\", _jsx(_components.p, {\n children: _jsx(_components.strong, {\n children: \"Best Practices:\"\n })\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"Geben Sie \", _jsx(_components.code, {\n children: \"external_id\"\n }), \" für zuverlässige Upsert-Operationen an\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"Verwenden Sie \", _jsx(_components.code, {\n children: \"region\"\n }), \" oder \", _jsx(_components.code, {\n children: \"project_region_id\"\n }), \" für die Projektregionszuordnung\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"Verwenden Sie \", _jsx(_components.code, {\n children: \"legal_entity_number\"\n }), \" oder \", _jsx(_components.code, {\n children: \"legal_entity_id\"\n }), \" für die Buchungskreis-Zuordnung\"]\n }), \"\\n\", _jsx(_components.li, {\n children: \"Fügen Sie vollständige Adressinformationen hinzu, wenn verfügbar, für besseres Projektmanagement\"\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"Übergeben Sie \", _jsx(_components.code, {\n children: \"latitude\"\n }), \" und \", _jsx(_components.code, {\n children: \"longitude\"\n }), \" gemeinsam, wenn der Standort bekannt ist\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"Stellen Sie sicher, dass Rollennamen in \", _jsx(_components.code, {\n children: \"project_invites\"\n }), \" mit bestehenden Rollen in Ihrem Mandanten übereinstimmen\"]\n }), \"\\n\"]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Projekt erstellen oder aktualisieren","openapi":"POST /projects","description":"**Erforderliche Berechtigungen:** `projects:write`, `users:read`, `roles:read`, `tenant_settings:read`\n\nErstellt ein neues Projekt oder aktualisiert ein bestehendes Projekt. Dieser Endpunkt führt eine Upsert-Operation basierend auf dem `external_id`-Feld (falls vorhanden) oder der `project_number` durch.\n\n**Hauptfunktionen:**\n- **Upsert-Logik**: Wenn `external_id` angegeben ist und ein Projekt mit dieser ID existiert, wird es aktualisiert. Andernfalls wird `project_number` für den Abgleich verwendet. Wenn keine Übereinstimmung gefunden wird, wird ein neues Projekt erstellt.\n- **Benutzerverwaltung**: Behandelt automatisch Benutzereinladungen und Rollenzuweisungen für Projektteammitglieder.\n- **Regionszuordnung**: Das `region`-Feld kann verwendet werden, um das Projekt einer Projektregion zuzuordnen.\n- **Buchungskreis-Zuordnung**: Das `legal_entity_number`-Feld kann verwendet werden, um das Projekt einem Buchungskreis zuzuordnen.\n- **Koordinaten**: Optionale `latitude` und `longitude` setzen den geografischen Standort. Weglassen belässt den gespeicherten Wert; `null` löscht ihn.\n- **Validierung**: Alle erforderlichen Felder (`title`, `project_number`) werden vor der Verarbeitung validiert.\n\n**Best Practices:**\n- Geben Sie `external_id` für zuverlässige Upsert-Operationen an\n- Verwenden Sie `region` oder `project_region_id` für die Projektregionszuordnung\n- Verwenden Sie `legal_entity_number` oder `legal_entity_id` für die Buchungskreis-Zuordnung\n- Fügen Sie vollständige Adressinformationen hinzu, wenn verfügbar, für besseres Projektmanagement\n- Übergeben Sie `latitude` und `longitude` gemeinsam, wenn der Standort bekannt ist\n- Stellen Sie sicher, dass Rollennamen in `project_invites` mit bestehenden Rollen in Ihrem Mandanten übereinstimmen\n","href":"/api-reference/projects-create"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"operationId":"createOrUpdateProject","summary":"Projekt erstellen oder aktualisieren","description":"**Erforderliche Berechtigungen:** `projects:write`, `users:read`, `roles:read`, `tenant_settings:read`\n\nErstellt ein neues Projekt oder aktualisiert ein bestehendes Projekt. Dieser Endpunkt führt eine Upsert-Operation basierend auf dem `external_id`-Feld (falls vorhanden) oder der `project_number` durch.\n\n**Hauptfunktionen:**\n- **Upsert-Logik**: Wenn `external_id` angegeben ist und ein Projekt mit dieser ID existiert, wird es aktualisiert. Andernfalls wird `project_number` für den Abgleich verwendet. Wenn keine Übereinstimmung gefunden wird, wird ein neues Projekt erstellt.\n- **Benutzerverwaltung**: Behandelt automatisch Benutzereinladungen und Rollenzuweisungen für Projektteammitglieder.\n- **Regionszuordnung**: Das `region`-Feld kann verwendet werden, um das Projekt einer Projektregion zuzuordnen.\n- **Buchungskreis-Zuordnung**: Das `legal_entity_number`-Feld kann verwendet werden, um das Projekt einem Buchungskreis zuzuordnen.\n- **Koordinaten**: Optionale `latitude` und `longitude` setzen den geografischen Standort. Weglassen belässt den gespeicherten Wert; `null` löscht ihn.\n- **Validierung**: Alle erforderlichen Felder (`title`, `project_number`) werden vor der Verarbeitung validiert.\n\n**Best Practices:**\n- Geben Sie `external_id` für zuverlässige Upsert-Operationen an\n- Verwenden Sie `region` oder `project_region_id` für die Projektregionszuordnung\n- Verwenden Sie `legal_entity_number` oder `legal_entity_id` für die Buchungskreis-Zuordnung\n- Fügen Sie vollständige Adressinformationen hinzu, wenn verfügbar, für besseres Projektmanagement\n- Übergeben Sie `latitude` und `longitude` gemeinsam, wenn der Standort bekannt ist\n- Stellen Sie sicher, dass Rollennamen in `project_invites` mit bestehenden Rollen in Ihrem Mandanten übereinstimmen\n","tags":["Projects"],"requestBody":"d485d39b-5287-4398-8583-8564dfd714cf","responses":{"201":"eb45c929-5df5-4ab4-a09e-b4b665984b9f","400":"4746b1ca-7eee-4177-b4cd-aaf6741df57a","403":"4eeb6bd7-2b41-453d-9d93-87ab21c7b1b5","409":"10af8e84-f3f8-481d-ba6f-eafe7868d149","500":"9dc4cfa7-87b4-4327-8e39-c418770d7e00"},"security":["47b4d9d0-6cd8-4f24-8598-9f821644b283"],"method":"post","type":"path","servers":["27bdc885-654c-42d2-b8de-7d04f298bbbd","91c701c1-ebe7-4fa2-b078-ea277e03dd21"],"path":"/projects","baseUrlOptions":["https://api.comstruct.com/v1","https://api.comstruct.com"],"title":"Projekt erstellen oder aktualisieren","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["title","project_number"],"properties":{"title":{"type":"string","example":"Example Site","description":"Der Titel des Projekts","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"project_number":{"type":"string","example":"23423420","description":"Die Projektnummer (erforderlich)","isRequired":true,"uniqueKey":"project_number","typeLabel":"string"},"external_id":{"type":"string","example":"EXT-001","description":"Die externe Kennung des Projekts. Muss innerhalb des Kunden eindeutig sein. Wird für Upsert-Operationen verwendet.","uniqueKey":"external_id","typeLabel":"string"},"description":{"type":"string","description":"Eine Beschreibung des Projekts","uniqueKey":"description","typeLabel":"string"},"region":{"type":"string","example":"Bavaria","description":"Die Regionsnummer, in der sich das Projekt befindet, wird für Filterung und Projektregionssuche verwendet","uniqueKey":"region","typeLabel":"string"},"project_region_id":{"type":"string","format":"uuid","description":"Direkte Referenz auf eine Projektregions-ID (Alternative zur Regionssuche)","uniqueKey":"project_region_id","typeLabel":"string\u003cuuid>"},"legal_entity_id":{"type":"string","format":"uuid","description":"Direkte Referenz auf eine Buchungskreis-ID","uniqueKey":"legal_entity_id","typeLabel":"string\u003cuuid>"},"legal_entity_number":{"type":"string","description":"Buchungskreisnummer zum Nachschlagen und Verknüpfen des Buchungskreises","uniqueKey":"legal_entity_number","typeLabel":"string"},"alternative_project_number":{"type":"string","description":"Alternative Projektnummer zur Referenz","uniqueKey":"alternative_project_number","typeLabel":"string"},"active":{"type":"boolean","description":"Steuert, ob das Projekt aktiv ist","uniqueKey":"active","typeLabel":"boolean"},"latitude":{"oneOf":[{"type":"number","minimum":-90,"maximum":90,"description":"Geografische Breite des Projektstandorts. Weglassen belässt den gespeicherten Wert; `null` löscht ihn.","example":48.1351,"uniqueKey":"latitude.oneOf.0","typeLabel":"number"},{"type":"null","minimum":-90,"maximum":90,"description":"Geografische Breite des Projektstandorts. Weglassen belässt den gespeicherten Wert; `null` löscht ihn.","example":48.1351,"uniqueKey":"latitude.oneOf.1","typeLabel":"null"}],"uniqueKey":"latitude","typeLabel":"number | null"},"longitude":{"oneOf":[{"type":"number","minimum":-180,"maximum":180,"description":"Geografische Länge des Projektstandorts. Weglassen belässt den gespeicherten Wert; `null` löscht ihn.","example":11.582,"uniqueKey":"longitude.oneOf.0","typeLabel":"number"},{"type":"null","minimum":-180,"maximum":180,"description":"Geografische Länge des Projektstandorts. Weglassen belässt den gespeicherten Wert; `null` löscht ihn.","example":11.582,"uniqueKey":"longitude.oneOf.1","typeLabel":"null"}],"uniqueKey":"longitude","typeLabel":"number | null"},"address":{"type":"object","description":"Die Adressdetails des Projekts","properties":{"address":{"type":"string","description":"Die Straßenadresse","uniqueKey":"address.address","typeLabel":"string"},"city":{"type":"string","description":"Die Stadt","uniqueKey":"address.city","typeLabel":"string"},"zip":{"type":"string","description":"Die Postleitzahl","uniqueKey":"address.zip","typeLabel":"string"}},"uniqueKey":"address","typeLabel":"object"},"project_invites":{"type":"array","description":"Benutzereinladungen für das Projekt","items":{"type":"object","required":["email","role"],"properties":{"email":{"type":"string","format":"email","description":"Die E-Mail des einzuladenden Benutzers (erforderlich)","isRequired":true,"uniqueKey":"project_invites.items.[INDEX].email","typeLabel":"string\u003cemail>"},"role":{"type":"string","description":"Der Rollentitel, der dem Benutzer zugewiesen werden soll (erforderlich)","isRequired":true,"uniqueKey":"project_invites.items.[INDEX].role","typeLabel":"string"}},"uniqueKey":"project_invites.items.[INDEX]","typeLabel":"object"},"uniqueKey":"project_invites","typeLabel":"object[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"basic_project":{"title":"basic_project","value":{"title":"Highway Construction Project","project_number":"HCP-2024-001","external_id":"EXT-2024-001","description":"Construction of highway section A1-A2","region":"Bavaria","active":true}},"project_with_address":{"title":"project_with_address","value":{"title":"Office Building Downtown","project_number":"OBD-2024-002","external_id":"EXT-2024-002","description":"Modern office building with 20 floors","region":"Berlin","active":true,"latitude":52.52,"longitude":13.405,"address":{"address":"Hauptstraße 123","city":"Berlin","zip":"10115"},"project_invites":[{"email":"project.manager@company.com","role":"Manager"},{"email":"site.engineer@company.com","role":"Engineer"}]}}},"exampleType":"examples"}},"exampleType":"examples"},"responses":{"eb45c929-5df5-4ab4-a09e-b4b665984b9f":{"description":"Projekt erfolgreich erstellt oder aktualisiert","content":{"application/json":{"schema":{"type":"object","readOnly":true,"properties":{"id":{"type":"string","format":"uuid","description":"Die eindeutige Kennung des Projekts","uniqueKey":"id","typeLabel":"string\u003cuuid>"},"external_id":{"type":"string","example":"EXT-001","description":"Die externe Kennung des Projekts","uniqueKey":"external_id","typeLabel":"string"},"title":{"type":"string","example":"Example Site","description":"Der Titel des Projekts","uniqueKey":"title","typeLabel":"string"},"project_number":{"oneOf":[{"type":"string","example":"23423420","description":"Die Projektnummer","uniqueKey":"project_number.oneOf.0","typeLabel":"string"},{"type":"null","example":"23423420","description":"Die Projektnummer","uniqueKey":"project_number.oneOf.1","typeLabel":"null"}],"uniqueKey":"project_number","typeLabel":"string | null"},"description":{"type":"string","description":"Eine Beschreibung des Projekts","uniqueKey":"description","typeLabel":"string"},"region":{"oneOf":[{"type":"string","example":"Bavaria","description":"Titel der verknüpften Projektregion. Ohne Verknüpfung der gespeicherte Regionstext, sonst null.","uniqueKey":"region.oneOf.0","typeLabel":"string"},{"type":"null","example":"Bavaria","description":"Titel der verknüpften Projektregion. Ohne Verknüpfung der gespeicherte Regionstext, sonst null.","uniqueKey":"region.oneOf.1","typeLabel":"null"}],"uniqueKey":"region","typeLabel":"string | null"},"project_region_id":{"oneOf":[{"type":"string","format":"uuid","description":"Die ID der verknüpften Projektregion","uniqueKey":"project_region_id.oneOf.0","typeLabel":"string\u003cuuid>"},{"type":"null","format":"uuid","description":"Die ID der verknüpften Projektregion","uniqueKey":"project_region_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"project_region_id","typeLabel":"string\u003cuuid> | null"},"active":{"oneOf":[{"type":"boolean","description":"Steuert, ob das Projekt aktiv ist","uniqueKey":"active.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"Steuert, ob das Projekt aktiv ist","uniqueKey":"active.oneOf.1","typeLabel":"null"}],"uniqueKey":"active","typeLabel":"boolean | null"},"latitude":{"oneOf":[{"type":"number","minimum":-90,"maximum":90,"description":"Geografische Breite des Projektstandorts","example":48.1351,"uniqueKey":"latitude.oneOf.0","typeLabel":"number"},{"type":"null","minimum":-90,"maximum":90,"description":"Geografische Breite des Projektstandorts","example":48.1351,"uniqueKey":"latitude.oneOf.1","typeLabel":"null"}],"uniqueKey":"latitude","typeLabel":"number | null"},"longitude":{"oneOf":[{"type":"number","minimum":-180,"maximum":180,"description":"Geografische Länge des Projektstandorts","example":11.582,"uniqueKey":"longitude.oneOf.0","typeLabel":"number"},{"type":"null","minimum":-180,"maximum":180,"description":"Geografische Länge des Projektstandorts","example":11.582,"uniqueKey":"longitude.oneOf.1","typeLabel":"null"}],"uniqueKey":"longitude","typeLabel":"number | null"},"alternative_project_number":{"oneOf":[{"type":"string","description":"Alternative Projektnummer zur Referenz, z. B. aus SAP","uniqueKey":"alternative_project_number.oneOf.0","typeLabel":"string"},{"type":"null","description":"Alternative Projektnummer zur Referenz, z. B. aus SAP","uniqueKey":"alternative_project_number.oneOf.1","typeLabel":"null"}],"uniqueKey":"alternative_project_number","typeLabel":"string | null"},"status":{"type":"string","description":"Der Status des Projekts","uniqueKey":"status","typeLabel":"string"},"customer_id":{"type":"string","format":"uuid","description":"Die eindeutige Kennung des Kunden","uniqueKey":"customer_id","typeLabel":"string\u003cuuid>"},"address":{"type":"object","description":"Die Adressdetails des Projekts","properties":{"address":{"type":"string","description":"Die Straßenadresse","uniqueKey":"address.address","typeLabel":"string"},"city":{"type":"string","description":"Die Stadt","uniqueKey":"address.city","typeLabel":"string"},"country":{"type":"string","description":"Das Land","uniqueKey":"address.country","typeLabel":"string"},"house_number":{"type":"string","description":"Die Hausnummer","uniqueKey":"address.house_number","typeLabel":"string"},"zip":{"type":"string","description":"Die Postleitzahl","uniqueKey":"address.zip","typeLabel":"string"}},"uniqueKey":"address","typeLabel":"object"},"legal_entity":{"oneOf":[{"type":"object","description":"Der dem Projekt zugeordnete Buchungskreis","properties":{"id":{"type":"string","format":"uuid","description":"Die eindeutige Kennung des Buchungskreises","uniqueKey":"legal_entity.oneOf.0.id","typeLabel":"string\u003cuuid>"},"title":{"type":"string","description":"Der Titel des Buchungskreises","uniqueKey":"legal_entity.oneOf.0.title","typeLabel":"string"},"number":{"type":"string","description":"Die Nummer des Buchungskreises","uniqueKey":"legal_entity.oneOf.0.number","typeLabel":"string"}},"uniqueKey":"legal_entity.oneOf.0","typeLabel":"object"},{"type":"null","description":"Der dem Projekt zugeordnete Buchungskreis","properties":{"id":{"type":"string","format":"uuid","description":"Die eindeutige Kennung des Buchungskreises"},"title":{"type":"string","description":"Der Titel des Buchungskreises"},"number":{"type":"string","description":"Die Nummer des Buchungskreises"}},"uniqueKey":"legal_entity.oneOf.1","typeLabel":"null"}],"uniqueKey":"legal_entity","typeLabel":"object | null"},"project_invites":{"type":"array","description":"Dem Projekt zugewiesene Benutzereinladungen","items":{"type":"object","readOnly":true,"properties":{"id":{"type":"string","format":"uuid","description":"Die ID der Benutzereinladung","uniqueKey":"project_invites.items.[INDEX].id","typeLabel":"string\u003cuuid>"},"email":{"type":"string","format":"email","description":"Die E-Mail der Benutzereinladung","uniqueKey":"project_invites.items.[INDEX].email","typeLabel":"string\u003cemail>"},"role":{"oneOf":[{"type":"string","description":"Der Rollentitel der Benutzereinladung","uniqueKey":"project_invites.items.[INDEX].role.oneOf.0","typeLabel":"string"},{"type":"null","description":"Der Rollentitel der Benutzereinladung","uniqueKey":"project_invites.items.[INDEX].role.oneOf.1","typeLabel":"null"}],"uniqueKey":"project_invites.items.[INDEX].role","typeLabel":"string | null"},"role_id":{"oneOf":[{"type":"string","format":"uuid","description":"Die Rollen-ID der Benutzereinladung","uniqueKey":"project_invites.items.[INDEX].role_id.oneOf.0","typeLabel":"string\u003cuuid>"},{"type":"null","format":"uuid","description":"Die Rollen-ID der Benutzereinladung","uniqueKey":"project_invites.items.[INDEX].role_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"project_invites.items.[INDEX].role_id","typeLabel":"string\u003cuuid> | null"},"project_id":{"type":"string","format":"uuid","description":"Die Projekt-ID der Benutzereinladung","uniqueKey":"project_invites.items.[INDEX].project_id","typeLabel":"string\u003cuuid>"},"tenant_id":{"type":"string","format":"uuid","description":"Die Mandanten-ID der Benutzereinladung","uniqueKey":"project_invites.items.[INDEX].tenant_id","typeLabel":"string\u003cuuid>"}},"uniqueKey":"project_invites.items.[INDEX]","typeLabel":"object"},"uniqueKey":"project_invites","typeLabel":"object[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","external_id":"EXT-001","title":"Example Site","project_number":"23423420","description":"\u003cstring>","region":"Bavaria","project_region_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","active":true,"latitude":48.1351,"longitude":11.582,"alternative_project_number":"\u003cstring>","status":"\u003cstring>","customer_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","address":{"address":"\u003cstring>","city":"\u003cstring>","country":"\u003cstring>","house_number":"\u003cstring>","zip":"\u003cstring>"},"legal_entity":{"id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","title":"\u003cstring>","number":"\u003cstring>"},"project_invites":[{"id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","email":"jsmith@example.com","role":"\u003cstring>","role_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","project_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","tenant_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a"}]}}},"exampleType":"generated"}},"exampleType":"generated"},"4746b1ca-7eee-4177-b4cd-aaf6741df57a":{"description":"Ungültige Eingabe","content":{"_mintlify/placeholder":{"schema":{"type":"object","description":""}}}},"4eeb6bd7-2b41-453d-9d93-87ab21c7b1b5":{"description":"Verboten - Ungültige Berechtigung","content":{"_mintlify/placeholder":{"schema":{"type":"object","description":""}}}},"10af8e84-f3f8-481d-ba6f-eafe7868d149":{"description":"Konflikt. Die `external_id` ist bereits einem anderen Projekt dieses Kunden zugeordnet, während die `project_number` auf ein anderes Projekt zeigt.\n","content":{"_mintlify/placeholder":{"schema":{"type":"object","description":""}}}},"9dc4cfa7-87b4-4327-8e39-c418770d7e00":{"description":"Interner Serverfehler","content":{"_mintlify/placeholder":{"schema":{"type":"object","description":""}}}}},"security":{"47b4d9d0-6cd8-4f24-8598-9f821644b283":{"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.\n\nJeder Endpunkt erfordert spezifische Berechtigungen (Scopes); die erforderlichen Scopes werden pro Endpunkt angezeigt.\n","scopes":["projects:write","users:read","roles:read","tenant_settings:read"],"schemeName":"ApiKey"}}},"servers":{"27bdc885-654c-42d2-b8de-7d04f298bbbd":{"url":"https://api.comstruct.com/v1","description":"Haupt-API-Endpunkte (erfordert API-Schlüssel-Authentifizierung)","variables":{}},"91c701c1-ebe7-4fa2-b078-ea277e03dd21":{"url":"https://api.comstruct.com","description":"Basisserver für Kalender- und IDS-Endpunkte (andere Authentifizierung)","variables":{}}},"processedSecurityOptions":[{"schemes":[{"scheme":{"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.\n\nJeder Endpunkt erfordert spezifische Berechtigungen (Scopes); die erforderlichen Scopes werden pro Endpunkt angezeigt.\n","scopes":["projects:write","users:read","roles:read","tenant_settings:read"],"schemeName":"ApiKey"},"schema":{"title":"X-API-Key","type":"string","description":"API-Schlüssel zur Authentifizierung. Kontaktieren Sie Ihren Customer Success Manager, um einen API-Schlüssel zu erhalten.\n\nJeder Endpunkt erfordert spezifische Berechtigungen (Scopes); die erforderlichen Scopes werden pro Endpunkt angezeigt.\n","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"ApiKey","name":"X-API-Key"}],"title":"ApiKey"}]},"originalFileLocation":"api-reference/openapi.yaml"},"subdomain":"comstruct","siteName":"comstruct API Dokumentation","title":"Projekt erstellen oder aktualisieren - comstruct API Dokumentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"de":{"href":"/api-reference/projects-create","matchLevel":0},"en":{"href":"/en/api-reference/projects-create","matchLevel":1}}},"lastModified":"2026-09-22T13:38:10.786Z","originalFileLocation":"api-reference/projects-create.mdx","locale":"de"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Erforderliche Berechtigungen: projects:write, users:read, roles:read, tenant_settings:read Erstellt ein neues Projekt oder aktualisiert ein bestehendes Projekt. Dieser Endpunkt führt eine Upsert-Operation basierend auf dem external_id-Feld (falls vorhanden) oder der project_number durch. Hauptfunktionen: - Upsert-Logik: Wenn external_id angegeben ist und ein Projekt mit dieser ID existiert, wird es aktualisiert. Andernfalls wird project_number für den Abgleich verwendet. Wenn keine Übereinstimmung gefunden wird, wird ein neues Projekt erstellt. - Benutzerverwaltung: Behandelt automatisch Benutzereinladungen und Rollenzuweisungen für Projektteammitglieder. - Regionszuordnung: Das region-Feld kann verwendet werden, um das Projekt einer Projektregion zuzuordnen. - Buchungskreis-Zuordnung: Das legal_entity_number-Feld kann verwendet werden, um das Projekt einem Buchungskreis zuzuordnen. - Koordinaten: Optionale latitude und longitude setzen den geografischen Standort. Weglassen belässt den gespeicherten Wert; null löscht ihn. - Validierung: Alle erforderlichen Felder (title, project_number) werden vor der Verarbeitung validiert. Best Practices: - Geben Sie external_id für zuverlässige Upsert-Operationen an - Verwenden Sie region oder project_region_id für die Projektregionszuordnung - Verwenden Sie legal_entity_number oder legal_entity_id für die Buchungskreis-Zuordnung - Fügen Sie vollständige Adressinformationen hinzu, wenn verfügbar, für besseres Projektmanagement - Übergeben Sie latitude und longitude gemeinsam, wenn der Standort bekannt ist - Stellen Sie sicher, dass Rollennamen in project_invites mit bestehenden Rollen in Ihrem Mandanten übereinstimmen\">\u003cmeta data-mint-head name=\"application-name\" content=\"comstruct API Dokumentation\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/comstruct/fBUgIQk4CV_VpIlc/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/comstruct/fBUgIQk4CV_VpIlc/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/comstruct/fBUgIQk4CV_VpIlc/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/comstruct/fBUgIQk4CV_VpIlc/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/comstruct/fBUgIQk4CV_VpIlc/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/comstruct/fBUgIQk4CV_VpIlc/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/comstruct/fBUgIQk4CV_VpIlc/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/comstruct/fBUgIQk4CV_VpIlc/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/comstruct/fBUgIQk4CV_VpIlc/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Projekt erstellen oder aktualisieren - comstruct API Dokumentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"Erforderliche Berechtigungen: projects:write, users:read, roles:read, tenant_settings:read Erstellt ein neues Projekt oder aktualisiert ein bestehendes Projekt. Dieser Endpunkt führt eine Upsert-Operation basierend auf dem external_id-Feld (falls vorhanden) oder der project_number durch. Hauptfunktionen: - Upsert-Logik: Wenn external_id angegeben ist und ein Projekt mit dieser ID existiert, wird es aktualisiert. Andernfalls wird project_number für den Abgleich verwendet. Wenn keine Übereinstimmung gefunden wird, wird ein neues Projekt erstellt. - Benutzerverwaltung: Behandelt automatisch Benutzereinladungen und Rollenzuweisungen für Projektteammitglieder. - Regionszuordnung: Das region-Feld kann verwendet werden, um das Projekt einer Projektregion zuzuordnen. - Buchungskreis-Zuordnung: Das legal_entity_number-Feld kann verwendet werden, um das Projekt einem Buchungskreis zuzuordnen. - Koordinaten: Optionale latitude und longitude setzen den geografischen Standort. Weglassen belässt den gespeicherten Wert; null löscht ihn. - Validierung: Alle erforderlichen Felder (title, project_number) werden vor der Verarbeitung validiert. Best Practices: - Geben Sie external_id für zuverlässige Upsert-Operationen an - Verwenden Sie region oder project_region_id für die Projektregionszuordnung - Verwenden Sie legal_entity_number oder legal_entity_id für die Buchungskreis-Zuordnung - Fügen Sie vollständige Adressinformationen hinzu, wenn verfügbar, für besseres Projektmanagement - Übergeben Sie latitude und longitude gemeinsam, wenn der Standort bekannt ist - Stellen Sie sicher, dass Rollennamen in project_invites mit bestehenden Rollen in Ihrem Mandanten übereinstimmen\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"comstruct API Dokumentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://developer.comstruct.com/api-reference/projects-create\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://comstruct.mintlify.site/_mintlify/api/og/v2?division=Projekte\u0026amp;title=Projekt+erstellen+oder+aktualisieren\u0026amp;description=**Erforderliche+Berechtigungen%3A**+%60projects%3Awrite%60%2C+%60users%3Aread%60%2C+%60roles%3Aread%60%2C+%60tenant_settings%3Aread%60%0A%0AErstellt+ein+neues+Projekt+oder+aktualisiert+ein+bestehe\u0026amp;theme=d33cf08ebb99773992a781ff\u0026amp;signature=4419bbaf95230d4b72e0beabf72dd6d141ac930b862652fd2b8d709d5da03ec9\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Projekt erstellen oder aktualisieren - comstruct API Dokumentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Erforderliche Berechtigungen: projects:write, users:read, roles:read, tenant_settings:read Erstellt ein neues Projekt oder aktualisiert ein bestehendes Projekt. Dieser Endpunkt führt eine Upsert-Operation basierend auf dem external_id-Feld (falls vorhanden) oder der project_number durch. Hauptfunktionen: - Upsert-Logik: Wenn external_id angegeben ist und ein Projekt mit dieser ID existiert, wird es aktualisiert. Andernfalls wird project_number für den Abgleich verwendet. Wenn keine Übereinstimmung gefunden wird, wird ein neues Projekt erstellt. - Benutzerverwaltung: Behandelt automatisch Benutzereinladungen und Rollenzuweisungen für Projektteammitglieder. - Regionszuordnung: Das region-Feld kann verwendet werden, um das Projekt einer Projektregion zuzuordnen. - Buchungskreis-Zuordnung: Das legal_entity_number-Feld kann verwendet werden, um das Projekt einem Buchungskreis zuzuordnen. - Koordinaten: Optionale latitude und longitude setzen den geografischen Standort. Weglassen belässt den gespeicherten Wert; null löscht ihn. - Validierung: Alle erforderlichen Felder (title, project_number) werden vor der Verarbeitung validiert. Best Practices: - Geben Sie external_id für zuverlässige Upsert-Operationen an - Verwenden Sie region oder project_region_id für die Projektregionszuordnung - Verwenden Sie legal_entity_number oder legal_entity_id für die Buchungskreis-Zuordnung - Fügen Sie vollständige Adressinformationen hinzu, wenn verfügbar, für besseres Projektmanagement - Übergeben Sie latitude und longitude gemeinsam, wenn der Standort bekannt ist - Stellen Sie sicher, dass Rollennamen in project_invites mit bestehenden Rollen in Ihrem Mandanten übereinstimmen\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://comstruct.mintlify.site/_mintlify/api/og/v2?division=Projekte\u0026amp;title=Projekt+erstellen+oder+aktualisieren\u0026amp;description=**Erforderliche+Berechtigungen%3A**+%60projects%3Awrite%60%2C+%60users%3Aread%60%2C+%60roles%3Aread%60%2C+%60tenant_settings%3Aread%60%0A%0AErstellt+ein+neues+Projekt+oder+aktualisiert+ein+bestehe\u0026amp;theme=d33cf08ebb99773992a781ff\u0026amp;signature=4419bbaf95230d4b72e0beabf72dd6d141ac930b862652fd2b8d709d5da03ec9\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/comstruct/fBUgIQk4CV_VpIlc/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"comstruct API Dokumentation\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#2F6879\">\u003clink data-mint-head rel=\"canonical\" href=\"https://developer.comstruct.com/api-reference/projects-create\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/projects-create.md\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"de\" href=\"https://developer.comstruct.com/api-reference/projects-create\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"en\" href=\"https://developer.comstruct.com/en/api-reference/projects-create\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"x-default\" href=\"https://developer.comstruct.com/api-reference/projects-create\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://developer.comstruct.com/#organization\",\"name\":\"comstruct API Dokumentation\",\"url\":\"https://developer.comstruct.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/comstruct/Jpsyju8lznqRSEZJ/logo/light.svg?fit=max\u0026auto=format\u0026n=Jpsyju8lznqRSEZJ\u0026q=85\u0026s=acbbee3c044994a3e7752740782d923f\"}},{\"@type\":\"WebSite\",\"@id\":\"https://developer.comstruct.com#website\",\"name\":\"comstruct API Dokumentation\",\"url\":\"https://developer.comstruct.com\",\"publisher\":{\"@id\":\"https://developer.comstruct.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://developer.comstruct.com/api-reference/projects-create#webpage\",\"url\":\"https://developer.comstruct.com/api-reference/projects-create\",\"name\":\"Projekt erstellen oder aktualisieren\",\"description\":\"Erforderliche Berechtigungen: projects:write, users:read, roles:read, tenant_settings:read Erstellt ein neues Projekt oder aktualisiert ein bestehendes Projekt. Dieser Endpunkt führt eine Upsert-Operation basierend auf dem external_id-Feld (falls vorhanden) oder der project_number durch. Hauptfunktionen: - Upsert-Logik: Wenn external_id angegeben ist und ein Projekt mit dieser ID existiert, wird es aktualisiert. Andernfalls wird project_number für den Abgleich verwendet. Wenn keine Übereinstimmung gefunden wird, wird ein neues Projekt erstellt. - Benutzerverwaltung: Behandelt automatisch Benutzereinladungen und Rollenzuweisungen für Projektteammitglieder. - Regionszuordnung: Das region-Feld kann verwendet werden, um das Projekt einer Projektregion zuzuordnen. - Buchungskreis-Zuordnung: Das legal_entity_number-Feld kann verwendet werden, um das Projekt einem Buchungskreis zuzuordnen. - Koordinaten: Optionale latitude und longitude setzen den geografischen Standort. Weglassen belässt den gespeicherten Wert; null löscht ihn. - Validierung: Alle erforderlichen Felder (title, project_number) werden vor der Verarbeitung validiert. Best Practices: - Geben Sie external_id für zuverlässige Upsert-Operationen an - Verwenden Sie region oder project_region_id für die Projektregionszuordnung - Verwenden Sie legal_entity_number oder legal_entity_id für die Buchungskreis-Zuordnung - Fügen Sie vollständige Adressinformationen hinzu, wenn verfügbar, für besseres Projektmanagement - Übergeben Sie latitude und longitude gemeinsam, wenn der Standort bekannt ist - Stellen Sie sicher, dass Rollennamen in project_invites mit bestehenden Rollen in Ihrem Mandanten übereinstimmen\",\"dateModified\":\"2026-09-22T13:38:10.786Z\",\"isPartOf\":{\"@id\":\"https://developer.comstruct.com#website\"},\"breadcrumb\":{\"@id\":\"https://developer.comstruct.com/api-reference/projects-create#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://developer.comstruct.com/api-reference/projects-create#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Projekte\",\"item\":\"https://developer.comstruct.com/api-reference/projects\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Projekt erstellen oder aktualisieren\",\"item\":\"https://developer.comstruct.com/api-reference/projects-create\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://developer.comstruct.com/api-reference/projects-create#apireference\",\"headline\":\"Projekt erstellen oder aktualisieren\",\"name\":\"Projekt erstellen oder aktualisieren\",\"description\":\"Erforderliche Berechtigungen: projects:write, users:read, roles:read, tenant_settings:read Erstellt ein neues Projekt oder aktualisiert ein bestehendes Projekt. Dieser Endpunkt führt eine Upsert-Operation basierend auf dem external_id-Feld (falls vorhanden) oder der project_number durch. Hauptfunktionen: - Upsert-Logik: Wenn external_id angegeben ist und ein Projekt mit dieser ID existiert, wird es aktualisiert. Andernfalls wird project_number für den Abgleich verwendet. Wenn keine Übereinstimmung gefunden wird, wird ein neues Projekt erstellt. - Benutzerverwaltung: Behandelt automatisch Benutzereinladungen und Rollenzuweisungen für Projektteammitglieder. - Regionszuordnung: Das region-Feld kann verwendet werden, um das Projekt einer Projektregion zuzuordnen. - Buchungskreis-Zuordnung: Das legal_entity_number-Feld kann verwendet werden, um das Projekt einem Buchungskreis zuzuordnen. - Koordinaten: Optionale latitude und longitude setzen den geografischen Standort. Weglassen belässt den gespeicherten Wert; null löscht ihn. - Validierung: Alle erforderlichen Felder (title, project_number) werden vor der Verarbeitung validiert. Best Practices: - Geben Sie external_id für zuverlässige Upsert-Operationen an - Verwenden Sie region oder project_region_id für die Projektregionszuordnung - Verwenden Sie legal_entity_number oder legal_entity_id für die Buchungskreis-Zuordnung - Fügen Sie vollständige Adressinformationen hinzu, wenn verfügbar, für besseres Projektmanagement - Übergeben Sie latitude und longitude gemeinsam, wenn der Standort bekannt ist - Stellen Sie sicher, dass Rollennamen in project_invites mit bestehenden Rollen in Ihrem Mandanten übereinstimmen\",\"url\":\"https://developer.comstruct.com/api-reference/projects-create\",\"mainEntityOfPage\":{\"@id\":\"https://developer.comstruct.com/api-reference/projects-create#webpage\"},\"dateModified\":\"2026-09-22T13:38:10.786Z\",\"publisher\":{\"@id\":\"https://developer.comstruct.com/#organization\"},\"isPartOf\":{\"@id\":\"https://developer.comstruct.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"comstruct API Dokumentation\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"comstruct API Dokumentation\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/api-reference/projects-create.md","siteName":"comstruct API Dokumentation","nav":{"global":{"anchors":[{"anchor":"Support","icon":"envelope","href":"mailto:support@comstruct.com"}]},"languages":[{"language":"de","default":true,"tabs":[{"tab":"Erste Schritte","pages":[{"title":"Erste Schritte","href":""}]},{"tab":"API-Referenz","groups":[{"group":"Übersicht","pages":[{"title":"API-Referenz","href":"/api-reference/introduction"}]},{"group":"Projekte","pages":[{"title":"Projekte auflisten","openapi":"GET /projects","description":"**Erforderliche Berechtigungen:** `projects:read`\n\nGibt eine paginierte Liste der Projekte zurück. Jedes Projekt enthält die wichtigsten Stammdaten,\neinschließlich Projektnummer, Beschreibung, Region, Adresse, Buchungskreis, externer ID,\nAktivstatus und alternativer Projektnummer.\n","href":"/api-reference/projects"},{"title":"Projekt erstellen oder aktualisieren","openapi":"POST /projects","href":"/api-reference/projects-create"},{"title":"Benutzer zuweisen","openapi":"POST /projects/user-assignments","description":"**Erforderliche Berechtigungen:** `projects:write`, `users:read`, `roles:read`\n\nWeist einer E-Mail eine oder mehrere mandantenweite Rollen zu und vergibt optional Mitgliedschaften auf Projekten und/oder Projektregionen. Der API-Schlüssel muss ein reiner Kunden-Schlüssel sein.\n\n**Bestehender Benutzer** (`status: ASSIGNED`): Die E-Mail gehört bereits zu einem Benutzer des Mandanten (Vergleich ohne Groß-/Kleinschreibung). Alle angegebenen Rollen werden mandantenweit hinzugefügt; bereits vorhandene Rollen bleiben bestehen. Jede Projektmitgliedschaft verwendet die **erste** Rolle als projektbezogene Rolle und ersetzt bei Wiederholung diese Rolle. Regionsmitgliedschaften werden angelegt; bestehende Regionszeilen bleiben unverändert. `projects` und `regions` dürfen entfallen.\n\n**Unbekannte E-Mail** (`status: INVITED`): Es wird mindestens ein Projekt oder eine Region benötigt. Pro Projekt wird eine ausstehende Einladung mit der ersten Rolle gespeichert, pro Region eine Einladung ohne Rolle. Weitere Rollen werden geprüft und in `role_ids` zurückgegeben. Mandantenweit gespeichert werden sie, sobald die E-Mail zu einem Benutzer gehört. Wiederholen Sie die Anfrage danach, um alle mandantenweiten Rollen zu setzen.\n\n**Adressierung:** Jeder Projekteintrag enthält genau eines von `project_number` oder `external_id`. `project_number` ist nur je Buchungskreis eindeutig; ist sie im Mandanten mehrfach vergeben, antwortet die API mit HTTP 409 — verwenden Sie dann `external_id`. Regionen werden über `region_number` adressiert.\n\n**Upsert:** Eine Wiederholung aktualisiert die bestehenden Zeilen. Ausgelassene Projekte, Regionen und Rollen bleiben unverändert. Alle Schreibvorgänge einer Anfrage laufen in einer Mutation und werden gemeinsam übernommen oder gemeinsam verworfen.\n\nLeerzeichen an `email`, Rollentiteln und Kennungen werden entfernt. Rollentitel müssen exakt einer bestehenden Rolle des Mandanten entsprechen.\n","href":"/api-reference/projects-user-assignments"},{"title":"Projekt nach externer ID abrufen","openapi":"GET /projects/byExternalId/{external_id}","href":"/api-reference/projects-by-external-id"},{"title":"Projekt nach Projektnummer abrufen","openapi":"GET /projects/byProjectNumber/{project_number}","href":"/api-reference/projects-by-number"},{"title":"Projektkomponenten abrufen","openapi":"GET /projects/{id}/components","href":"/api-reference/projects-components"},{"title":"Kategorien abrufen","openapi":"GET /projects/{id}/work-types","href":"/api-reference/projects-work-types"},{"title":"Kategorien importieren","openapi":"POST /projects/{id}/work-types","href":"/api-reference/projects-work-types-upsert"},{"title":"SAP-Projekte erstellen","openapi":"POST /projects/sap","href":"/api-reference/projects-sap"}]},{"group":"Lieferungen","pages":[{"title":"Lieferungen auflisten","openapi":"GET /deliveries","href":"/api-reference/deliveries"},{"title":"Lieferung erstellen","openapi":"POST /deliveries","href":"/api-reference/deliveries-create"},{"title":"Lieferung aktualisieren","openapi":"PATCH /deliveries/{id}","href":"/api-reference/deliveries-patch"},{"title":"Lieferung nach ID abrufen","openapi":"GET /deliveries/{id}","href":"/api-reference/deliveries-by-id"},{"title":"Lieferkomponenten abrufen","openapi":"GET /deliveries/{id}/components","href":"/api-reference/deliveries-components-get"},{"title":"Lieferkomponenten ersetzen","openapi":"PUT /deliveries/{id}/components","href":"/api-reference/deliveries-components-put"},{"title":"Lieferschein-PDF abrufen","openapi":"GET /deliveries/{id}/pdf","href":"/api-reference/deliveries-pdf"},{"title":"Lieferschein-PDF hochladen","openapi":"POST /deliveries/pdf","href":"/api-reference/deliveries-pdf-upload"},{"title":"OpenTrans-Lieferung erstellen","openapi":"POST /deliveries/opentrans","href":"/api-reference/deliveries-opentrans"},{"title":"PAHM-Lieferung erstellen","openapi":"POST /deliveries/pahm","href":"/api-reference/deliveries-pahm"},{"title":"Eigene Lieferung erstellen","openapi":"POST /deliveries/custom","href":"/api-reference/deliveries-custom"}]},{"group":"Rechnungen","pages":[{"title":"Rechnungen auflisten","openapi":"GET /invoices","href":"/api-reference/invoices"},{"title":"Rechnung abrufen","openapi":"GET /invoices/{id}","href":"/api-reference/invoices-by-id"},{"title":"Rechnungspositionen abrufen","openapi":"GET /invoices/{id}/items","href":"/api-reference/invoices-items"},{"title":"Rechnungsverlauf abrufen","openapi":"GET /invoices/{id}/history","href":"/api-reference/invoices-history"},{"title":"Rechnungs-PDF abrufen","openapi":"GET /invoices/{id}/pdf","href":"/api-reference/invoices-pdf"},{"title":"DATEV-XML-Export abrufen","openapi":"POST /invoices/public/datev-export","href":"/api-reference/invoices-datev-export"},{"title":"Externen Rechnungsstatus setzen","openapi":"PATCH /invoices/{id}/external-status","href":"/api-reference/invoices-external-status"},{"title":"Rechnung verarbeiten (eigenes Format)","openapi":"POST /invoices/custom","href":"/api-reference/invoices-custom"},{"title":"SAP-Rechnungs-Rückmeldung","openapi":"POST /invoices/callback","href":"/api-reference/invoices-callback"}]},{"group":"Rechnungs-Dimensionen","pages":[{"title":"Rechnungs-Dimensionen (Custom Properties)","openapi":"GET /invoice-dimensions","href":"/api-reference/invoice-dimensions"},{"title":"Rechnungs-Dimension anlegen","openapi":"POST /invoice-dimensions","href":"/api-reference/invoice-dimensions-create"},{"title":"Rechnungs-Dimension aktualisieren","openapi":"PATCH /invoice-dimensions/{id}","href":"/api-reference/invoice-dimensions-update"},{"title":"Rechnungs-Dimension löschen","openapi":"DELETE /invoice-dimensions/{id}","href":"/api-reference/invoice-dimensions-delete"},{"title":"Dimension-Optionen abrufen","openapi":"GET /invoice-dimensions/{dimensionId}/options","href":"/api-reference/invoice-dimensions-options-list"},{"title":"Dimension-Optionen anlegen","openapi":"POST /invoice-dimensions/{dimensionId}/options","href":"/api-reference/invoice-dimensions-options-create"},{"title":"Dimension-Option aktualisieren","openapi":"PATCH /invoice-dimensions/options/{id}","href":"/api-reference/invoice-dimensions-options-update"},{"title":"Dimension-Option löschen","openapi":"DELETE /invoice-dimensions/options/{id}","href":"/api-reference/invoice-dimensions-options-delete"},{"title":"Dimensions-Zuweisungen einer Rechnung abrufen","openapi":"GET /invoice-dimensions/assignments/invoice/{invoiceId}","href":"/api-reference/invoice-dimensions-assignments-invoice-get"},{"title":"Header-Dimensions-Zuweisungen setzen","openapi":"POST /invoice-dimensions/assignments/invoice","href":"/api-reference/invoice-dimensions-assignments-invoice-set"},{"title":"Positions-Dimensions-Zuweisungen (Bulk) setzen","openapi":"POST /invoice-dimensions/assignments/line-item/bulk","href":"/api-reference/invoice-dimensions-assignments-line-item-bulk"},{"title":"Konto-Dimensions-Zuweisungen (Bulk) setzen","openapi":"POST /invoice-dimensions/assignments/account/bulk","href":"/api-reference/invoice-dimensions-assignments-account-bulk-set"},{"title":"Konto-Dimensions-Zuweisungen (Bulk) teilweise aktualisieren","openapi":"PATCH /invoice-dimensions/assignments/account/bulk","href":"/api-reference/invoice-dimensions-assignments-account-bulk-patch"},{"title":"Konto-Dimensions-Zuweisungen (ein Konto) setzen","openapi":"POST /invoice-dimensions/assignments/account","href":"/api-reference/invoice-dimensions-assignments-account-set"},{"title":"Dimensions-Zuweisung löschen","openapi":"DELETE /invoice-dimensions/assignments/{id}","href":"/api-reference/invoice-dimensions-assignments-delete"}]},{"group":"Lieferanten","pages":[{"title":"Lieferanten erstellen oder aktualisieren","openapi":"POST /suppliers","href":"/api-reference/suppliers"},{"title":"SAP-Lieferanten erstellen oder aktualisieren","openapi":"POST /suppliers/sap","href":"/api-reference/suppliers-sap"},{"title":"Lieferant Buchungskreisen zuordnen","openapi":"PUT /suppliers/{id}/legal-entities","href":"/api-reference/suppliers-legal-entities"}]},{"group":"Bestellungen","pages":[{"title":"Bestellungen auflisten","openapi":"GET /purchase-orders","href":"/api-reference/purchase-orders-list"},{"title":"Bestellungen erstellen","openapi":"POST /purchase-orders","href":"/api-reference/purchase-orders"},{"title":"SAP-Bestellungen erstellen","openapi":"POST /purchase-orders/sap","href":"/api-reference/purchase-orders-sap"}]},{"group":"Bestellungen (Lieferanten)","pages":[{"title":"Lieferantenbestellung aktualisieren","openapi":"PATCH /supplier-orders/{id}","href":"/api-reference/supplier-orders-patch"}]},{"group":"Stammdaten","pages":[{"title":"Konten auflisten","openapi":"GET /accounts","href":"/api-reference/accounts"},{"title":"Konten erstellen oder aktualisieren","openapi":"POST /accounts","href":"/api-reference/accounts-create"},{"title":"Zahlungsbedingungen auflisten","openapi":"GET /payment-terms","href":"/api-reference/payment-terms"},{"title":"Zahlungsbedingungen erstellen/aktualisieren","openapi":"POST /payment-terms","href":"/api-reference/payment-terms-upsert"},{"title":"Steuercodes auflisten","openapi":"GET /tax-codes","href":"/api-reference/tax-codes"},{"title":"Steuercodes erstellen/aktualisieren","openapi":"POST /tax-codes","href":"/api-reference/tax-codes-upsert"},{"title":"Buchungskreise auflisten","openapi":"GET /legal-entities","href":"/api-reference/company-codes"},{"title":"Buchungskreise erstellen/aktualisieren","openapi":"POST /legal-entities","href":"/api-reference/company-codes-upsert"},{"title":"Projektregionen auflisten","openapi":"GET /project-regions","href":"/api-reference/project-regions"},{"title":"Projektregionen erstellen/aktualisieren","openapi":"POST /project-regions","href":"/api-reference/project-regions-upsert"}]},{"group":"Q-Point Integration","pages":[{"title":"Q-Point-Lieferung erstellen","openapi":"POST /qpoint","href":"/api-reference/qpoint"},{"title":"Q-Point-PDF hochladen","openapi":"POST /qpoint/pdf","href":"/api-reference/qpoint-pdf"}]},{"group":"Workflows","pages":[{"title":"Workflow auslösen","openapi":"POST /workflows/trigger","href":"/api-reference/workflows-trigger"},{"title":"Workflow-Status abrufen","openapi":"GET /workflows/status/{external_id}","href":"/api-reference/workflows-status"},{"title":"Workflow-Status aktualisieren","openapi":"PUT /workflows/status/{external_id}","href":"/api-reference/workflows-status-update"}]},{"group":"Kalender","pages":[{"title":"Kalender-Abonnement","openapi":"GET /calendars/subscription","href":"/api-reference/calendars"}]},{"group":"IDS Aufträge","pages":[{"title":"IDS-Auftrag verarbeiten","openapi":"POST /ids/{order_id}","href":"/api-reference/ids-orders"}]}]}]},{"language":"en","pages":[{"title":"en","href":"/en/api-reference/projects-create"}]}]},"basePath":"","title":"Projekt erstellen oder aktualisieren - comstruct API Dokumentation","buildId":"dpl_596ePT575z4qnAFksq1biRW97aLY","deploymentId":"dpl_596ePT575z4qnAFksq1biRW97aLY","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-C9Wu0MeN.js","utils-jWgu-6Qf.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-DBD8f9qn.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-BGuX1ui5.js","snippetPresets-Evy63nQB.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","ApiExamples-BQHO1lnV.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-B6C8m-t_.js","shallow-BG4cT0fH.js","getApiPlaygroundDisplay-CgEPrE-D.js","CodeSnippet-CU8JyZ9N.js","CodeSnippets-BnxHU32T.js","Page-D6S0Yh6q.js","getPastedJson-CwiYOonh.js","icon-DYDpWmDf.js","MethodPill-C-J-l7_c.js","DuplicateIcon-B6ARwg9w.js","createIcon-Dsv4MtDq.js","DynamicMarkdown-CtasenyM.js","SectionHeading-YNcgYwjB.js","axios-vUo_bRtp.js","Markdown-CwLx6PAg.js","clsx-C3kuh_dz.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CmKHfscc.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-U3mI6Ljh.js"]}