{
"code": 500,
"errors": [],
"message": "Internal Server Error"
}
SystemIntegrations
Partially Update System Integration
Updates the fields of a system integration that the request sends with a value. A field left
out, or sent as null, keeps its stored value, and this holds inside auth and system_custom
too. An integration can therefore be updated without knowing its secrets, for example when the
customer entered them through a credentials link.
Changing credentials requires the administrate action on the integration, not just update.
Credentials are bound to the endpoint they were entered for. When an update changes where the integration connects (api_endpoint_url, or system_custom.s3_host / system_custom.sftp_host), the stored api_key and api_client_secret are cleared unless the same request sends them, whether new or unchanged; api_client_id is kept. If you do not hold the credentials, change the endpoint first
and then create a credentials link for your customer.
Partial update of a system integration. Only the fields sent with a value change; a field left out, or sent as null, keeps its stored value. This applies inside auth and system_custom too.
An object representing a system integration in Twine.
Show child attributes
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Twine Integrations","colors":{"primary":"#7600ff","light":"#ad66ff","dark":"#7600ff"},"logo":{"light":"https://mintcdn.com/entwineab/W0WCY-b2dvTokvLn/logo/light.svg?fit=max\u0026auto=format\u0026n=W0WCY-b2dvTokvLn\u0026q=85\u0026s=7e70d0ec35e8816f98a512eafa2ad35b","dark":"https://mintcdn.com/entwineab/W0WCY-b2dvTokvLn/logo/dark.svg?fit=max\u0026auto=format\u0026n=W0WCY-b2dvTokvLn\u0026q=85\u0026s=bcf15f923005d67de257a74c061db962"},"favicon":"https://mintcdn.com/entwineab/OPi-j2jbIEGoK6fy/favicon.svg?fit=max\u0026auto=format\u0026n=OPi-j2jbIEGoK6fy\u0026q=85\u0026s=190facce372d84ae3de157af3da0688e","navbar":{"links":[{"href":"mailto:[email protected]","label":"Support"},{"href":"https://app-stage.twine.se","label":"Stage"}],"primary":{"type":"button","label":"App","href":"https://app.twine.se"}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"styling":{"latex":false},"navigation":{"global":{"anchors":[{"anchor":"twine.se","icon":"globe","href":"https://www.twine.se"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"entwineab","hasAudioNarration":false,"actualSubdomain":"entwineab","customDomains":["docs.twine.se"],"gitSource":{"type":"github","owner":"twine-se","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6acf668b4788a74327b72032","collectionId":"027bd1b7-2940-449a-bfcf-f8ccfca1f9a2","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6acf668b4788a74327b72032"},"entitlements":{},"buildId":"6acf668b4788a74327b72032","clientVersion":"0.0.3966","searchFilterCounts":[{"language":"default","tag":"API Reference","count":149},{"language":"default","tag":"Data Engine","count":86},{"language":"default","tag":"Integrations","count":72},{"language":"default","tag":"Flow Engine","count":41},{"language":"default","tag":"Platform","count":33},{"language":"default","tag":"Assigns","count":28},{"language":"default","tag":"Flow Control","count":19},{"language":"default","tag":"Transformation","count":19},{"language":"default","tag":"Changelog","count":18},{"language":"default","tag":"HRIS","count":14}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableAskAiSearchBar":true},"hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","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":"editor-v7-file-tree","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":"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":"pause-universal-search-reconcile","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":"per-site-search-delta","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":"editor-private-page-search","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":"editor-nav-generations","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":"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":"byok-sep-25","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":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","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}],"isAtlas":false,"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/systemintegrations/partially-update-system-integration","slug":"/api-reference/systemintegrations/partially-update-system-integration","pageMetadata":{"title":"Partially Update System Integration","description":"Updates the fields of a system integration that the request sends with a value. A field left\nout, or sent as `null`, keeps its stored value, and this holds inside `auth` and `system_custom`\ntoo. An integration can therefore be updated without knowing its secrets, for example when the\ncustomer entered them through a credentials link.\n\nChanging credentials requires the `administrate` action on the integration, not just `update`.\n\nCredentials are bound to the endpoint they were entered for. When an update changes where the integration connects (`api_endpoint_url`, or `system_custom.s3_host` / `system_custom.sftp_host`), the stored `api_key` and `api_client_secret` are cleared unless the same request sends them, whether new or unchanged; `api_client_id` is kept. If you do not hold the credentials, change the endpoint first\nand then create a credentials link for your customer.\n","deprecated":null,"version":null,"openapi":"https://api.twine.se/spec/openapi.json patch /v1/org/system-integrations/{id}","href":"/api-reference/systemintegrations/partially-update-system-integration","autogeneratedByOpenApi":true},"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 p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsxs(_components.p, {\n children: [\"Updates the fields of a system integration that the request sends with a value. A field left\\nout, or sent as \", _jsx(_components.code, {\n children: \"null\"\n }), \", keeps its stored value, and this holds inside \", _jsx(_components.code, {\n children: \"auth\"\n }), \" and \", _jsx(_components.code, {\n children: \"system_custom\"\n }), \"\\ntoo. An integration can therefore be updated without knowing its secrets, for example when the\\ncustomer entered them through a credentials link.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Changing credentials requires the \", _jsx(_components.code, {\n children: \"administrate\"\n }), \" action on the integration, not just \", _jsx(_components.code, {\n children: \"update\"\n }), \".\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Credentials are bound to the endpoint they were entered for. When an update changes where the integration connects (\", _jsx(_components.code, {\n children: \"api_endpoint_url\"\n }), \", or \", _jsx(_components.code, {\n children: \"system_custom.s3_host\"\n }), \" / \", _jsx(_components.code, {\n children: \"system_custom.sftp_host\"\n }), \"), the stored \", _jsx(_components.code, {\n children: \"api_key\"\n }), \" and \", _jsx(_components.code, {\n children: \"api_client_secret\"\n }), \" are cleared unless the same request sends them, whether new or unchanged; \", _jsx(_components.code, {\n children: \"api_client_id\"\n }), \" is kept. If you do not hold the credentials, change the endpoint first\\nand then create a credentials link for your customer.\"]\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":"Partially Update System Integration","description":"Updates the fields of a system integration that the request sends with a value. A field left\nout, or sent as `null`, keeps its stored value, and this holds inside `auth` and `system_custom`\ntoo. An integration can therefore be updated without knowing its secrets, for example when the\ncustomer entered them through a credentials link.\n\nChanging credentials requires the `administrate` action on the integration, not just `update`.\n\nCredentials are bound to the endpoint they were entered for. When an update changes where the integration connects (`api_endpoint_url`, or `system_custom.s3_host` / `system_custom.sftp_host`), the stored `api_key` and `api_client_secret` are cleared unless the same request sends them, whether new or unchanged; `api_client_id` is kept. If you do not hold the credentials, change the endpoint first\nand then create a credentials link for your customer.\n","deprecated":null,"version":null,"openapi":"https://api.twine.se/spec/openapi.json patch /v1/org/system-integrations/{id}","href":"/api-reference/systemintegrations/partially-update-system-integration","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"callbacks":{},"description":"Updates the fields of a system integration that the request sends with a value. A field left\nout, or sent as `null`, keeps its stored value, and this holds inside `auth` and `system_custom`\ntoo. An integration can therefore be updated without knowing its secrets, for example when the\ncustomer entered them through a credentials link.\n\nChanging credentials requires the `administrate` action on the integration, not just `update`.\n\nCredentials are bound to the endpoint they were entered for. When an update changes where the integration connects (`api_endpoint_url`, or `system_custom.s3_host` / `system_custom.sftp_host`), the stored `api_key` and `api_client_secret` are cleared unless the same request sends them, whether new or unchanged; `api_client_id` is kept. If you do not hold the credentials, change the endpoint first\nand then create a credentials link for your customer.\n","operationId":"patchSystemIntegration","parameters":["c61f5bc6-bccb-4b2e-891c-257763cf09dc"],"requestBody":"f87b0dc7-4df7-40ac-a8c3-36c01254f8e8","responses":{"200":"a68b26ba-157d-44ad-a0ba-742a8a3fb6ee","400":"d0b6363d-6720-4d43-a95f-1f4e133f5e88","403":"f7754493-b30d-41a5-a417-0c0093f4f5d7","500":"4f47456c-53cb-4599-845c-0685c649d025"},"summary":"Partially Update System Integration","tags":["SystemIntegrations"],"method":"patch","type":"path","servers":["9052e5c0-34df-47d4-8603-693bab08bcc0","c9338b87-25eb-4aa8-b3fe-b99dae164f43"],"security":["48248fe8-3acb-4be1-b40f-8384723ebc05"],"path":"/v1/org/system-integrations/{id}","baseUrlOptions":["https://api.twine.se","https://api-stage.twine.se"],"title":"Partially Update System Integration","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"c61f5bc6-bccb-4b2e-891c-257763cf09dc":{"description":"","in":"path","name":"id","required":true,"schema":{"type":"string","isRequired":true,"uniqueKey":"","typeLabel":"string"}}},"requestBody":{"content":{"application/json":{"schema":{"description":"Partial update of a system integration. Only the fields sent with a value change; a field left out, or sent as null, keeps its stored value. This applies inside `auth` and `system_custom` too.","properties":{"auth":{"type":"any","uniqueKey":"auth","typeLabel":"any"},"description":{"oneOf":[{"description":"Optional description of the system integration","type":"string","uniqueKey":"description.oneOf.0","typeLabel":"string"},{"description":"Optional description of the system integration","type":"null","uniqueKey":"description.oneOf.1","typeLabel":"null"}],"uniqueKey":"description","typeLabel":"string | null"},"system_custom":{"oneOf":[{"type":"object","title":"AgdaFileSystemCustom","description":"Custom configuration for Agda File system integrations.","required":["slug"],"properties":{"slug":{"enum":["agda_file"],"nullable":false,"type":"string","isRequired":true,"uniqueKey":"system_custom.oneOf.0.slug","typeLabel":"enum\u003cstring>"},"change_lookback_enabled":{"description":"When false (the default) every employee is sent in full. When true the file is limited to employees with a recorded change inside the lookback window.","nullable":false,"type":"boolean","uniqueKey":"system_custom.oneOf.0.change_lookback_enabled","typeLabel":"boolean"},"change_lookback_unit":{"oneOf":[{"description":"Unit of the lookback window.","enum":["day","week","month","year"],"type":"string","uniqueKey":"system_custom.oneOf.0.change_lookback_unit.oneOf.0","typeLabel":"enum\u003cstring>"},{"description":"Unit of the lookback window.","enum":["day","week","month","year"],"type":"null","uniqueKey":"system_custom.oneOf.0.change_lookback_unit.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.0.change_lookback_unit","typeLabel":"enum\u003cstring> | null"},"change_lookback_value":{"oneOf":[{"description":"Size of the lookback window. Must be at least 1 while the window is enabled.","minimum":1,"type":"integer","uniqueKey":"system_custom.oneOf.0.change_lookback_value.oneOf.0","typeLabel":"integer"},{"description":"Size of the lookback window. Must be at least 1 while the window is enabled.","minimum":1,"type":"null","uniqueKey":"system_custom.oneOf.0.change_lookback_value.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.0.change_lookback_value","typeLabel":"integer | null"},"company_no":{"oneOf":[{"description":"Agda's FTG_NR. Must match an existing company in the Agda database this integration writes to.","type":"string","uniqueKey":"system_custom.oneOf.0.company_no.oneOf.0","typeLabel":"string"},{"description":"Agda's FTG_NR. Must match an existing company in the Agda database this integration writes to.","type":"null","uniqueKey":"system_custom.oneOf.0.company_no.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.0.company_no","typeLabel":"string | null"},"file_name_prefix":{"oneOf":[{"description":"Optional prefix prepended to the exported file name, which is otherwise twine_agda_export_\u003ctimestamp>.xml.","pattern":"^[A-Za-z0-9._-]+$","type":"string","uniqueKey":"system_custom.oneOf.0.file_name_prefix.oneOf.0","typeLabel":"string"},{"description":"Optional prefix prepended to the exported file name, which is otherwise twine_agda_export_\u003ctimestamp>.xml.","pattern":"^[A-Za-z0-9._-]+$","type":"null","uniqueKey":"system_custom.oneOf.0.file_name_prefix.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.0.file_name_prefix","typeLabel":"string | null"},"salary_paycodes":{"oneOf":[{"description":"LONEART values that form one mutually exclusive salary timeline, so a move from an hourly rate to a monthly salary closes the old one. Empty means each LONEART is only closed out against itself.","items":{"type":"string","uniqueKey":"system_custom.oneOf.0.salary_paycodes.oneOf.0.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"system_custom.oneOf.0.salary_paycodes.oneOf.0","typeLabel":"string[]"},{"description":"LONEART values that form one mutually exclusive salary timeline, so a move from an hourly rate to a monthly salary closes the old one. Empty means each LONEART is only closed out against itself.","items":{"type":"string"},"type":"null","uniqueKey":"system_custom.oneOf.0.salary_paycodes.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.0.salary_paycodes","typeLabel":"string[] | null"}},"uniqueKey":"system_custom.oneOf.0","typeLabel":"AgdaFileSystemCustom · object"},{"type":"object","title":"AgdaPsSystemCustom","description":"Custom configuration for Agda PS system integrations.","properties":{"auth_scheme":{"oneOf":[{"description":"The authentication scheme to use for this Agda PS integration.","enum":["basic","bearer"],"type":"string","uniqueKey":"system_custom.oneOf.1.auth_scheme.oneOf.0","typeLabel":"enum\u003cstring>"},{"description":"The authentication scheme to use for this Agda PS integration.","enum":["basic","bearer"],"type":"null","uniqueKey":"system_custom.oneOf.1.auth_scheme.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.1.auth_scheme","typeLabel":"enum\u003cstring> | null"},"slug":{"enum":["agda_ps"],"nullable":false,"type":"string","uniqueKey":"system_custom.oneOf.1.slug","typeLabel":"enum\u003cstring>"}},"uniqueKey":"system_custom.oneOf.1","typeLabel":"AgdaPsSystemCustom · object"},{"type":"object","title":"BambooHrSystemCustom","description":"Custom configuration for BambooHR system integrations.","properties":{"slug":{"enum":["bamboo_hr"],"nullable":false,"type":"string","uniqueKey":"system_custom.oneOf.2.slug","typeLabel":"enum\u003cstring>"},"subdomain":{"oneOf":[{"description":"The subdomain for the BambooHR account.","type":"string","uniqueKey":"system_custom.oneOf.2.subdomain.oneOf.0","typeLabel":"string"},{"description":"The subdomain for the BambooHR account.","type":"null","uniqueKey":"system_custom.oneOf.2.subdomain.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.2.subdomain","typeLabel":"string | null"}},"uniqueKey":"system_custom.oneOf.2","typeLabel":"BambooHrSystemCustom · object"},{"type":"object","title":"CaspecoSystemCustom","description":"Custom configuration for Caspeco system integrations. The access token goes in `api_key` and the Caspeco database name (the `system` header, one per company) in `external_org_id`.","properties":{"slug":{"enum":["caspeco"],"nullable":false,"type":"string","uniqueKey":"system_custom.oneOf.3.slug","typeLabel":"enum\u003cstring>"},"use_sandbox":{"oneOf":[{"default":false,"description":"Send requests to the sandbox host (rms.dev.caspeco.net) instead of production.","type":"boolean","uniqueKey":"system_custom.oneOf.3.use_sandbox.oneOf.0","typeLabel":"boolean"},{"default":false,"description":"Send requests to the sandbox host (rms.dev.caspeco.net) instead of production.","type":"null","uniqueKey":"system_custom.oneOf.3.use_sandbox.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.3.use_sandbox","typeLabel":"boolean | null"}},"uniqueKey":"system_custom.oneOf.3","typeLabel":"CaspecoSystemCustom · object"},{"type":"object","title":"SpreadsheetSystemCustom","description":"Custom configuration for Spreadsheet system integrations.","properties":{"column_order_type":{"description":"The naming scheme used in the XLSX","enum":["a1","r1c1"],"type":"string","uniqueKey":"system_custom.oneOf.4.column_order_type","typeLabel":"enum\u003cstring>"},"main_sheet_id":{"oneOf":[{"description":"The `id` of the sheet holding one row per employee; other sheets attach to it through their link column. Left null, the first sheet that is neither ignored nor multirow is used.","type":"string","uniqueKey":"system_custom.oneOf.4.main_sheet_id.oneOf.0","typeLabel":"string"},{"description":"The `id` of the sheet holding one row per employee; other sheets attach to it through their link column. Left null, the first sheet that is neither ignored nor multirow is used.","type":"null","uniqueKey":"system_custom.oneOf.4.main_sheet_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.4.main_sheet_id","typeLabel":"string | null"},"quote_char":{"default":"\"","description":"The character used to quote values in the CSV","type":"string","uniqueKey":"system_custom.oneOf.4.quote_char","typeLabel":"string"},"separator":{"default":",","description":"The character used to separate values in the CSV","type":"string","uniqueKey":"system_custom.oneOf.4.separator","typeLabel":"string"},"sheets":{"description":"The sheets to process in the spreadsheet file (CSV/XLSX/ODS). For a CSV file there should only be 1 sheet.","items":{"description":"Custom configuration for Spreadsheet system integrations - Sheet.","properties":{"column_names":{"oneOf":[{"description":"The names of the columns to include in the integration. This is not required for the functionality, but can be used to provide better context in the UI.","items":{"type":"string","uniqueKey":"system_custom.oneOf.4.sheets.items.[INDEX].column_names.oneOf.0.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"system_custom.oneOf.4.sheets.items.[INDEX].column_names.oneOf.0","typeLabel":"string[]"},{"description":"The names of the columns to include in the integration. This is not required for the functionality, but can be used to provide better context in the UI.","items":{"type":"string"},"type":"null","uniqueKey":"system_custom.oneOf.4.sheets.items.[INDEX].column_names.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.4.sheets.items.[INDEX].column_names","typeLabel":"string[] | null"},"end_date_column_index":{"oneOf":[{"description":"Index of the column whose value becomes the end-date (exclusive) for every DatedProperty extracted from this row.","type":"integer","uniqueKey":"system_custom.oneOf.4.sheets.items.[INDEX].end_date_column_index.oneOf.0","typeLabel":"integer"},{"description":"Index of the column whose value becomes the end-date (exclusive) for every DatedProperty extracted from this row.","type":"null","uniqueKey":"system_custom.oneOf.4.sheets.items.[INDEX].end_date_column_index.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.4.sheets.items.[INDEX].end_date_column_index","typeLabel":"integer | null"},"exclude_row_indexes":{"oneOf":[{"default":[0],"description":"The indexes of the rows to exclude from processing","items":{"type":"integer","uniqueKey":"system_custom.oneOf.4.sheets.items.[INDEX].exclude_row_indexes.oneOf.0.items.[INDEX]","typeLabel":"integer"},"type":"array","uniqueKey":"system_custom.oneOf.4.sheets.items.[INDEX].exclude_row_indexes.oneOf.0","typeLabel":"integer[]"},{"default":[0],"description":"The indexes of the rows to exclude from processing","items":{"type":"integer"},"type":"null","uniqueKey":"system_custom.oneOf.4.sheets.items.[INDEX].exclude_row_indexes.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.4.sheets.items.[INDEX].exclude_row_indexes","typeLabel":"integer[] | null"},"id":{"oneOf":[{"description":"Stable identifier for the sheet, referenced by `main_sheet_id`. Send back the id you read for each sheet: a `sheets` write that omits ids replaces the sheets, which clears their ids and any `main_sheet_id` pointing at one.","type":"string","uniqueKey":"system_custom.oneOf.4.sheets.items.[INDEX].id.oneOf.0","typeLabel":"string"},{"description":"Stable identifier for the sheet, referenced by `main_sheet_id`. Send back the id you read for each sheet: a `sheets` write that omits ids replaces the sheets, which clears their ids and any `main_sheet_id` pointing at one.","type":"null","uniqueKey":"system_custom.oneOf.4.sheets.items.[INDEX].id.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.4.sheets.items.[INDEX].id","typeLabel":"string | null"},"id_column_index":{"oneOf":[{"description":"Index of the column whose value becomes the `id` on every DatedProperty extracted from this row. Use to differentiate parallel value histories (e.g. salary type) within a multirow sheet.","type":"integer","uniqueKey":"system_custom.oneOf.4.sheets.items.[INDEX].id_column_index.oneOf.0","typeLabel":"integer"},{"description":"Index of the column whose value becomes the `id` on every DatedProperty extracted from this row. Use to differentiate parallel value histories (e.g. salary type) within a multirow sheet.","type":"null","uniqueKey":"system_custom.oneOf.4.sheets.items.[INDEX].id_column_index.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.4.sheets.items.[INDEX].id_column_index","typeLabel":"integer | null"},"ignore":{"oneOf":[{"description":"Whether to ignore this sheet","type":"boolean","uniqueKey":"system_custom.oneOf.4.sheets.items.[INDEX].ignore.oneOf.0","typeLabel":"boolean"},{"description":"Whether to ignore this sheet","type":"null","uniqueKey":"system_custom.oneOf.4.sheets.items.[INDEX].ignore.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.4.sheets.items.[INDEX].ignore","typeLabel":"boolean | null"},"link_column_index":{"oneOf":[{"description":"The index of the column that links multiple rows to the same entity. Required if multirows is true.","type":"integer","uniqueKey":"system_custom.oneOf.4.sheets.items.[INDEX].link_column_index.oneOf.0","typeLabel":"integer"},{"description":"The index of the column that links multiple rows to the same entity. Required if multirows is true.","type":"null","uniqueKey":"system_custom.oneOf.4.sheets.items.[INDEX].link_column_index.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.4.sheets.items.[INDEX].link_column_index","typeLabel":"integer | null"},"multirows":{"oneOf":[{"description":"If true, indicated that entities can span multiple rows. Should be specified together with link_column_index.","type":"boolean","uniqueKey":"system_custom.oneOf.4.sheets.items.[INDEX].multirows.oneOf.0","typeLabel":"boolean"},{"description":"If true, indicated that entities can span multiple rows. Should be specified together with link_column_index.","type":"null","uniqueKey":"system_custom.oneOf.4.sheets.items.[INDEX].multirows.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.4.sheets.items.[INDEX].multirows","typeLabel":"boolean | null"},"name":{"oneOf":[{"description":"The name of the sheet","type":"string","uniqueKey":"system_custom.oneOf.4.sheets.items.[INDEX].name.oneOf.0","typeLabel":"string"},{"description":"The name of the sheet","type":"null","uniqueKey":"system_custom.oneOf.4.sheets.items.[INDEX].name.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.4.sheets.items.[INDEX].name","typeLabel":"string | null"},"nr_of_columns":{"oneOf":[{"description":"The number of columns to read from the sheet","type":"integer","uniqueKey":"system_custom.oneOf.4.sheets.items.[INDEX].nr_of_columns.oneOf.0","typeLabel":"integer"},{"description":"The number of columns to read from the sheet","type":"null","uniqueKey":"system_custom.oneOf.4.sheets.items.[INDEX].nr_of_columns.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.4.sheets.items.[INDEX].nr_of_columns","typeLabel":"integer | null"},"start_date_column_index":{"oneOf":[{"description":"Index of the column whose value becomes `valid_from` on every DatedProperty extracted from this row.","type":"integer","uniqueKey":"system_custom.oneOf.4.sheets.items.[INDEX].start_date_column_index.oneOf.0","typeLabel":"integer"},{"description":"Index of the column whose value becomes `valid_from` on every DatedProperty extracted from this row.","type":"null","uniqueKey":"system_custom.oneOf.4.sheets.items.[INDEX].start_date_column_index.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.4.sheets.items.[INDEX].start_date_column_index","typeLabel":"integer | null"}},"title":"SpreadsheetCustomSheet","type":"object","uniqueKey":"system_custom.oneOf.4.sheets.items.[INDEX]","typeLabel":"SpreadsheetCustomSheet · object"},"type":"array","uniqueKey":"system_custom.oneOf.4.sheets","typeLabel":"SpreadsheetCustomSheet · object[]"},"slug":{"enum":["spreadsheet"],"nullable":false,"type":"string","uniqueKey":"system_custom.oneOf.4.slug","typeLabel":"enum\u003cstring>"}},"uniqueKey":"system_custom.oneOf.4","typeLabel":"SpreadsheetSystemCustom · object"},{"type":"object","title":"EntraIdSystemCustom","description":"Custom configuration for EntraID system integrations.","properties":{"application_id":{"oneOf":[{"description":"The application ID for the EntraID integration. This is either the ID of a customer-defined application or the ID of a customer-specific application hosted by Twine","type":"string","uniqueKey":"system_custom.oneOf.5.application_id.oneOf.0","typeLabel":"string"},{"description":"The application ID for the EntraID integration. This is either the ID of a customer-defined application or the ID of a customer-specific application hosted by Twine","type":"null","uniqueKey":"system_custom.oneOf.5.application_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.5.application_id","typeLabel":"string | null"},"application_permissions":{"oneOf":[{"description":"The permissions required in the Entra Application.","items":{"type":"string","uniqueKey":"system_custom.oneOf.5.application_permissions.oneOf.0.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"system_custom.oneOf.5.application_permissions.oneOf.0","typeLabel":"string[]"},{"description":"The permissions required in the Entra Application.","items":{"type":"string"},"type":"null","uniqueKey":"system_custom.oneOf.5.application_permissions.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.5.application_permissions","typeLabel":"string[] | null"},"customer_defined_application":{"oneOf":[{"description":"Whether to enable API v2 for the EvityHR account.","type":"boolean","uniqueKey":"system_custom.oneOf.5.customer_defined_application.oneOf.0","typeLabel":"boolean"},{"description":"Whether to enable API v2 for the EvityHR account.","type":"null","uniqueKey":"system_custom.oneOf.5.customer_defined_application.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.5.customer_defined_application","typeLabel":"boolean | null"},"manual_directory_extension_attributes":{"oneOf":[{"description":"Manually specified directory extension attributes for the EntraID integration. This is sometimes needed when the Graph API does not return these attributes automatically, even though they exist in the customer's directory.","items":{"type":"string","uniqueKey":"system_custom.oneOf.5.manual_directory_extension_attributes.oneOf.0.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"system_custom.oneOf.5.manual_directory_extension_attributes.oneOf.0","typeLabel":"string[]"},{"description":"Manually specified directory extension attributes for the EntraID integration. This is sometimes needed when the Graph API does not return these attributes automatically, even though they exist in the customer's directory.","items":{"type":"string"},"type":"null","uniqueKey":"system_custom.oneOf.5.manual_directory_extension_attributes.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.5.manual_directory_extension_attributes","typeLabel":"string[] | null"},"secret_rotation_days":{"oneOf":[{"description":"The number of days before which the secret should be rotated. Note: The secret will likely be rotated before this time. Has no effect if `customer_defined_application` is false.","type":"integer","uniqueKey":"system_custom.oneOf.5.secret_rotation_days.oneOf.0","typeLabel":"integer"},{"description":"The number of days before which the secret should be rotated. Note: The secret will likely be rotated before this time. Has no effect if `customer_defined_application` is false.","type":"null","uniqueKey":"system_custom.oneOf.5.secret_rotation_days.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.5.secret_rotation_days","typeLabel":"integer | null"},"slug":{"enum":["entra_id"],"nullable":false,"type":"string","uniqueKey":"system_custom.oneOf.5.slug","typeLabel":"enum\u003cstring>"},"tenant_id":{"oneOf":[{"description":"The tenant ID for the EntraID integration. Note: This is the customer's tenant ID.","type":"string","uniqueKey":"system_custom.oneOf.5.tenant_id.oneOf.0","typeLabel":"string"},{"description":"The tenant ID for the EntraID integration. Note: This is the customer's tenant ID.","type":"null","uniqueKey":"system_custom.oneOf.5.tenant_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.5.tenant_id","typeLabel":"string | null"}},"uniqueKey":"system_custom.oneOf.5","typeLabel":"EntraIdSystemCustom · object"},{"type":"object","title":"EvityHrSystemCustom","description":"Custom configuration for EvityHR system integrations.","properties":{"enable_api_v2":{"oneOf":[{"description":"Whether to enable API v2 for the EvityHR account.","type":"boolean","uniqueKey":"system_custom.oneOf.6.enable_api_v2.oneOf.0","typeLabel":"boolean"},{"description":"Whether to enable API v2 for the EvityHR account.","type":"null","uniqueKey":"system_custom.oneOf.6.enable_api_v2.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.6.enable_api_v2","typeLabel":"boolean | null"},"slug":{"enum":["evity"],"nullable":false,"type":"string","uniqueKey":"system_custom.oneOf.6.slug","typeLabel":"enum\u003cstring>"}},"uniqueKey":"system_custom.oneOf.6","typeLabel":"EvityHrSystemCustom · object"},{"type":"object","title":"FlexHrmSystemCustom","description":"Custom configuration for FlexHrm system integrations.","properties":{"company_nr":{"oneOf":[{"description":"The company number for customer tenant. Reads like a regular number like 12345.","type":"string","uniqueKey":"system_custom.oneOf.7.company_nr.oneOf.0","typeLabel":"string"},{"description":"The company number for customer tenant. Reads like a regular number like 12345.","type":"null","uniqueKey":"system_custom.oneOf.7.company_nr.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.7.company_nr","typeLabel":"string | null"},"instance_id":{"oneOf":[{"description":"The instance UUID for customer tenant. Twine will automatically retrieve this value.","type":"string","uniqueKey":"system_custom.oneOf.7.instance_id.oneOf.0","typeLabel":"string"},{"description":"The instance UUID for customer tenant. Twine will automatically retrieve this value.","type":"null","uniqueKey":"system_custom.oneOf.7.instance_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.7.instance_id","typeLabel":"string | null"},"instance_nr":{"oneOf":[{"description":"The instance number for customer tenant. Reads like a regular number like 12345.","type":"string","uniqueKey":"system_custom.oneOf.7.instance_nr.oneOf.0","typeLabel":"string"},{"description":"The instance number for customer tenant. Reads like a regular number like 12345.","type":"null","uniqueKey":"system_custom.oneOf.7.instance_nr.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.7.instance_nr","typeLabel":"string | null"},"probation_employment_type_id":{"oneOf":[{"description":"The probation employment type UUID for the customer tenant. If this is set, Twine will automatically generate additional employment periods with this as the employment type. Should only be used if the source system cannot provide discreet probationary employment periods.","type":"string","uniqueKey":"system_custom.oneOf.7.probation_employment_type_id.oneOf.0","typeLabel":"string"},{"description":"The probation employment type UUID for the customer tenant. If this is set, Twine will automatically generate additional employment periods with this as the employment type. Should only be used if the source system cannot provide discreet probationary employment periods.","type":"null","uniqueKey":"system_custom.oneOf.7.probation_employment_type_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.7.probation_employment_type_id","typeLabel":"string | null"},"slug":{"enum":["flex_hrm"],"nullable":false,"type":"string","uniqueKey":"system_custom.oneOf.7.slug","typeLabel":"enum\u003cstring>"}},"uniqueKey":"system_custom.oneOf.7","typeLabel":"FlexHrmSystemCustom · object"},{"type":"object","title":"FortnoxSystemCustom","description":"Custom configuration for Fortnox system integrations.","properties":{"insert_zero_salaries":{"oneOf":[{"description":"Whether to insert zero salaries for non-working periods for employees in Fortnox.","type":"boolean","uniqueKey":"system_custom.oneOf.8.insert_zero_salaries.oneOf.0","typeLabel":"boolean"},{"description":"Whether to insert zero salaries for non-working periods for employees in Fortnox.","type":"null","uniqueKey":"system_custom.oneOf.8.insert_zero_salaries.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.8.insert_zero_salaries","typeLabel":"boolean | null"},"scopes":{"oneOf":[{"description":"OAuth scopes requested from Fortnox during authentication. `companyinformation` is always included regardless of this value.","items":{"type":"string","uniqueKey":"system_custom.oneOf.8.scopes.oneOf.0.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"system_custom.oneOf.8.scopes.oneOf.0","typeLabel":"string[]"},{"description":"OAuth scopes requested from Fortnox during authentication. `companyinformation` is always included regardless of this value.","items":{"type":"string"},"type":"null","uniqueKey":"system_custom.oneOf.8.scopes.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.8.scopes","typeLabel":"string[] | null"},"slug":{"enum":["fortnox"],"nullable":false,"type":"string","uniqueKey":"system_custom.oneOf.8.slug","typeLabel":"enum\u003cstring>"}},"uniqueKey":"system_custom.oneOf.8","typeLabel":"FortnoxSystemCustom · object"},{"type":"object","title":"GenericSystemCustom","description":"Systems without system-specific settings in the API. Only `slug` is exposed.","required":["slug"],"properties":{"slug":{"enum":["aboard","catalyst_one","heartpace","kleer","medvind_wfm","nmbrs","payzlip","quinyx","scim","sftp_server","simployer_classic","spiris","tidsbanken","timeplan"],"nullable":false,"type":"string","isRequired":true,"uniqueKey":"system_custom.oneOf.9.slug","typeLabel":"enum\u003cstring>"}},"uniqueKey":"system_custom.oneOf.9","typeLabel":"GenericSystemCustom · object"},{"type":"object","title":"HaileyHrSystemCustom","description":"Custom configuration for Hailey HR system integrations.","properties":{"slug":{"enum":["hailey_hr"],"nullable":false,"type":"string","uniqueKey":"system_custom.oneOf.10.slug","typeLabel":"enum\u003cstring>"},"use_sandbox_api":{"oneOf":[{"default":true,"description":"Whether to use the Hailey HR sandbox API.","type":"boolean","uniqueKey":"system_custom.oneOf.10.use_sandbox_api.oneOf.0","typeLabel":"boolean"},{"default":true,"description":"Whether to use the Hailey HR sandbox API.","type":"null","uniqueKey":"system_custom.oneOf.10.use_sandbox_api.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.10.use_sandbox_api","typeLabel":"boolean | null"}},"uniqueKey":"system_custom.oneOf.10","typeLabel":"HaileyHrSystemCustom · object"},{"type":"object","title":"HibobSystemCustom","description":"Custom configuration for Hibob system integrations.","properties":{"enabled_reports":{"oneOf":[{"description":"A list of report ids that should be enabled for Hibob.","items":{"type":"string","uniqueKey":"system_custom.oneOf.11.enabled_reports.oneOf.0.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"system_custom.oneOf.11.enabled_reports.oneOf.0","typeLabel":"string[]"},{"description":"A list of report ids that should be enabled for Hibob.","items":{"type":"string"},"type":"null","uniqueKey":"system_custom.oneOf.11.enabled_reports.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.11.enabled_reports","typeLabel":"string[] | null"},"include_private_time_off_requests":{"oneOf":[{"default":false,"description":"Whether to include private time off requests.","type":"boolean","uniqueKey":"system_custom.oneOf.11.include_private_time_off_requests.oneOf.0","typeLabel":"boolean"},{"default":false,"description":"Whether to include private time off requests.","type":"null","uniqueKey":"system_custom.oneOf.11.include_private_time_off_requests.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.11.include_private_time_off_requests","typeLabel":"boolean | null"},"partner_token_suffix":{"oneOf":[{"description":"The partner token suffix for Hibob. Should be your company name, preferably unchanged once used once.","type":"string","uniqueKey":"system_custom.oneOf.11.partner_token_suffix.oneOf.0","typeLabel":"string"},{"description":"The partner token suffix for Hibob. Should be your company name, preferably unchanged once used once.","type":"null","uniqueKey":"system_custom.oneOf.11.partner_token_suffix.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.11.partner_token_suffix","typeLabel":"string | null"},"slug":{"enum":["hibob"],"nullable":false,"type":"string","uniqueKey":"system_custom.oneOf.11.slug","typeLabel":"enum\u003cstring>"}},"uniqueKey":"system_custom.oneOf.11","typeLabel":"HibobSystemCustom · object"},{"type":"object","title":"HogiaOpenHrSystemCustomSchema","description":"Custom configuration for Hogia Open HR File system integrations.","required":["slug"],"properties":{"slug":{"enum":["hogia_open_hr"],"nullable":false,"type":"string","isRequired":true,"uniqueKey":"system_custom.oneOf.12.slug","typeLabel":"enum\u003cstring>"}},"uniqueKey":"system_custom.oneOf.12","typeLabel":"HogiaOpenHrSystemCustomSchema · object"},{"type":"object","title":"HogiaPlusHrSystemCustomSchema","description":"Custom configuration for Hogia Plus HR File system integrations.","required":["slug"],"properties":{"slug":{"enum":["hogia_file"],"nullable":false,"type":"string","isRequired":true,"uniqueKey":"system_custom.oneOf.13.slug","typeLabel":"enum\u003cstring>"}},"uniqueKey":"system_custom.oneOf.13","typeLabel":"HogiaPlusHrSystemCustomSchema · object"},{"type":"object","title":"HumaHrSystemCustom","description":"Custom configuration for Huma HR File system integrations.","required":["slug"],"properties":{"slug":{"enum":["huma_hr"],"nullable":false,"type":"string","isRequired":true,"uniqueKey":"system_custom.oneOf.14.slug","typeLabel":"enum\u003cstring>"},"demo_api":{"oneOf":[{"description":"When true, API calls target Huma's demo environment (demo.openapi.humahr.com) instead of production. Off by default.","type":"boolean","uniqueKey":"system_custom.oneOf.14.demo_api.oneOf.0","typeLabel":"boolean"},{"description":"When true, API calls target Huma's demo environment (demo.openapi.humahr.com) instead of production. Off by default.","type":"null","uniqueKey":"system_custom.oneOf.14.demo_api.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.14.demo_api","typeLabel":"boolean | null"},"last_legacy_webhook_at":{"oneOf":[{"description":"Read-only: when the most recent webhook arrived on the legacy front endpoint. Null once a webhook arrives on the canonical perimeter endpoint.","format":"date-time","type":"string","uniqueKey":"system_custom.oneOf.14.last_legacy_webhook_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"description":"Read-only: when the most recent webhook arrived on the legacy front endpoint. Null once a webhook arrives on the canonical perimeter endpoint.","format":"date-time","type":"null","uniqueKey":"system_custom.oneOf.14.last_legacy_webhook_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.14.last_legacy_webhook_at","typeLabel":"string\u003cdate-time> | null"},"legacy_webhook_endpoint":{"oneOf":[{"description":"Read-only signal: true when webhooks are still arriving on the legacy front endpoint rather than the canonical perimeter endpoint. Cleared automatically once a webhook arrives on the canonical endpoint.","type":"boolean","uniqueKey":"system_custom.oneOf.14.legacy_webhook_endpoint.oneOf.0","typeLabel":"boolean"},{"description":"Read-only signal: true when webhooks are still arriving on the legacy front endpoint rather than the canonical perimeter endpoint. Cleared automatically once a webhook arrives on the canonical endpoint.","type":"null","uniqueKey":"system_custom.oneOf.14.legacy_webhook_endpoint.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.14.legacy_webhook_endpoint","typeLabel":"boolean | null"},"use_webhook_data":{"oneOf":[{"description":"Temporary migration toggle. When true, webhook payloads carry and drive data directly. When false and API credentials are configured, webhooks only trigger an API-backed sync.","type":"boolean","uniqueKey":"system_custom.oneOf.14.use_webhook_data.oneOf.0","typeLabel":"boolean"},{"description":"Temporary migration toggle. When true, webhook payloads carry and drive data directly. When false and API credentials are configured, webhooks only trigger an API-backed sync.","type":"null","uniqueKey":"system_custom.oneOf.14.use_webhook_data.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.14.use_webhook_data","typeLabel":"boolean | null"}},"uniqueKey":"system_custom.oneOf.14","typeLabel":"HumaHrSystemCustom · object"},{"type":"object","title":"JsonFileSystemCustom","description":"Custom configuration for JSON file system integrations.","properties":{"input_shape":{"description":"How records are read: top-level `array`, `wrapped` array (see records_path), or `jsonl`.","enum":["array","wrapped","jsonl"],"type":"string","uniqueKey":"system_custom.oneOf.15.input_shape","typeLabel":"enum\u003cstring>"},"link_path":{"oneOf":[{"description":"Optional JSONPath (per record) used as the entity link id.","type":"string","uniqueKey":"system_custom.oneOf.15.link_path.oneOf.0","typeLabel":"string"},{"description":"Optional JSONPath (per record) used as the entity link id.","type":"null","uniqueKey":"system_custom.oneOf.15.link_path.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.15.link_path","typeLabel":"string | null"},"output_records_key":{"oneOf":[{"description":"For output_shape `wrapped`: the key the records array is nested under.","type":"string","uniqueKey":"system_custom.oneOf.15.output_records_key.oneOf.0","typeLabel":"string"},{"description":"For output_shape `wrapped`: the key the records array is nested under.","type":"null","uniqueKey":"system_custom.oneOf.15.output_records_key.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.15.output_records_key","typeLabel":"string | null"},"output_shape":{"description":"Shape of the exported file.","enum":["array","wrapped","jsonl"],"type":"string","uniqueKey":"system_custom.oneOf.15.output_shape","typeLabel":"enum\u003cstring>"},"records_path":{"oneOf":[{"description":"For input_shape `wrapped`: JSONPath to the records array (e.g. `$.employees`).","type":"string","uniqueKey":"system_custom.oneOf.15.records_path.oneOf.0","typeLabel":"string"},{"description":"For input_shape `wrapped`: JSONPath to the records array (e.g. `$.employees`).","type":"null","uniqueKey":"system_custom.oneOf.15.records_path.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.15.records_path","typeLabel":"string | null"},"slug":{"enum":["json_file"],"nullable":false,"type":"string","uniqueKey":"system_custom.oneOf.15.slug","typeLabel":"enum\u003cstring>"},"sources":{"description":"The field sources exposed to the property mapper.","items":{"description":"A group of fields read from each record (scalar) or from a nested array (list).","properties":{"base_path":{"oneOf":[{"description":"List sources only: JSONPath (per record) selecting the array elements.","type":"string","uniqueKey":"system_custom.oneOf.15.sources.items.[INDEX].base_path.oneOf.0","typeLabel":"string"},{"description":"List sources only: JSONPath (per record) selecting the array elements.","type":"null","uniqueKey":"system_custom.oneOf.15.sources.items.[INDEX].base_path.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.15.sources.items.[INDEX].base_path","typeLabel":"string | null"},"end_date_path":{"oneOf":[{"description":"JSONPath whose value becomes the (exclusive) end-date on every DatedProperty.","type":"string","uniqueKey":"system_custom.oneOf.15.sources.items.[INDEX].end_date_path.oneOf.0","typeLabel":"string"},{"description":"JSONPath whose value becomes the (exclusive) end-date on every DatedProperty.","type":"null","uniqueKey":"system_custom.oneOf.15.sources.items.[INDEX].end_date_path.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.15.sources.items.[INDEX].end_date_path","typeLabel":"string | null"},"fields":{"description":"The fields exposed by this source.","items":{"description":"A single mappable field within a JSON file source.","properties":{"id":{"oneOf":[{"description":"Stable id for the field; generated server-side if omitted.","type":"string","uniqueKey":"system_custom.oneOf.15.sources.items.[INDEX].fields.items.[INDEX].id.oneOf.0","typeLabel":"string"},{"description":"Stable id for the field; generated server-side if omitted.","type":"null","uniqueKey":"system_custom.oneOf.15.sources.items.[INDEX].fields.items.[INDEX].id.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.15.sources.items.[INDEX].fields.items.[INDEX].id","typeLabel":"string | null"},"name":{"oneOf":[{"description":"Display name shown in the property mapper.","type":"string","uniqueKey":"system_custom.oneOf.15.sources.items.[INDEX].fields.items.[INDEX].name.oneOf.0","typeLabel":"string"},{"description":"Display name shown in the property mapper.","type":"null","uniqueKey":"system_custom.oneOf.15.sources.items.[INDEX].fields.items.[INDEX].name.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.15.sources.items.[INDEX].fields.items.[INDEX].name","typeLabel":"string | null"},"path":{"oneOf":[{"description":"JSONPath to the value, relative to the record (scalar source) or to each array element (list source).","type":"string","uniqueKey":"system_custom.oneOf.15.sources.items.[INDEX].fields.items.[INDEX].path.oneOf.0","typeLabel":"string"},{"description":"JSONPath to the value, relative to the record (scalar source) or to each array element (list source).","type":"null","uniqueKey":"system_custom.oneOf.15.sources.items.[INDEX].fields.items.[INDEX].path.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.15.sources.items.[INDEX].fields.items.[INDEX].path","typeLabel":"string | null"}},"title":"JsonFileCustomField","type":"object","uniqueKey":"system_custom.oneOf.15.sources.items.[INDEX].fields.items.[INDEX]","typeLabel":"JsonFileCustomField · object"},"type":"array","uniqueKey":"system_custom.oneOf.15.sources.items.[INDEX].fields","typeLabel":"JsonFileCustomField · object[]"},"id":{"oneOf":[{"description":"Stable id for the source; generated server-side if omitted.","type":"string","uniqueKey":"system_custom.oneOf.15.sources.items.[INDEX].id.oneOf.0","typeLabel":"string"},{"description":"Stable id for the source; generated server-side if omitted.","type":"null","uniqueKey":"system_custom.oneOf.15.sources.items.[INDEX].id.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.15.sources.items.[INDEX].id","typeLabel":"string | null"},"id_path":{"oneOf":[{"description":"JSONPath whose value becomes the `id` on every DatedProperty (groups parallel value histories).","type":"string","uniqueKey":"system_custom.oneOf.15.sources.items.[INDEX].id_path.oneOf.0","typeLabel":"string"},{"description":"JSONPath whose value becomes the `id` on every DatedProperty (groups parallel value histories).","type":"null","uniqueKey":"system_custom.oneOf.15.sources.items.[INDEX].id_path.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.15.sources.items.[INDEX].id_path","typeLabel":"string | null"},"ignore":{"oneOf":[{"description":"Skip this source when parsing.","type":"boolean","uniqueKey":"system_custom.oneOf.15.sources.items.[INDEX].ignore.oneOf.0","typeLabel":"boolean"},{"description":"Skip this source when parsing.","type":"null","uniqueKey":"system_custom.oneOf.15.sources.items.[INDEX].ignore.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.15.sources.items.[INDEX].ignore","typeLabel":"boolean | null"},"kind":{"description":"`scalar` reads fields off each record; `list` iterates a nested array.","enum":["scalar","list"],"type":"string","uniqueKey":"system_custom.oneOf.15.sources.items.[INDEX].kind","typeLabel":"enum\u003cstring>"},"name":{"oneOf":[{"description":"Display name of the source.","type":"string","uniqueKey":"system_custom.oneOf.15.sources.items.[INDEX].name.oneOf.0","typeLabel":"string"},{"description":"Display name of the source.","type":"null","uniqueKey":"system_custom.oneOf.15.sources.items.[INDEX].name.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.15.sources.items.[INDEX].name","typeLabel":"string | null"},"start_date_path":{"oneOf":[{"description":"JSONPath whose value becomes `valid_from` on every DatedProperty.","type":"string","uniqueKey":"system_custom.oneOf.15.sources.items.[INDEX].start_date_path.oneOf.0","typeLabel":"string"},{"description":"JSONPath whose value becomes `valid_from` on every DatedProperty.","type":"null","uniqueKey":"system_custom.oneOf.15.sources.items.[INDEX].start_date_path.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.15.sources.items.[INDEX].start_date_path","typeLabel":"string | null"}},"title":"JsonFileCustomSource","type":"object","uniqueKey":"system_custom.oneOf.15.sources.items.[INDEX]","typeLabel":"JsonFileCustomSource · object"},"type":"array","uniqueKey":"system_custom.oneOf.15.sources","typeLabel":"JsonFileCustomSource · object[]"}},"uniqueKey":"system_custom.oneOf.15","typeLabel":"JsonFileSystemCustom · object"},{"type":"object","title":"KleerSystemCustom","description":"Custom configuration for Kleer system integrations.","properties":{"new_customer_project_default_name":{"oneOf":[{"description":"Default name for new customer projects.","type":"string","uniqueKey":"system_custom.oneOf.16.new_customer_project_default_name.oneOf.0","typeLabel":"string"},{"description":"Default name for new customer projects.","type":"null","uniqueKey":"system_custom.oneOf.16.new_customer_project_default_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.16.new_customer_project_default_name","typeLabel":"string | null"},"slug":{"enum":["pe_accounting"],"nullable":false,"type":"string","uniqueKey":"system_custom.oneOf.16.slug","typeLabel":"enum\u003cstring>"},"sync_new_customer_project":{"oneOf":[{"default":false,"description":"Whether to sync new customer projects.","type":"boolean","uniqueKey":"system_custom.oneOf.16.sync_new_customer_project.oneOf.0","typeLabel":"boolean"},{"default":false,"description":"Whether to sync new customer projects.","type":"null","uniqueKey":"system_custom.oneOf.16.sync_new_customer_project.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.16.sync_new_customer_project","typeLabel":"boolean | null"},"use_test_api":{"oneOf":[{"default":true,"description":"Whether to use Kleer's test API.","type":"boolean","uniqueKey":"system_custom.oneOf.16.use_test_api.oneOf.0","typeLabel":"boolean"},{"default":true,"description":"Whether to use Kleer's test API.","type":"null","uniqueKey":"system_custom.oneOf.16.use_test_api.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.16.use_test_api","typeLabel":"boolean | null"},"variable_pay_date_range_end":{"oneOf":[{"description":"Day of month to end syncing variable pay.","type":"integer","uniqueKey":"system_custom.oneOf.16.variable_pay_date_range_end.oneOf.0","typeLabel":"integer"},{"description":"Day of month to end syncing variable pay.","type":"null","uniqueKey":"system_custom.oneOf.16.variable_pay_date_range_end.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.16.variable_pay_date_range_end","typeLabel":"integer | null"},"variable_pay_date_range_start":{"oneOf":[{"description":"Day of month to start syncing variable pay.","type":"integer","uniqueKey":"system_custom.oneOf.16.variable_pay_date_range_start.oneOf.0","typeLabel":"integer"},{"description":"Day of month to start syncing variable pay.","type":"null","uniqueKey":"system_custom.oneOf.16.variable_pay_date_range_start.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.16.variable_pay_date_range_start","typeLabel":"integer | null"}},"uniqueKey":"system_custom.oneOf.16","typeLabel":"KleerSystemCustom · object"},{"type":"object","title":"KontekSystemCustom","description":"Custom configuration for Kontek system integrations.","required":["slug"],"properties":{"slug":{"enum":["kontek"],"nullable":false,"type":"string","isRequired":true,"uniqueKey":"system_custom.oneOf.17.slug","typeLabel":"enum\u003cstring>"}},"uniqueKey":"system_custom.oneOf.17","typeLabel":"KontekSystemCustom · object"},{"type":"object","title":"ManualDownloadSystemCustom","description":"Custom configuration for manual_download file_area integrations.","properties":{"notification_emails":{"oneOf":[{"description":"Email addresses to notify when a new file becomes available for download. Dispatch is not yet enabled.","items":{"type":"string","uniqueKey":"system_custom.oneOf.18.notification_emails.oneOf.0.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"system_custom.oneOf.18.notification_emails.oneOf.0","typeLabel":"string[]"},{"description":"Email addresses to notify when a new file becomes available for download. Dispatch is not yet enabled.","items":{"type":"string"},"type":"null","uniqueKey":"system_custom.oneOf.18.notification_emails.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.18.notification_emails","typeLabel":"string[] | null"},"retention_days":{"oneOf":[{"default":30,"description":"Number of days generated files are retained in internal storage and available for download.","maximum":365,"minimum":1,"type":"integer","uniqueKey":"system_custom.oneOf.18.retention_days.oneOf.0","typeLabel":"integer"},{"default":30,"description":"Number of days generated files are retained in internal storage and available for download.","maximum":365,"minimum":1,"type":"null","uniqueKey":"system_custom.oneOf.18.retention_days.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.18.retention_days","typeLabel":"integer | null"},"slug":{"enum":["manual_download"],"nullable":false,"type":"string","uniqueKey":"system_custom.oneOf.18.slug","typeLabel":"enum\u003cstring>"}},"uniqueKey":"system_custom.oneOf.18","typeLabel":"ManualDownloadSystemCustom · object"},{"type":"object","title":"ManualUploadSystemCustom","description":"Custom configuration for manual_upload file_area integrations.","properties":{"max_upload_bytes":{"oneOf":[{"description":"Largest file, in bytes, that can be uploaded on this integration. Lowers the platform limit of 50 MiB; it cannot raise it.","minimum":1,"type":"integer","uniqueKey":"system_custom.oneOf.19.max_upload_bytes.oneOf.0","typeLabel":"integer"},{"description":"Largest file, in bytes, that can be uploaded on this integration. Lowers the platform limit of 50 MiB; it cannot raise it.","minimum":1,"type":"null","uniqueKey":"system_custom.oneOf.19.max_upload_bytes.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.19.max_upload_bytes","typeLabel":"integer | null"},"slug":{"enum":["manual_upload"],"nullable":false,"type":"string","uniqueKey":"system_custom.oneOf.19.slug","typeLabel":"enum\u003cstring>"}},"uniqueKey":"system_custom.oneOf.19","typeLabel":"ManualUploadSystemCustom · object"},{"type":"object","title":"PaxmlSystemCustom","description":"Custom configuration for Paxml system integrations.","properties":{"report_date_range_strategy":{"oneOf":[{"description":"The report date range parsing strategy to use for this integration.","enum":["auto","header","range","range_rounded"],"type":"string","uniqueKey":"system_custom.oneOf.20.report_date_range_strategy.oneOf.0","typeLabel":"enum\u003cstring>"},{"description":"The report date range parsing strategy to use for this integration.","enum":["auto","header","range","range_rounded"],"type":"null","uniqueKey":"system_custom.oneOf.20.report_date_range_strategy.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.20.report_date_range_strategy","typeLabel":"enum\u003cstring> | null"},"slug":{"enum":["paxml"],"nullable":false,"type":"string","uniqueKey":"system_custom.oneOf.20.slug","typeLabel":"enum\u003cstring>"}},"uniqueKey":"system_custom.oneOf.20","typeLabel":"PaxmlSystemCustom · object"},{"type":"object","title":"PeopleCoreSystemCustom","description":"Custom configuration for PeopleCore system integrations.","properties":{"scopes":{"oneOf":[{"description":"The permission scopes to use for this integration.","items":{"type":"string","uniqueKey":"system_custom.oneOf.21.scopes.oneOf.0.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"system_custom.oneOf.21.scopes.oneOf.0","typeLabel":"string[]"},{"description":"The permission scopes to use for this integration.","items":{"type":"string"},"type":"null","uniqueKey":"system_custom.oneOf.21.scopes.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.21.scopes","typeLabel":"string[] | null"},"slug":{"enum":["people_core"],"nullable":false,"type":"string","uniqueKey":"system_custom.oneOf.21.slug","typeLabel":"enum\u003cstring>"}},"uniqueKey":"system_custom.oneOf.21","typeLabel":"PeopleCoreSystemCustom · object"},{"type":"object","title":"PersonioSystemCustom","description":"Custom configuration for Personio system integrations.","properties":{"compensation_history_months":{"oneOf":[{"default":0,"description":"How many months of compensation history to retrieve, counting back from the current month. Personio caps a single compensation query at one calendar month, so each month is fetched separately.","type":"integer","uniqueKey":"system_custom.oneOf.22.compensation_history_months.oneOf.0","typeLabel":"integer"},{"default":0,"description":"How many months of compensation history to retrieve, counting back from the current month. Personio caps a single compensation query at one calendar month, so each month is fetched separately.","type":"null","uniqueKey":"system_custom.oneOf.22.compensation_history_months.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.22.compensation_history_months","typeLabel":"integer | null"},"partner_id":{"oneOf":[{"description":"The Personio partner ID to use for this integration.","type":"string","uniqueKey":"system_custom.oneOf.22.partner_id.oneOf.0","typeLabel":"string"},{"description":"The Personio partner ID to use for this integration.","type":"null","uniqueKey":"system_custom.oneOf.22.partner_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.22.partner_id","typeLabel":"string | null"},"slug":{"enum":["personio"],"nullable":false,"type":"string","uniqueKey":"system_custom.oneOf.22.slug","typeLabel":"enum\u003cstring>"}},"uniqueKey":"system_custom.oneOf.22","typeLabel":"PersonioSystemCustom · object"},{"type":"object","title":"S3SystemCustom","description":"Custom configuration for S3 system integrations.","properties":{"s3_host":{"oneOf":[{"description":"The S3 host to connect to.","type":"string","uniqueKey":"system_custom.oneOf.23.s3_host.oneOf.0","typeLabel":"string"},{"description":"The S3 host to connect to.","type":"null","uniqueKey":"system_custom.oneOf.23.s3_host.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.23.s3_host","typeLabel":"string | null"},"s3_region":{"oneOf":[{"default":"us-east-1","description":"The S3 region to connect to.","type":"string","uniqueKey":"system_custom.oneOf.23.s3_region.oneOf.0","typeLabel":"string"},{"default":"us-east-1","description":"The S3 region to connect to.","type":"null","uniqueKey":"system_custom.oneOf.23.s3_region.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.23.s3_region","typeLabel":"string | null"},"slug":{"enum":["s3"],"nullable":false,"type":"string","uniqueKey":"system_custom.oneOf.23.slug","typeLabel":"enum\u003cstring>"}},"uniqueKey":"system_custom.oneOf.23","typeLabel":"S3SystemCustom · object"},{"type":"object","title":"SftpSystemCustom","description":"Custom configuration for SFTP system integrations.","properties":{"auth_method":{"default":"password","description":"How Twine authenticates: `password` uses `api_client_secret`, `ssh_key` uses the private key in `api_key`. Changing it clears the other method's secret.","enum":["password","ssh_key"],"type":"string","uniqueKey":"system_custom.oneOf.24.auth_method","typeLabel":"enum\u003cstring>"},"sftp_host":{"oneOf":[{"description":"The SFTP host to connect to.","type":"string","uniqueKey":"system_custom.oneOf.24.sftp_host.oneOf.0","typeLabel":"string"},{"description":"The SFTP host to connect to.","type":"null","uniqueKey":"system_custom.oneOf.24.sftp_host.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.24.sftp_host","typeLabel":"string | null"},"sftp_port":{"oneOf":[{"default":22,"description":"The SFTP port to connect to.","type":"integer","uniqueKey":"system_custom.oneOf.24.sftp_port.oneOf.0","typeLabel":"integer"},{"default":22,"description":"The SFTP port to connect to.","type":"null","uniqueKey":"system_custom.oneOf.24.sftp_port.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.24.sftp_port","typeLabel":"integer | null"},"slug":{"enum":["sftp"],"nullable":false,"type":"string","uniqueKey":"system_custom.oneOf.24.slug","typeLabel":"enum\u003cstring>"}},"uniqueKey":"system_custom.oneOf.24","typeLabel":"SftpSystemCustom · object"},{"type":"object","title":"SimployerOneSystemCustom","description":"Custom configuration for SimployerOne system integrations.","properties":{"slug":{"enum":["alexis_hr"],"nullable":false,"type":"string","uniqueKey":"system_custom.oneOf.25.slug","typeLabel":"enum\u003cstring>"}},"uniqueKey":"system_custom.oneOf.25","typeLabel":"SimployerOneSystemCustom · object"},{"type":"object","title":"SkovikSystemCustom","description":"Custom configuration for Skovik system integrations.","required":["slug"],"properties":{"slug":{"enum":["skovik"],"nullable":false,"type":"string","isRequired":true,"uniqueKey":"system_custom.oneOf.26.slug","typeLabel":"enum\u003cstring>"}},"uniqueKey":"system_custom.oneOf.26","typeLabel":"SkovikSystemCustom · object"},{"type":"object","title":"TeamtailorSystemCustom","description":"Custom configuration for Teamtailor system integrations.","properties":{"filter_on_stage_types":{"oneOf":[{"description":"The authentication scheme to use for this Teamtailor integration.","enum":["basic","bearer"],"type":"string","uniqueKey":"system_custom.oneOf.27.filter_on_stage_types.oneOf.0","typeLabel":"enum\u003cstring>"},{"description":"The authentication scheme to use for this Teamtailor integration.","enum":["basic","bearer"],"type":"null","uniqueKey":"system_custom.oneOf.27.filter_on_stage_types.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.27.filter_on_stage_types","typeLabel":"enum\u003cstring> | null"},"slug":{"enum":["teamtailor"],"nullable":false,"type":"string","uniqueKey":"system_custom.oneOf.27.slug","typeLabel":"enum\u003cstring>"}},"uniqueKey":"system_custom.oneOf.27","typeLabel":"TeamtailorSystemCustom · object"},{"type":"object","title":"TwentyFourSevenSystemCustom","description":"Custom configuration for Twenty Four Seven system integrations.","required":["slug"],"properties":{"slug":{"enum":["twenty_four_seven"],"nullable":false,"type":"string","isRequired":true,"uniqueKey":"system_custom.oneOf.28.slug","typeLabel":"enum\u003cstring>"},"absence_replication":{"oneOf":[{"description":"Absence replication configuration for V2 pipeline.","properties":{"group_by_field":{"oneOf":[{"description":"Field used to group consecutive absences.","enum":["comment","source_external_id","source_external_ids","target_time_type_id"],"type":"string","uniqueKey":"system_custom.oneOf.28.absence_replication.oneOf.0.group_by_field.oneOf.0","typeLabel":"enum\u003cstring>"},{"description":"Field used to group consecutive absences.","enum":["comment","source_external_id","source_external_ids","target_time_type_id"],"type":"null","uniqueKey":"system_custom.oneOf.28.absence_replication.oneOf.0.group_by_field.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.28.absence_replication.oneOf.0.group_by_field","typeLabel":"enum\u003cstring> | null"},"group_consecutive":{"oneOf":[{"description":"Whether to merge consecutive daily TimeReports sharing the grouping field into a single Payday absence.","type":"boolean","uniqueKey":"system_custom.oneOf.28.absence_replication.oneOf.0.group_consecutive.oneOf.0","typeLabel":"boolean"},{"description":"Whether to merge consecutive daily TimeReports sharing the grouping field into a single Payday absence.","type":"null","uniqueKey":"system_custom.oneOf.28.absence_replication.oneOf.0.group_consecutive.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.28.absence_replication.oneOf.0.group_consecutive","typeLabel":"boolean | null"}},"title":"TwentyFourSevenAbsenceReplication","type":"object","uniqueKey":"system_custom.oneOf.28.absence_replication.oneOf.0","typeLabel":"TwentyFourSevenAbsenceReplication · object"},{"description":"Absence replication configuration for V2 pipeline.","properties":{"group_by_field":{"oneOf":[{"description":"Field used to group consecutive absences.","enum":["comment","source_external_id","source_external_ids","target_time_type_id"],"type":"string"},{"description":"Field used to group consecutive absences.","enum":["comment","source_external_id","source_external_ids","target_time_type_id"],"type":"null"}]},"group_consecutive":{"oneOf":[{"description":"Whether to merge consecutive daily TimeReports sharing the grouping field into a single Payday absence.","type":"boolean"},{"description":"Whether to merge consecutive daily TimeReports sharing the grouping field into a single Payday absence.","type":"null"}]}},"title":"TwentyFourSevenAbsenceReplication","type":"null","uniqueKey":"system_custom.oneOf.28.absence_replication.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.28.absence_replication","typeLabel":"TwentyFourSevenAbsenceReplication · object | null"},"country_code":{"oneOf":[{"description":"Auto-detected from Payday's organization endpoint on credential save. Drives country-specific V2 payload handling.","enum":["SE","NO"],"type":"string","uniqueKey":"system_custom.oneOf.28.country_code.oneOf.0","typeLabel":"enum\u003cstring>"},{"description":"Auto-detected from Payday's organization endpoint on credential save. Drives country-specific V2 payload handling.","enum":["SE","NO"],"type":"null","uniqueKey":"system_custom.oneOf.28.country_code.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.28.country_code","typeLabel":"enum\u003cstring> | null"},"defer_employment_end_date":{"oneOf":[{"deprecated":true,"description":"Deprecated, use employment_end_date_policy. Read as `defer` when no policy is set.","type":"boolean","uniqueKey":"system_custom.oneOf.28.defer_employment_end_date.oneOf.0","typeLabel":"boolean"},{"deprecated":true,"description":"Deprecated, use employment_end_date_policy. Read as `defer` when no policy is set.","type":"null","uniqueKey":"system_custom.oneOf.28.defer_employment_end_date.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.28.defer_employment_end_date","typeLabel":"boolean | null"},"designate_primary_employment":{"oneOf":[{"description":"Whether Twine designates the primary employment for each employee.","type":"boolean","uniqueKey":"system_custom.oneOf.28.designate_primary_employment.oneOf.0","typeLabel":"boolean"},{"description":"Whether Twine designates the primary employment for each employee.","type":"null","uniqueKey":"system_custom.oneOf.28.designate_primary_employment.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.28.designate_primary_employment","typeLabel":"boolean | null"},"employment_end_date_offset":{"oneOf":[{"description":"How far ahead of today an employment end date may fall and still be written, when end date deferral is enabled.","properties":{"day":{"oneOf":[{"default":0,"type":"integer","uniqueKey":"system_custom.oneOf.28.employment_end_date_offset.oneOf.0.day.oneOf.0","typeLabel":"integer"},{"default":0,"type":"null","uniqueKey":"system_custom.oneOf.28.employment_end_date_offset.oneOf.0.day.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.28.employment_end_date_offset.oneOf.0.day","typeLabel":"integer | null"},"month":{"oneOf":[{"default":0,"type":"integer","uniqueKey":"system_custom.oneOf.28.employment_end_date_offset.oneOf.0.month.oneOf.0","typeLabel":"integer"},{"default":0,"type":"null","uniqueKey":"system_custom.oneOf.28.employment_end_date_offset.oneOf.0.month.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.28.employment_end_date_offset.oneOf.0.month","typeLabel":"integer | null"},"week":{"oneOf":[{"default":0,"type":"integer","uniqueKey":"system_custom.oneOf.28.employment_end_date_offset.oneOf.0.week.oneOf.0","typeLabel":"integer"},{"default":0,"type":"null","uniqueKey":"system_custom.oneOf.28.employment_end_date_offset.oneOf.0.week.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.28.employment_end_date_offset.oneOf.0.week","typeLabel":"integer | null"},"year":{"oneOf":[{"default":0,"type":"integer","uniqueKey":"system_custom.oneOf.28.employment_end_date_offset.oneOf.0.year.oneOf.0","typeLabel":"integer"},{"default":0,"type":"null","uniqueKey":"system_custom.oneOf.28.employment_end_date_offset.oneOf.0.year.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.28.employment_end_date_offset.oneOf.0.year","typeLabel":"integer | null"}},"title":"TwentyFourSevenEmploymentEndDateOffset","type":"object","uniqueKey":"system_custom.oneOf.28.employment_end_date_offset.oneOf.0","typeLabel":"TwentyFourSevenEmploymentEndDateOffset · object"},{"description":"How far ahead of today an employment end date may fall and still be written, when end date deferral is enabled.","properties":{"day":{"oneOf":[{"default":0,"type":"integer"},{"default":0,"type":"null"}]},"month":{"oneOf":[{"default":0,"type":"integer"},{"default":0,"type":"null"}]},"week":{"oneOf":[{"default":0,"type":"integer"},{"default":0,"type":"null"}]},"year":{"oneOf":[{"default":0,"type":"integer"},{"default":0,"type":"null"}]}},"title":"TwentyFourSevenEmploymentEndDateOffset","type":"null","uniqueKey":"system_custom.oneOf.28.employment_end_date_offset.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.28.employment_end_date_offset","typeLabel":"TwentyFourSevenEmploymentEndDateOffset · object | null"},"employment_end_date_policy":{"oneOf":[{"description":"Who sets an employment's end date and reason in Payday. `write` (the default) sends them as soon as Twine has them; `defer` waits until the end date falls within employment_end_date_offset of today; `never` means Twine writes none and the customer sets them by hand.","enum":["write","defer","never"],"type":"string","uniqueKey":"system_custom.oneOf.28.employment_end_date_policy.oneOf.0","typeLabel":"enum\u003cstring>"},{"description":"Who sets an employment's end date and reason in Payday. `write` (the default) sends them as soon as Twine has them; `defer` waits until the end date falls within employment_end_date_offset of today; `never` means Twine writes none and the customer sets them by hand.","enum":["write","defer","never"],"type":"null","uniqueKey":"system_custom.oneOf.28.employment_end_date_policy.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.28.employment_end_date_policy","typeLabel":"enum\u003cstring> | null"},"merge_contiguous_employments":{"oneOf":[{"description":"Whether source employment periods that run contiguously and agree on every mapped field are sent to Payday as a single employment.","type":"boolean","uniqueKey":"system_custom.oneOf.28.merge_contiguous_employments.oneOf.0","typeLabel":"boolean"},{"description":"Whether source employment periods that run contiguously and agree on every mapped field are sent to Payday as a single employment.","type":"null","uniqueKey":"system_custom.oneOf.28.merge_contiguous_employments.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.28.merge_contiguous_employments","typeLabel":"boolean | null"},"primary_employment_date_offset":{"oneOf":[{"description":"Date offset applied when designating primary employment.","properties":{"day":{"oneOf":[{"default":0,"type":"integer","uniqueKey":"system_custom.oneOf.28.primary_employment_date_offset.oneOf.0.day.oneOf.0","typeLabel":"integer"},{"default":0,"type":"null","uniqueKey":"system_custom.oneOf.28.primary_employment_date_offset.oneOf.0.day.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.28.primary_employment_date_offset.oneOf.0.day","typeLabel":"integer | null"},"month":{"oneOf":[{"default":0,"type":"integer","uniqueKey":"system_custom.oneOf.28.primary_employment_date_offset.oneOf.0.month.oneOf.0","typeLabel":"integer"},{"default":0,"type":"null","uniqueKey":"system_custom.oneOf.28.primary_employment_date_offset.oneOf.0.month.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.28.primary_employment_date_offset.oneOf.0.month","typeLabel":"integer | null"},"week":{"oneOf":[{"default":0,"type":"integer","uniqueKey":"system_custom.oneOf.28.primary_employment_date_offset.oneOf.0.week.oneOf.0","typeLabel":"integer"},{"default":0,"type":"null","uniqueKey":"system_custom.oneOf.28.primary_employment_date_offset.oneOf.0.week.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.28.primary_employment_date_offset.oneOf.0.week","typeLabel":"integer | null"},"year":{"oneOf":[{"default":0,"type":"integer","uniqueKey":"system_custom.oneOf.28.primary_employment_date_offset.oneOf.0.year.oneOf.0","typeLabel":"integer"},{"default":0,"type":"null","uniqueKey":"system_custom.oneOf.28.primary_employment_date_offset.oneOf.0.year.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.28.primary_employment_date_offset.oneOf.0.year","typeLabel":"integer | null"}},"title":"TwentyFourSevenPrimaryEmploymentDateOffset","type":"object","uniqueKey":"system_custom.oneOf.28.primary_employment_date_offset.oneOf.0","typeLabel":"TwentyFourSevenPrimaryEmploymentDateOffset · object"},{"description":"Date offset applied when designating primary employment.","properties":{"day":{"oneOf":[{"default":0,"type":"integer"},{"default":0,"type":"null"}]},"month":{"oneOf":[{"default":0,"type":"integer"},{"default":0,"type":"null"}]},"week":{"oneOf":[{"default":0,"type":"integer"},{"default":0,"type":"null"}]},"year":{"oneOf":[{"default":0,"type":"integer"},{"default":0,"type":"null"}]}},"title":"TwentyFourSevenPrimaryEmploymentDateOffset","type":"null","uniqueKey":"system_custom.oneOf.28.primary_employment_date_offset.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.28.primary_employment_date_offset","typeLabel":"TwentyFourSevenPrimaryEmploymentDateOffset · object | null"},"use_v2_replication_pipeline":{"oneOf":[{"description":"Opt-in to the V2 replication pipeline. Requires country_code to be set.","type":"boolean","uniqueKey":"system_custom.oneOf.28.use_v2_replication_pipeline.oneOf.0","typeLabel":"boolean"},{"description":"Opt-in to the V2 replication pipeline. Requires country_code to be set.","type":"null","uniqueKey":"system_custom.oneOf.28.use_v2_replication_pipeline.oneOf.1","typeLabel":"null"}],"uniqueKey":"system_custom.oneOf.28.use_v2_replication_pipeline","typeLabel":"boolean | null"}},"uniqueKey":"system_custom.oneOf.28","typeLabel":"TwentyFourSevenSystemCustom · object"},{"type":"object","title":"TimeRecorderSystemCustom","description":"Custom configuration for Time Recorder system integrations.","required":["slug"],"properties":{"slug":{"enum":["time_recorder"],"nullable":false,"type":"string","isRequired":true,"uniqueKey":"system_custom.oneOf.29.slug","typeLabel":"enum\u003cstring>"}},"uniqueKey":"system_custom.oneOf.29","typeLabel":"TimeRecorderSystemCustom · object"},{"type":"object","title":"TwineSystemCustom","description":"Custom configuration for Twine system integrations.","required":["slug"],"properties":{"slug":{"enum":["twine"],"nullable":false,"type":"string","isRequired":true,"uniqueKey":"system_custom.oneOf.30.slug","typeLabel":"enum\u003cstring>"}},"uniqueKey":"system_custom.oneOf.30","typeLabel":"TwineSystemCustom · object"}],"uniqueKey":"system_custom","typeLabel":"AgdaFileSystemCustom · object | AgdaPsSystemCustom · object | BambooHrSystemCustom · object | CaspecoSystemCustom · object | SpreadsheetSystemCustom · object | EntraIdSystemCustom · object | EvityHrSystemCustom · object | FlexHrmSystemCustom · object | FortnoxSystemCustom · object | GenericSystemCustom · object | HaileyHrSystemCustom · object | HibobSystemCustom · object | HogiaOpenHrSystemCustomSchema · object | HogiaPlusHrSystemCustomSchema · object | HumaHrSystemCustom · object | JsonFileSystemCustom · object | KleerSystemCustom · object | KontekSystemCustom · object | ManualDownloadSystemCustom · object | ManualUploadSystemCustom · object | PaxmlSystemCustom · object | PeopleCoreSystemCustom · object | PersonioSystemCustom · object | S3SystemCustom · object | SftpSystemCustom · object | SimployerOneSystemCustom · object | SkovikSystemCustom · object | TeamtailorSystemCustom · object | TwentyFourSevenSystemCustom · object | TimeRecorderSystemCustom · object | TwineSystemCustom · object"}},"title":"SystemIntegrationPatchRequest","type":"object","uniqueKey":"","typeLabel":"SystemIntegrationPatchRequest · object"},"examples":{"Example":{"title":"Example","value":{"auth":"\u003cunknown>","description":"\u003cstring>","system_custom":{"slug":"agda_file","change_lookback_enabled":true,"change_lookback_value":2,"company_no":"\u003cstring>","file_name_prefix":"\u003cstring>","salary_paycodes":["\u003cstring>"]}}}},"exampleType":"generated"}},"description":"System Integration Patch Request","required":false,"exampleType":"generated"},"responses":{"a68b26ba-157d-44ad-a0ba-742a8a3fb6ee":{"content":{"application/json":{"schema":{"description":"A response object with a single system integration","properties":{"data":{"description":"An object representing a system integration in Twine.","properties":{"id":{"description":"The system integration's UUID","example":"018eae56-8f9d-7ca0-bea3-17f3db6cf75b","format":"uuid","nullable":false,"type":"string","isRequired":true,"uniqueKey":"data.id","typeLabel":"string\u003cuuid>"},"org_id":{"description":"The parent organization's UUID","example":"018eae56-8f9d-7ca0-bea3-17f3db6cf75b","format":"uuid","nullable":false,"type":"string","isRequired":true,"uniqueKey":"data.org_id","typeLabel":"string\u003cuuid>"},"system_id":{"description":"The parent system's UUID","example":"018eae56-8f9d-7ca0-bea3-17f3db6cf75b","format":"uuid","nullable":false,"type":"string","isRequired":true,"uniqueKey":"data.system_id","typeLabel":"string\u003cuuid>"},"api_client_id":{"oneOf":[{"description":"For integrations using API client id/secret combinations, this is the API client ID.","example":"018eae56-8f9d-7ca0-bea3-17f3db6cf75b","type":"string","uniqueKey":"data.api_client_id.oneOf.0","typeLabel":"string"},{"description":"For integrations using API client id/secret combinations, this is the API client ID.","example":"018eae56-8f9d-7ca0-bea3-17f3db6cf75b","type":"null","uniqueKey":"data.api_client_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.api_client_id","typeLabel":"string | null"},"api_endpoint_url":{"oneOf":[{"description":"The API endpoint URL for the integration. Not required for all integration types. Must be an https URL on a public host, and for systems with a fixed vendor domain the host must be on that domain. Changing it clears the stored secrets (`api_key`, `api_client_secret`) unless they are sent in the same request, whether new or unchanged; sending the current URL again clears nothing.","example":"https://your-company.api.example.com/v1","type":"string","uniqueKey":"data.api_endpoint_url.oneOf.0","typeLabel":"string"},{"description":"The API endpoint URL for the integration. Not required for all integration types. Must be an https URL on a public host, and for systems with a fixed vendor domain the host must be on that domain. Changing it clears the stored secrets (`api_key`, `api_client_secret`) unless they are sent in the same request, whether new or unchanged; sending the current URL again clears nothing.","example":"https://your-company.api.example.com/v1","type":"null","uniqueKey":"data.api_endpoint_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.api_endpoint_url","typeLabel":"string | null"},"domain_mappings":{"oneOf":[{"description":"List of incoming domain mappings associated with this system integration. Not returned when updating.","items":{"description":"An object representing a domain mapping.","properties":{"enabled":{"description":"Whether the domain mapping is enabled","example":true,"nullable":false,"type":"boolean","isRequired":true,"uniqueKey":"data.domain_mappings.oneOf.0.items.[INDEX].enabled","typeLabel":"boolean"},"from_domain":{"description":"The source domain for the mapping.","enum":["finance","employee_competence","competence","expense_transaction","salary_transaction","file_transfer","project","org_unit","customer","schedule","time_report","employee"],"example":"employee","title":"Domain","type":"string","isRequired":true,"uniqueKey":"data.domain_mappings.oneOf.0.items.[INDEX].from_domain","typeLabel":"enum\u003cstring>"},"id":{"description":"The sync trigger's UUID","example":"018eae56-8f9d-7ca0-bea3-17f3db6cf75b","format":"uuid","nullable":false,"type":"string","isRequired":true,"uniqueKey":"data.domain_mappings.oneOf.0.items.[INDEX].id","typeLabel":"string\u003cuuid>"},"org_id":{"description":"The parent organization's UUID","example":"018eae56-8f9d-7ca0-bea3-17f3db6cf75b","format":"uuid","nullable":false,"type":"string","isRequired":true,"uniqueKey":"data.domain_mappings.oneOf.0.items.[INDEX].org_id","typeLabel":"string\u003cuuid>"},"source_system_integration_id":{"description":"The source system integration's UUID. ","example":"018eae56-8f9d-7ca0-bea3-17f3db6cf75b","format":"uuid","nullable":false,"type":"string","isRequired":true,"uniqueKey":"data.domain_mappings.oneOf.0.items.[INDEX].source_system_integration_id","typeLabel":"string\u003cuuid>"},"target_system_integration_id":{"description":"The source system integration's UUID. ","example":"018eae56-8f9d-7ca0-bea3-17f3db6cf75b","format":"uuid","nullable":false,"type":"string","isRequired":true,"uniqueKey":"data.domain_mappings.oneOf.0.items.[INDEX].target_system_integration_id","typeLabel":"string\u003cuuid>"},"to_domain":{"description":"The target domain for the mapping.","enum":["finance","employee_competence","competence","expense_transaction","salary_transaction","file_transfer","project","org_unit","customer","schedule","time_report","employee"],"example":"employee","title":"Domain","type":"string","isRequired":true,"uniqueKey":"data.domain_mappings.oneOf.0.items.[INDEX].to_domain","typeLabel":"enum\u003cstring>"},"all_conditions_must_apply":{"description":"Whether every condition must match (AND) rather than any one of them (OR). Has no effect when `conditions` is empty.","example":false,"nullable":false,"type":"boolean","uniqueKey":"data.domain_mappings.oneOf.0.items.[INDEX].all_conditions_must_apply","typeLabel":"boolean"},"conditions":{"oneOf":[{"description":"List of conditions associated with this domain mapping.","items":{"description":"A condition for filtering data.","properties":{"apply_on_actions":{"description":"List of actions the condition applies to","items":{"enum":["create","update"],"type":"string","uniqueKey":"data.domain_mappings.oneOf.0.items.[INDEX].conditions.oneOf.0.items.[INDEX].apply_on_actions.items.[INDEX]","typeLabel":"enum\u003cstring>"},"nullable":false,"type":"array","isRequired":true,"uniqueKey":"data.domain_mappings.oneOf.0.items.[INDEX].conditions.oneOf.0.items.[INDEX].apply_on_actions","typeLabel":"enum\u003cstring>[]"},"condition":{"description":"V2 Graph Engine condition","type":"object","isRequired":true,"uniqueKey":"data.domain_mappings.oneOf.0.items.[INDEX].conditions.oneOf.0.items.[INDEX].condition","typeLabel":"object"},"domain":{"description":"The data domain","enum":["finance","employee_competence","competence","expense_transaction","salary_transaction","file_transfer","project","org_unit","customer","schedule","time_report","employee"],"example":"employee","title":"Domain","type":"string","isRequired":true,"uniqueKey":"data.domain_mappings.oneOf.0.items.[INDEX].conditions.oneOf.0.items.[INDEX].domain","typeLabel":"enum\u003cstring>"},"enabled":{"default":true,"description":"Whether the condition is enabled","type":"boolean","isRequired":true,"uniqueKey":"data.domain_mappings.oneOf.0.items.[INDEX].conditions.oneOf.0.items.[INDEX].enabled","typeLabel":"boolean"},"id":{"description":"The condition's UUID.","example":"018eae56-8f9d-7ca0-bea3-17f3db6cf75b","format":"uuid","nullable":false,"type":"string","isRequired":true,"uniqueKey":"data.domain_mappings.oneOf.0.items.[INDEX].conditions.oneOf.0.items.[INDEX].id","typeLabel":"string\u003cuuid>"},"description":{"oneOf":[{"description":"A brief description of the condition","type":"string","uniqueKey":"data.domain_mappings.oneOf.0.items.[INDEX].conditions.oneOf.0.items.[INDEX].description.oneOf.0","typeLabel":"string"},{"description":"A brief description of the condition","type":"null","uniqueKey":"data.domain_mappings.oneOf.0.items.[INDEX].conditions.oneOf.0.items.[INDEX].description.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.domain_mappings.oneOf.0.items.[INDEX].conditions.oneOf.0.items.[INDEX].description","typeLabel":"string | null"}},"required":["id","condition","domain","apply_on_actions","enabled"],"title":"Condition","type":"object","uniqueKey":"data.domain_mappings.oneOf.0.items.[INDEX].conditions.oneOf.0.items.[INDEX]","typeLabel":"Condition · object"},"type":"array","uniqueKey":"data.domain_mappings.oneOf.0.items.[INDEX].conditions.oneOf.0","typeLabel":"Condition · object[]"},{"description":"List of conditions associated with this domain mapping.","items":{"description":"A condition for filtering data.","properties":{"apply_on_actions":{"description":"List of actions the condition applies to","items":{"enum":["create","update"],"type":"string"},"nullable":false,"type":"array"},"condition":{"description":"V2 Graph Engine condition","type":"object"},"description":{"oneOf":[{"description":"A brief description of the condition","type":"string"},{"description":"A brief description of the condition","type":"null"}]},"domain":{"description":"The data domain","enum":["finance","employee_competence","competence","expense_transaction","salary_transaction","file_transfer","project","org_unit","customer","schedule","time_report","employee"],"example":"employee","title":"Domain","type":"string"},"enabled":{"default":true,"description":"Whether the condition is enabled","type":"boolean"},"id":{"description":"The condition's UUID.","example":"018eae56-8f9d-7ca0-bea3-17f3db6cf75b","format":"uuid","nullable":false,"type":"string"}},"required":["id","condition","domain","apply_on_actions","enabled"],"title":"Condition","type":"object"},"type":"null","uniqueKey":"data.domain_mappings.oneOf.0.items.[INDEX].conditions.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.domain_mappings.oneOf.0.items.[INDEX].conditions","typeLabel":"Condition · object[] | null"},"description":{"oneOf":[{"description":"Free-text description of the mapping.","example":"Employees from the HR system into payroll","type":"string","uniqueKey":"data.domain_mappings.oneOf.0.items.[INDEX].description.oneOf.0","typeLabel":"string"},{"description":"Free-text description of the mapping.","example":"Employees from the HR system into payroll","type":"null","uniqueKey":"data.domain_mappings.oneOf.0.items.[INDEX].description.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.domain_mappings.oneOf.0.items.[INDEX].description","typeLabel":"string | null"},"inserted_at":{"description":"Timestamp of when the domain mapping was created","example":"2021-06-01T12:00:00Z","format":"date-time","type":"string","uniqueKey":"data.domain_mappings.oneOf.0.items.[INDEX].inserted_at","typeLabel":"string\u003cdate-time>"},"mode":{"description":"`default` is a full read/write mapping. `update_existing_only` syncs updates onto existing Twine entities only — unmapped incoming entities are dropped and replication is refused.","enum":["update_existing_only","default"],"example":"default","nullable":false,"type":"string","uniqueKey":"data.domain_mappings.oneOf.0.items.[INDEX].mode","typeLabel":"enum\u003cstring>"},"sync_triggers":{"oneOf":[{"description":"List of sync triggers associated with this domain mapping.","items":{"description":"An object representing a sync trigger in a domain mapping.","properties":{"domain_mapping_id":{"description":"The parent domain mapping's UUID","example":"018eae56-8f9d-7ca0-bea3-17f3db6cf75b","format":"uuid","nullable":false,"type":"string","isRequired":true,"uniqueKey":"data.domain_mappings.oneOf.0.items.[INDEX].sync_triggers.oneOf.0.items.[INDEX].domain_mapping_id","typeLabel":"string\u003cuuid>"},"id":{"description":"The sync trigger's UUID","example":"018eae56-8f9d-7ca0-bea3-17f3db6cf75b","format":"uuid","nullable":false,"type":"string","isRequired":true,"uniqueKey":"data.domain_mappings.oneOf.0.items.[INDEX].sync_triggers.oneOf.0.items.[INDEX].id","typeLabel":"string\u003cuuid>"},"org_id":{"description":"The parent organization's UUID","example":"018eae56-8f9d-7ca0-bea3-17f3db6cf75b","format":"uuid","nullable":false,"type":"string","isRequired":true,"uniqueKey":"data.domain_mappings.oneOf.0.items.[INDEX].sync_triggers.oneOf.0.items.[INDEX].org_id","typeLabel":"string\u003cuuid>"},"system_integration_id":{"description":"The parent system integration's UUID","example":"018eae56-8f9d-7ca0-bea3-17f3db6cf75b","format":"uuid","nullable":false,"type":"string","isRequired":true,"uniqueKey":"data.domain_mappings.oneOf.0.items.[INDEX].sync_triggers.oneOf.0.items.[INDEX].system_integration_id","typeLabel":"string\u003cuuid>"},"cron_expression":{"oneOf":[{"description":"The cron expression for the scheduled trigger. If null, the trigger can only be run manually","example":"0 0 * * *","type":"string","uniqueKey":"data.domain_mappings.oneOf.0.items.[INDEX].sync_triggers.oneOf.0.items.[INDEX].cron_expression.oneOf.0","typeLabel":"string"},{"description":"The cron expression for the scheduled trigger. If null, the trigger can only be run manually","example":"0 0 * * *","type":"null","uniqueKey":"data.domain_mappings.oneOf.0.items.[INDEX].sync_triggers.oneOf.0.items.[INDEX].cron_expression.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.domain_mappings.oneOf.0.items.[INDEX].sync_triggers.oneOf.0.items.[INDEX].cron_expression","typeLabel":"string | null"},"domain_configuration":{"oneOf":[{"type":"object","title":"SyncTriggerTimeReportSettings","description":"The domain-specific configuration for the sync trigger.","properties":{"domain":{"default":"time_report","description":"Must always be `time_report`","type":"string","uniqueKey":"data.domain_mappings.oneOf.0.items.[INDEX].sync_triggers.oneOf.0.items.[INDEX].domain_configuration.oneOf.0.domain","typeLabel":"string"},"from_date":{"oneOf":[{"description":"Explicit from date for the time report sync","format":"date","type":"string","uniqueKey":"data.domain_mappings.oneOf.0.items.[INDEX].sync_triggers.oneOf.0.items.[INDEX].domain_configuration.oneOf.0.from_date.oneOf.0","typeLabel":"string\u003cdate>"},{"description":"Explicit from date for the time report sync","format":"date","type":"null","uniqueKey":"data.domain_mappings.oneOf.0.items.[INDEX].sync_triggers.oneOf.0.items.[INDEX].domain_configuration.oneOf.0.from_date.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.domain_mappings.oneOf.0.items.[INDEX].sync_triggers.oneOf.0.items.[INDEX].domain_configuration.oneOf.0.from_date","typeLabel":"string\u003cdate> | null"},"from_date_engine":{"oneOf":[{"description":"Dynamic configuration for the from date. Should not be specified if from_date is set, and vice versa.","type":"object","uniqueKey":"data.domain_mappings.oneOf.0.items.[INDEX].sync_triggers.oneOf.0.items.[INDEX].domain_configuration.oneOf.0.from_date_engine.oneOf.0","typeLabel":"object"},{"description":"Dynamic configuration for the from date. Should not be specified if from_date is set, and vice versa.","type":"null","uniqueKey":"data.domain_mappings.oneOf.0.items.[INDEX].sync_triggers.oneOf.0.items.[INDEX].domain_configuration.oneOf.0.from_date_engine.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.domain_mappings.oneOf.0.items.[INDEX].sync_triggers.oneOf.0.items.[INDEX].domain_configuration.oneOf.0.from_date_engine","typeLabel":"object | null"},"to_date":{"oneOf":[{"description":"Explicit to date for the time report sync","format":"date","type":"string","uniqueKey":"data.domain_mappings.oneOf.0.items.[INDEX].sync_triggers.oneOf.0.items.[INDEX].domain_configuration.oneOf.0.to_date.oneOf.0","typeLabel":"string\u003cdate>"},{"description":"Explicit to date for the time report sync","format":"date","type":"null","uniqueKey":"data.domain_mappings.oneOf.0.items.[INDEX].sync_triggers.oneOf.0.items.[INDEX].domain_configuration.oneOf.0.to_date.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.domain_mappings.oneOf.0.items.[INDEX].sync_triggers.oneOf.0.items.[INDEX].domain_configuration.oneOf.0.to_date","typeLabel":"string\u003cdate> | null"},"to_date_engine":{"oneOf":[{"description":"Dynamic configuration for the to date. Should not be specified if to_date is set, and vice versa.","type":"object","uniqueKey":"data.domain_mappings.oneOf.0.items.[INDEX].sync_triggers.oneOf.0.items.[INDEX].domain_configuration.oneOf.0.to_date_engine.oneOf.0","typeLabel":"object"},{"description":"Dynamic configuration for the to date. Should not be specified if to_date is set, and vice versa.","type":"null","uniqueKey":"data.domain_mappings.oneOf.0.items.[INDEX].sync_triggers.oneOf.0.items.[INDEX].domain_configuration.oneOf.0.to_date_engine.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.domain_mappings.oneOf.0.items.[INDEX].sync_triggers.oneOf.0.items.[INDEX].domain_configuration.oneOf.0.to_date_engine","typeLabel":"object | null"}},"uniqueKey":"data.domain_mappings.oneOf.0.items.[INDEX].sync_triggers.oneOf.0.items.[INDEX].domain_configuration.oneOf.0","typeLabel":"SyncTriggerTimeReportSettings · object"},{"type":"null","uniqueKey":"data.domain_mappings.oneOf.0.items.[INDEX].sync_triggers.oneOf.0.items.[INDEX].domain_configuration.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.domain_mappings.oneOf.0.items.[INDEX].sync_triggers.oneOf.0.items.[INDEX].domain_configuration","typeLabel":"SyncTriggerTimeReportSettings · object | null"},"last_sync_ended_at":{"oneOf":[{"description":"The last time the sync was completed. It is possible for this timestamp to be earlier than `last_sync_started_at`, which would indicate a failed sync","example":"2023-01-01T00:00:00Z","format":"date-time","type":"string","uniqueKey":"data.domain_mappings.oneOf.0.items.[INDEX].sync_triggers.oneOf.0.items.[INDEX].last_sync_ended_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"description":"The last time the sync was completed. It is possible for this timestamp to be earlier than `last_sync_started_at`, which would indicate a failed sync","example":"2023-01-01T00:00:00Z","format":"date-time","type":"null","uniqueKey":"data.domain_mappings.oneOf.0.items.[INDEX].sync_triggers.oneOf.0.items.[INDEX].last_sync_ended_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.domain_mappings.oneOf.0.items.[INDEX].sync_triggers.oneOf.0.items.[INDEX].last_sync_ended_at","typeLabel":"string\u003cdate-time> | null"},"last_sync_started_at":{"oneOf":[{"description":"The last time the sync was started.","example":"2023-01-01T00:00:00Z","format":"date-time","type":"string","uniqueKey":"data.domain_mappings.oneOf.0.items.[INDEX].sync_triggers.oneOf.0.items.[INDEX].last_sync_started_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"description":"The last time the sync was started.","example":"2023-01-01T00:00:00Z","format":"date-time","type":"null","uniqueKey":"data.domain_mappings.oneOf.0.items.[INDEX].sync_triggers.oneOf.0.items.[INDEX].last_sync_started_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.domain_mappings.oneOf.0.items.[INDEX].sync_triggers.oneOf.0.items.[INDEX].last_sync_started_at","typeLabel":"string\u003cdate-time> | null"},"next_sync_at":{"oneOf":[{"description":"The next scheduled sync time. This is not an exact point in time as the sync will most likely be started shortly afterwards.","example":"2023-01-01T00:00:00Z","format":"date-time","type":"string","uniqueKey":"data.domain_mappings.oneOf.0.items.[INDEX].sync_triggers.oneOf.0.items.[INDEX].next_sync_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"description":"The next scheduled sync time. This is not an exact point in time as the sync will most likely be started shortly afterwards.","example":"2023-01-01T00:00:00Z","format":"date-time","type":"null","uniqueKey":"data.domain_mappings.oneOf.0.items.[INDEX].sync_triggers.oneOf.0.items.[INDEX].next_sync_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.domain_mappings.oneOf.0.items.[INDEX].sync_triggers.oneOf.0.items.[INDEX].next_sync_at","typeLabel":"string\u003cdate-time> | null"},"parent_id":{"oneOf":[{"description":"The parent trigger's UUID","example":"018eae56-8f9d-7ca0-bea3-17f3db6cf75b","format":"uuid","type":"string","uniqueKey":"data.domain_mappings.oneOf.0.items.[INDEX].sync_triggers.oneOf.0.items.[INDEX].parent_id.oneOf.0","typeLabel":"string\u003cuuid>"},{"description":"The parent trigger's UUID","example":"018eae56-8f9d-7ca0-bea3-17f3db6cf75b","format":"uuid","type":"null","uniqueKey":"data.domain_mappings.oneOf.0.items.[INDEX].sync_triggers.oneOf.0.items.[INDEX].parent_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.domain_mappings.oneOf.0.items.[INDEX].sync_triggers.oneOf.0.items.[INDEX].parent_id","typeLabel":"string\u003cuuid> | null"}},"required":["id","org_id","system_integration_id","domain_mapping_id"],"title":"SyncTrigger","type":"object","uniqueKey":"data.domain_mappings.oneOf.0.items.[INDEX].sync_triggers.oneOf.0.items.[INDEX]","typeLabel":"SyncTrigger · object"},"type":"array","uniqueKey":"data.domain_mappings.oneOf.0.items.[INDEX].sync_triggers.oneOf.0","typeLabel":"SyncTrigger · object[]"},{"description":"List of sync triggers associated with this domain mapping.","items":{"description":"An object representing a sync trigger in a domain mapping.","properties":{"cron_expression":{"oneOf":[{"description":"The cron expression for the scheduled trigger. If null, the trigger can only be run manually","example":"0 0 * * *","type":"string"},{"description":"The cron expression for the scheduled trigger. If null, the trigger can only be run manually","example":"0 0 * * *","type":"null"}]},"domain_configuration":{"oneOf":[{"type":"object","title":"SyncTriggerTimeReportSettings","description":"The domain-specific configuration for the sync trigger.","properties":{"domain":{"default":"time_report","description":"Must always be `time_report`","type":"string"},"from_date":{"oneOf":[{"description":"Explicit from date for the time report sync","format":"date","type":"string"},{"description":"Explicit from date for the time report sync","format":"date","type":"null"}]},"from_date_engine":{"oneOf":[{"description":"Dynamic configuration for the from date. Should not be specified if from_date is set, and vice versa.","type":"object"},{"description":"Dynamic configuration for the from date. Should not be specified if from_date is set, and vice versa.","type":"null"}]},"to_date":{"oneOf":[{"description":"Explicit to date for the time report sync","format":"date","type":"string"},{"description":"Explicit to date for the time report sync","format":"date","type":"null"}]},"to_date_engine":{"oneOf":[{"description":"Dynamic configuration for the to date. Should not be specified if to_date is set, and vice versa.","type":"object"},{"description":"Dynamic configuration for the to date. Should not be specified if to_date is set, and vice versa.","type":"null"}]}}},{"type":"null"}]},"domain_mapping_id":{"description":"The parent domain mapping's UUID","example":"018eae56-8f9d-7ca0-bea3-17f3db6cf75b","format":"uuid","nullable":false,"type":"string"},"id":{"description":"The sync trigger's UUID","example":"018eae56-8f9d-7ca0-bea3-17f3db6cf75b","format":"uuid","nullable":false,"type":"string"},"last_sync_ended_at":{"oneOf":[{"description":"The last time the sync was completed. It is possible for this timestamp to be earlier than `last_sync_started_at`, which would indicate a failed sync","example":"2023-01-01T00:00:00Z","format":"date-time","type":"string"},{"description":"The last time the sync was completed. It is possible for this timestamp to be earlier than `last_sync_started_at`, which would indicate a failed sync","example":"2023-01-01T00:00:00Z","format":"date-time","type":"null"}]},"last_sync_started_at":{"oneOf":[{"description":"The last time the sync was started.","example":"2023-01-01T00:00:00Z","format":"date-time","type":"string"},{"description":"The last time the sync was started.","example":"2023-01-01T00:00:00Z","format":"date-time","type":"null"}]},"next_sync_at":{"oneOf":[{"description":"The next scheduled sync time. This is not an exact point in time as the sync will most likely be started shortly afterwards.","example":"2023-01-01T00:00:00Z","format":"date-time","type":"string"},{"description":"The next scheduled sync time. This is not an exact point in time as the sync will most likely be started shortly afterwards.","example":"2023-01-01T00:00:00Z","format":"date-time","type":"null"}]},"org_id":{"description":"The parent organization's UUID","example":"018eae56-8f9d-7ca0-bea3-17f3db6cf75b","format":"uuid","nullable":false,"type":"string"},"parent_id":{"oneOf":[{"description":"The parent trigger's UUID","example":"018eae56-8f9d-7ca0-bea3-17f3db6cf75b","format":"uuid","type":"string"},{"description":"The parent trigger's UUID","example":"018eae56-8f9d-7ca0-bea3-17f3db6cf75b","format":"uuid","type":"null"}]},"system_integration_id":{"description":"The parent system integration's UUID","example":"018eae56-8f9d-7ca0-bea3-17f3db6cf75b","format":"uuid","nullable":false,"type":"string"}},"required":["id","org_id","system_integration_id","domain_mapping_id"],"title":"SyncTrigger","type":"object"},"type":"null","uniqueKey":"data.domain_mappings.oneOf.0.items.[INDEX].sync_triggers.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.domain_mappings.oneOf.0.items.[INDEX].sync_triggers","typeLabel":"SyncTrigger · object[] | null"},"updated_at":{"description":"Timestamp of when the domain mapping was last updated","example":"2021-06-01T12:00:00Z","format":"date-time","type":"string","uniqueKey":"data.domain_mappings.oneOf.0.items.[INDEX].updated_at","typeLabel":"string\u003cdate-time>"}},"required":["id","org_id","source_system_integration_id","target_system_integration_id","from_domain","to_domain","enabled"],"title":"DomainMapping","type":"object","uniqueKey":"data.domain_mappings.oneOf.0.items.[INDEX]","typeLabel":"DomainMapping · object"},"type":"array","uniqueKey":"data.domain_mappings.oneOf.0","typeLabel":"DomainMapping · object[]"},{"description":"List of incoming domain mappings associated with this system integration. Not returned when updating.","items":{"description":"An object representing a domain mapping.","properties":{"all_conditions_must_apply":{"description":"Whether every condition must match (AND) rather than any one of them (OR). Has no effect when `conditions` is empty.","example":false,"nullable":false,"type":"boolean"},"conditions":{"oneOf":[{"description":"List of conditions associated with this domain mapping.","items":{"description":"A condition for filtering data.","properties":{"apply_on_actions":{"description":"List of actions the condition applies to","items":{"enum":["create","update"],"type":"string"},"nullable":false,"type":"array"},"condition":{"description":"V2 Graph Engine condition","type":"object"},"description":{"oneOf":[{"description":"A brief description of the condition","type":"string"},{"description":"A brief description of the condition","type":"null"}]},"domain":{"description":"The data domain","enum":["finance","employee_competence","competence","expense_transaction","salary_transaction","file_transfer","project","org_unit","customer","schedule","time_report","employee"],"example":"employee","title":"Domain","type":"string"},"enabled":{"default":true,"description":"Whether the condition is enabled","type":"boolean"},"id":{"description":"The condition's UUID.","example":"018eae56-8f9d-7ca0-bea3-17f3db6cf75b","format":"uuid","nullable":false,"type":"string"}},"required":["id","condition","domain","apply_on_actions","enabled"],"title":"Condition","type":"object"},"type":"array"},{"description":"List of conditions associated with this domain mapping.","items":{"description":"A condition for filtering data.","properties":{"apply_on_actions":{"description":"List of actions the condition applies to","items":{"enum":["create","update"],"type":"string"},"nullable":false,"type":"array"},"condition":{"description":"V2 Graph Engine condition","type":"object"},"description":{"oneOf":[{"description":"A brief description of the condition","type":"string"},{"description":"A brief description of the condition","type":"null"}]},"domain":{"description":"The data domain","enum":["finance","employee_competence","competence","expense_transaction","salary_transaction","file_transfer","project","org_unit","customer","schedule","time_report","employee"],"example":"employee","title":"Domain","type":"string"},"enabled":{"default":true,"description":"Whether the condition is enabled","type":"boolean"},"id":{"description":"The condition's UUID.","example":"018eae56-8f9d-7ca0-bea3-17f3db6cf75b","format":"uuid","nullable":false,"type":"string"}},"required":["id","condition","domain","apply_on_actions","enabled"],"title":"Condition","type":"object"},"type":"null"}]},"description":{"oneOf":[{"description":"Free-text description of the mapping.","example":"Employees from the HR system into payroll","type":"string"},{"description":"Free-text description of the mapping.","example":"Employees from the HR system into payroll","type":"null"}]},"enabled":{"description":"Whether the domain mapping is enabled","example":true,"nullable":false,"type":"boolean"},"from_domain":{"description":"The source domain for the mapping.","enum":["finance","employee_competence","competence","expense_transaction","salary_transaction","file_transfer","project","org_unit","customer","schedule","time_report","employee"],"example":"employee","title":"Domain","type":"string"},"id":{"description":"The sync trigger's UUID","example":"018eae56-8f9d-7ca0-bea3-17f3db6cf75b","format":"uuid","nullable":false,"type":"string"},"inserted_at":{"description":"Timestamp of when the domain mapping was created","example":"2021-06-01T12:00:00Z","format":"date-time","type":"string"},"mode":{"description":"`default` is a full read/write mapping. `update_existing_only` syncs updates onto existing Twine entities only — unmapped incoming entities are dropped and replication is refused.","enum":["update_existing_only","default"],"example":"default","nullable":false,"type":"string"},"org_id":{"description":"The parent organization's UUID","example":"018eae56-8f9d-7ca0-bea3-17f3db6cf75b","format":"uuid","nullable":false,"type":"string"},"source_system_integration_id":{"description":"The source system integration's UUID. ","example":"018eae56-8f9d-7ca0-bea3-17f3db6cf75b","format":"uuid","nullable":false,"type":"string"},"sync_triggers":{"oneOf":[{"description":"List of sync triggers associated with this domain mapping.","items":{"description":"An object representing a sync trigger in a domain mapping.","properties":{"cron_expression":{"oneOf":[{"description":"The cron expression for the scheduled trigger. If null, the trigger can only be run manually","example":"0 0 * * *","type":"string"},{"description":"The cron expression for the scheduled trigger. If null, the trigger can only be run manually","example":"0 0 * * *","type":"null"}]},"domain_configuration":{"oneOf":[{"type":"object","title":"SyncTriggerTimeReportSettings","description":"The domain-specific configuration for the sync trigger.","properties":{"domain":{"default":"time_report","description":"Must always be `time_report`","type":"string"},"from_date":{"oneOf":[{"description":"Explicit from date for the time report sync","format":"date","type":"string"},{"description":"Explicit from date for the time report sync","format":"date","type":"null"}]},"from_date_engine":{"oneOf":[{"description":"Dynamic configuration for the from date. Should not be specified if from_date is set, and vice versa.","type":"object"},{"description":"Dynamic configuration for the from date. Should not be specified if from_date is set, and vice versa.","type":"null"}]},"to_date":{"oneOf":[{"description":"Explicit to date for the time report sync","format":"date","type":"string"},{"description":"Explicit to date for the time report sync","format":"date","type":"null"}]},"to_date_engine":{"oneOf":[{"description":"Dynamic configuration for the to date. Should not be specified if to_date is set, and vice versa.","type":"object"},{"description":"Dynamic configuration for the to date. Should not be specified if to_date is set, and vice versa.","type":"null"}]}}},{"type":"null"}]},"domain_mapping_id":{"description":"The parent domain mapping's UUID","example":"018eae56-8f9d-7ca0-bea3-17f3db6cf75b","format":"uuid","nullable":false,"type":"string"},"id":{"description":"The sync trigger's UUID","example":"018eae56-8f9d-7ca0-bea3-17f3db6cf75b","format":"uuid","nullable":false,"type":"string"},"last_sync_ended_at":{"oneOf":[{"description":"The last time the sync was completed. It is possible for this timestamp to be earlier than `last_sync_started_at`, which would indicate a failed sync","example":"2023-01-01T00:00:00Z","format":"date-time","type":"string"},{"description":"The last time the sync was completed. It is possible for this timestamp to be earlier than `last_sync_started_at`, which would indicate a failed sync","example":"2023-01-01T00:00:00Z","format":"date-time","type":"null"}]},"last_sync_started_at":{"oneOf":[{"description":"The last time the sync was started.","example":"2023-01-01T00:00:00Z","format":"date-time","type":"string"},{"description":"The last time the sync was started.","example":"2023-01-01T00:00:00Z","format":"date-time","type":"null"}]},"next_sync_at":{"oneOf":[{"description":"The next scheduled sync time. This is not an exact point in time as the sync will most likely be started shortly afterwards.","example":"2023-01-01T00:00:00Z","format":"date-time","type":"string"},{"description":"The next scheduled sync time. This is not an exact point in time as the sync will most likely be started shortly afterwards.","example":"2023-01-01T00:00:00Z","format":"date-time","type":"null"}]},"org_id":{"description":"The parent organization's UUID","example":"018eae56-8f9d-7ca0-bea3-17f3db6cf75b","format":"uuid","nullable":false,"type":"string"},"parent_id":{"oneOf":[{"description":"The parent trigger's UUID","example":"018eae56-8f9d-7ca0-bea3-17f3db6cf75b","format":"uuid","type":"string"},{"description":"The parent trigger's UUID","example":"018eae56-8f9d-7ca0-bea3-17f3db6cf75b","format":"uuid","type":"null"}]},"system_integration_id":{"description":"The parent system integration's UUID","example":"018eae56-8f9d-7ca0-bea3-17f3db6cf75b","format":"uuid","nullable":false,"type":"string"}},"required":["id","org_id","system_integration_id","domain_mapping_id"],"title":"SyncTrigger","type":"object"},"type":"array"},{"description":"List of sync triggers associated with this domain mapping.","items":{"description":"An object representing a sync trigger in a domain mapping.","properties":{"cron_expression":{"oneOf":[{"description":"The cron expression for the scheduled trigger. If null, the trigger can only be run manually","example":"0 0 * * *","type":"string"},{"description":"The cron expression for the scheduled trigger. If null, the trigger can only be run manually","example":"0 0 * * *","type":"null"}]},"domain_configuration":{"oneOf":[{"type":"object","title":"SyncTriggerTimeReportSettings","description":"The domain-specific configuration for the sync trigger.","properties":{"domain":{"default":"time_report","description":"Must always be `time_report`","type":"string"},"from_date":{"oneOf":[{"description":"Explicit from date for the time report sync","format":"date","type":"string"},{"description":"Explicit from date for the time report sync","format":"date","type":"null"}]},"from_date_engine":{"oneOf":[{"description":"Dynamic configuration for the from date. Should not be specified if from_date is set, and vice versa.","type":"object"},{"description":"Dynamic configuration for the from date. Should not be specified if from_date is set, and vice versa.","type":"null"}]},"to_date":{"oneOf":[{"description":"Explicit to date for the time report sync","format":"date","type":"string"},{"description":"Explicit to date for the time report sync","format":"date","type":"null"}]},"to_date_engine":{"oneOf":[{"description":"Dynamic configuration for the to date. Should not be specified if to_date is set, and vice versa.","type":"object"},{"description":"Dynamic configuration for the to date. Should not be specified if to_date is set, and vice versa.","type":"null"}]}}},{"type":"null"}]},"domain_mapping_id":{"description":"The parent domain mapping's UUID","example":"018eae56-8f9d-7ca0-bea3-17f3db6cf75b","format":"uuid","nullable":false,"type":"string"},"id":{"description":"The sync trigger's UUID","example":"018eae56-8f9d-7ca0-bea3-17f3db6cf75b","format":"uuid","nullable":false,"type":"string"},"last_sync_ended_at":{"oneOf":[{"description":"The last time the sync was completed. It is possible for this timestamp to be earlier than `last_sync_started_at`, which would indicate a failed sync","example":"2023-01-01T00:00:00Z","format":"date-time","type":"string"},{"description":"The last time the sync was completed. It is possible for this timestamp to be earlier than `last_sync_started_at`, which would indicate a failed sync","example":"2023-01-01T00:00:00Z","format":"date-time","type":"null"}]},"last_sync_started_at":{"oneOf":[{"description":"The last time the sync was started.","example":"2023-01-01T00:00:00Z","format":"date-time","type":"string"},{"description":"The last time the sync was started.","example":"2023-01-01T00:00:00Z","format":"date-time","type":"null"}]},"next_sync_at":{"oneOf":[{"description":"The next scheduled sync time. This is not an exact point in time as the sync will most likely be started shortly afterwards.","example":"2023-01-01T00:00:00Z","format":"date-time","type":"string"},{"description":"The next scheduled sync time. This is not an exact point in time as the sync will most likely be started shortly afterwards.","example":"2023-01-01T00:00:00Z","format":"date-time","type":"null"}]},"org_id":{"description":"The parent organization's UUID","example":"018eae56-8f9d-7ca0-bea3-17f3db6cf75b","format":"uuid","nullable":false,"type":"string"},"parent_id":{"oneOf":[{"description":"The parent trigger's UUID","example":"018eae56-8f9d-7ca0-bea3-17f3db6cf75b","format":"uuid","type":"string"},{"description":"The parent trigger's UUID","example":"018eae56-8f9d-7ca0-bea3-17f3db6cf75b","format":"uuid","type":"null"}]},"system_integration_id":{"description":"The parent system integration's UUID","example":"018eae56-8f9d-7ca0-bea3-17f3db6cf75b","format":"uuid","nullable":false,"type":"string"}},"required":["id","org_id","system_integration_id","domain_mapping_id"],"title":"SyncTrigger","type":"object"},"type":"null"}]},"target_system_integration_id":{"description":"The source system integration's UUID. ","example":"018eae56-8f9d-7ca0-bea3-17f3db6cf75b","format":"uuid","nullable":false,"type":"string"},"to_domain":{"description":"The target domain for the mapping.","enum":["finance","employee_competence","competence","expense_transaction","salary_transaction","file_transfer","project","org_unit","customer","schedule","time_report","employee"],"example":"employee","title":"Domain","type":"string"},"updated_at":{"description":"Timestamp of when the domain mapping was last updated","example":"2021-06-01T12:00:00Z","format":"date-time","type":"string"}},"required":["id","org_id","source_system_integration_id","target_system_integration_id","from_domain","to_domain","enabled"],"title":"DomainMapping","type":"object"},"type":"null","uniqueKey":"data.domain_mappings.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.domain_mappings","typeLabel":"DomainMapping · object[] | null"},"external_org_id":{"oneOf":[{"description":"The external system's internal ID for this customer, where applicable.","type":"string","uniqueKey":"data.external_org_id.oneOf.0","typeLabel":"string"},{"description":"The external system's internal ID for this customer, where applicable.","type":"null","uniqueKey":"data.external_org_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.external_org_id","typeLabel":"string | null"},"inserted_at":{"description":"Timestamp of when the system integration was created","example":"2021-06-01T12:00:00Z","format":"date-time","type":"string","uniqueKey":"data.inserted_at","typeLabel":"string\u003cdate-time>"},"property_mappings":{"oneOf":[{"description":"List of property mappings associated with this system integration. Not returned when updating.","items":{"description":"An object representing a property mapping in Twine.","properties":{"common_domain":{"description":"The common/Twine domain","enum":["finance","employee_competence","competence","expense_transaction","salary_transaction","file_transfer","project","org_unit","customer","schedule","time_report","employee"],"example":"employee","nullable":false,"title":"Domain","type":"string","isRequired":true,"uniqueKey":"data.property_mappings.oneOf.0.items.[INDEX].common_domain","typeLabel":"enum\u003cstring>"},"common_path":{"description":"The common path associated with the property mapping.","example":["salary_amount"],"items":{"description":"A segment of the common path","example":"salary_amount","nullable":false,"type":"string","uniqueKey":"data.property_mappings.oneOf.0.items.[INDEX].common_path.items.[INDEX]","typeLabel":"string"},"nullable":false,"type":"array","isRequired":true,"uniqueKey":"data.property_mappings.oneOf.0.items.[INDEX].common_path","typeLabel":"string[]"},"id":{"description":"The property mapping's UUID","example":"018eae56-8f9d-7ca0-bea3-17f3db6cf75b","format":"uuid","nullable":false,"type":"string","isRequired":true,"uniqueKey":"data.property_mappings.oneOf.0.items.[INDEX].id","typeLabel":"string\u003cuuid>"},"org_id":{"description":"The organization ID associated with the property mapping","example":"018eae56-8f9d-7ca0-bea3-17f3db6cf75b","format":"uuid","nullable":false,"type":"string","isRequired":true,"uniqueKey":"data.property_mappings.oneOf.0.items.[INDEX].org_id","typeLabel":"string\u003cuuid>"},"system_domain":{"description":"The system domain","enum":["finance","employee_competence","competence","expense_transaction","salary_transaction","file_transfer","project","org_unit","customer","schedule","time_report","employee"],"example":"employee","nullable":false,"title":"Domain","type":"string","isRequired":true,"uniqueKey":"data.property_mappings.oneOf.0.items.[INDEX].system_domain","typeLabel":"enum\u003cstring>"},"system_integration_id":{"description":"The system integration ID associated with the property mapping","example":"018eae56-8f9d-7ca0-bea3-17f3db6cf75b","format":"uuid","nullable":false,"type":"string","isRequired":true,"uniqueKey":"data.property_mappings.oneOf.0.items.[INDEX].system_integration_id","typeLabel":"string\u003cuuid>"},"system_path":{"description":"The system path associated with the property mapping. The validity of this value depends on the underlying system and system domain","example":["salaries","[]","amount"],"items":{"description":"A segment of the system path","example":"salaries","nullable":false,"type":"string","uniqueKey":"data.property_mappings.oneOf.0.items.[INDEX].system_path.items.[INDEX]","typeLabel":"string"},"nullable":false,"type":"array","isRequired":true,"uniqueKey":"data.property_mappings.oneOf.0.items.[INDEX].system_path","typeLabel":"string[]"},"converters":{"oneOf":[{"description":"The list of converters associated with the property mapping. The order of converters matters, as they are applied sequentially.","items":{"description":"An object representing a property mapping converter in Twine.","properties":{"converter":{"oneOf":[{"description":"The logical name of the converter. The validity of this value depends on the system being used. TODO: Add direction to endpoint for fetching all available converters.","example":"string_to_integer","type":"string","uniqueKey":"data.property_mappings.oneOf.0.items.[INDEX].converters.oneOf.0.items.[INDEX].converter.oneOf.0","typeLabel":"string"},{"description":"The logical name of the converter. The validity of this value depends on the system being used. TODO: Add direction to endpoint for fetching all available converters.","example":"string_to_integer","type":"null","uniqueKey":"data.property_mappings.oneOf.0.items.[INDEX].converters.oneOf.0.items.[INDEX].converter.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.property_mappings.oneOf.0.items.[INDEX].converters.oneOf.0.items.[INDEX].converter","typeLabel":"string | null"},"pod_id":{"oneOf":[{"description":"The ID of the Graph Engine pod associated with the converter. Cannot be set if `converter` is defined","example":"018eae56-8f9d-7ca0-bea3-17f3db6cf75b","type":"string","uniqueKey":"data.property_mappings.oneOf.0.items.[INDEX].converters.oneOf.0.items.[INDEX].pod_id.oneOf.0","typeLabel":"string"},{"description":"The ID of the Graph Engine pod associated with the converter. Cannot be set if `converter` is defined","example":"018eae56-8f9d-7ca0-bea3-17f3db6cf75b","type":"null","uniqueKey":"data.property_mappings.oneOf.0.items.[INDEX].converters.oneOf.0.items.[INDEX].pod_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.property_mappings.oneOf.0.items.[INDEX].converters.oneOf.0.items.[INDEX].pod_id","typeLabel":"string | null"}},"title":"PropertyMappingConverter","type":"object","uniqueKey":"data.property_mappings.oneOf.0.items.[INDEX].converters.oneOf.0.items.[INDEX]","typeLabel":"PropertyMappingConverter · object"},"type":"array","uniqueKey":"data.property_mappings.oneOf.0.items.[INDEX].converters.oneOf.0","typeLabel":"PropertyMappingConverter · object[]"},{"description":"The list of converters associated with the property mapping. The order of converters matters, as they are applied sequentially.","items":{"description":"An object representing a property mapping converter in Twine.","properties":{"converter":{"oneOf":[{"description":"The logical name of the converter. The validity of this value depends on the system being used. TODO: Add direction to endpoint for fetching all available converters.","example":"string_to_integer","type":"string"},{"description":"The logical name of the converter. The validity of this value depends on the system being used. TODO: Add direction to endpoint for fetching all available converters.","example":"string_to_integer","type":"null"}]},"pod_id":{"oneOf":[{"description":"The ID of the Graph Engine pod associated with the converter. Cannot be set if `converter` is defined","example":"018eae56-8f9d-7ca0-bea3-17f3db6cf75b","type":"string"},{"description":"The ID of the Graph Engine pod associated with the converter. Cannot be set if `converter` is defined","example":"018eae56-8f9d-7ca0-bea3-17f3db6cf75b","type":"null"}]}},"title":"PropertyMappingConverter","type":"object"},"type":"null","uniqueKey":"data.property_mappings.oneOf.0.items.[INDEX].converters.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.property_mappings.oneOf.0.items.[INDEX].converters","typeLabel":"PropertyMappingConverter · object[] | null"},"enabled":{"description":"Whether the property mapping is enabled","example":true,"nullable":false,"type":"boolean","uniqueKey":"data.property_mappings.oneOf.0.items.[INDEX].enabled","typeLabel":"boolean"},"engine":{"oneOf":[{"type":"object","title":"PropertyMappingEngineV2","description":"The engine configuration for the property mapping. If set, this takes precedence over converters.","required":["engine","domain","version"],"properties":{"domain":{"description":"The data domain","enum":["finance","employee_competence","competence","expense_transaction","salary_transaction","file_transfer","project","org_unit","customer","schedule","time_report","employee"],"example":"employee","title":"Domain","type":"string","isRequired":true,"uniqueKey":"data.property_mappings.oneOf.0.items.[INDEX].engine.oneOf.0.domain","typeLabel":"enum\u003cstring>"},"engine":{"description":"The JSON representation of the engine configuration.","nullable":false,"type":"object","isRequired":true,"uniqueKey":"data.property_mappings.oneOf.0.items.[INDEX].engine.oneOf.0.engine","typeLabel":"object"},"version":{"default":"2","description":"The version of the property mapping engine.","example":"2","nullable":false,"type":"string","isRequired":true,"uniqueKey":"data.property_mappings.oneOf.0.items.[INDEX].engine.oneOf.0.version","typeLabel":"string"},"description":{"oneOf":[{"description":"A description of the property mapping engine.","example":"This engine maps properties from one format to another.","type":"string","uniqueKey":"data.property_mappings.oneOf.0.items.[INDEX].engine.oneOf.0.description.oneOf.0","typeLabel":"string"},{"description":"A description of the property mapping engine.","example":"This engine maps properties from one format to another.","type":"null","uniqueKey":"data.property_mappings.oneOf.0.items.[INDEX].engine.oneOf.0.description.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.property_mappings.oneOf.0.items.[INDEX].engine.oneOf.0.description","typeLabel":"string | null"}},"uniqueKey":"data.property_mappings.oneOf.0.items.[INDEX].engine.oneOf.0","typeLabel":"PropertyMappingEngineV2 · object"},{"type":"null","uniqueKey":"data.property_mappings.oneOf.0.items.[INDEX].engine.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.property_mappings.oneOf.0.items.[INDEX].engine","typeLabel":"PropertyMappingEngineV2 · object | null"},"reference_domain":{"oneOf":[{"description":"The reference domain","enum":["finance","employee_competence","competence","expense_transaction","salary_transaction","file_transfer","project","org_unit","customer","schedule","time_report","employee"],"example":"employee","title":"Domain","type":"string","uniqueKey":"data.property_mappings.oneOf.0.items.[INDEX].reference_domain.oneOf.0","typeLabel":"enum\u003cstring>"},{"description":"The reference domain","enum":["finance","employee_competence","competence","expense_transaction","salary_transaction","file_transfer","project","org_unit","customer","schedule","time_report","employee"],"example":"employee","title":"Domain","type":"null","uniqueKey":"data.property_mappings.oneOf.0.items.[INDEX].reference_domain.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.property_mappings.oneOf.0.items.[INDEX].reference_domain","typeLabel":"enum\u003cstring> | null"},"version":{"description":"The version of the property mapping. The latest version is 2.","example":2,"nullable":false,"type":"integer","uniqueKey":"data.property_mappings.oneOf.0.items.[INDEX].version","typeLabel":"integer"}},"required":["id","org_id","system_integration_id","system_domain","common_domain","system_path","common_path"],"title":"PropertyMapping","type":"object","uniqueKey":"data.property_mappings.oneOf.0.items.[INDEX]","typeLabel":"PropertyMapping · object"},"type":"array","uniqueKey":"data.property_mappings.oneOf.0","typeLabel":"PropertyMapping · object[]"},{"description":"List of property mappings associated with this system integration. Not returned when updating.","items":{"description":"An object representing a property mapping in Twine.","properties":{"common_domain":{"description":"The common/Twine domain","enum":["finance","employee_competence","competence","expense_transaction","salary_transaction","file_transfer","project","org_unit","customer","schedule","time_report","employee"],"example":"employee","nullable":false,"title":"Domain","type":"string"},"common_path":{"description":"The common path associated with the property mapping.","example":["salary_amount"],"items":{"description":"A segment of the common path","example":"salary_amount","nullable":false,"type":"string"},"nullable":false,"type":"array"},"converters":{"oneOf":[{"description":"The list of converters associated with the property mapping. The order of converters matters, as they are applied sequentially.","items":{"description":"An object representing a property mapping converter in Twine.","properties":{"converter":{"oneOf":[{"description":"The logical name of the converter. The validity of this value depends on the system being used. TODO: Add direction to endpoint for fetching all available converters.","example":"string_to_integer","type":"string"},{"description":"The logical name of the converter. The validity of this value depends on the system being used. TODO: Add direction to endpoint for fetching all available converters.","example":"string_to_integer","type":"null"}]},"pod_id":{"oneOf":[{"description":"The ID of the Graph Engine pod associated with the converter. Cannot be set if `converter` is defined","example":"018eae56-8f9d-7ca0-bea3-17f3db6cf75b","type":"string"},{"description":"The ID of the Graph Engine pod associated with the converter. Cannot be set if `converter` is defined","example":"018eae56-8f9d-7ca0-bea3-17f3db6cf75b","type":"null"}]}},"title":"PropertyMappingConverter","type":"object"},"type":"array"},{"description":"The list of converters associated with the property mapping. The order of converters matters, as they are applied sequentially.","items":{"description":"An object representing a property mapping converter in Twine.","properties":{"converter":{"oneOf":[{"description":"The logical name of the converter. The validity of this value depends on the system being used. TODO: Add direction to endpoint for fetching all available converters.","example":"string_to_integer","type":"string"},{"description":"The logical name of the converter. The validity of this value depends on the system being used. TODO: Add direction to endpoint for fetching all available converters.","example":"string_to_integer","type":"null"}]},"pod_id":{"oneOf":[{"description":"The ID of the Graph Engine pod associated with the converter. Cannot be set if `converter` is defined","example":"018eae56-8f9d-7ca0-bea3-17f3db6cf75b","type":"string"},{"description":"The ID of the Graph Engine pod associated with the converter. Cannot be set if `converter` is defined","example":"018eae56-8f9d-7ca0-bea3-17f3db6cf75b","type":"null"}]}},"title":"PropertyMappingConverter","type":"object"},"type":"null"}]},"enabled":{"description":"Whether the property mapping is enabled","example":true,"nullable":false,"type":"boolean"},"engine":{"oneOf":[{"type":"object","title":"PropertyMappingEngineV2","description":"The engine configuration for the property mapping. If set, this takes precedence over converters.","required":["engine","domain","version"],"properties":{"description":{"oneOf":[{"description":"A description of the property mapping engine.","example":"This engine maps properties from one format to another.","type":"string"},{"description":"A description of the property mapping engine.","example":"This engine maps properties from one format to another.","type":"null"}]},"domain":{"description":"The data domain","enum":["finance","employee_competence","competence","expense_transaction","salary_transaction","file_transfer","project","org_unit","customer","schedule","time_report","employee"],"example":"employee","title":"Domain","type":"string"},"engine":{"description":"The JSON representation of the engine configuration.","nullable":false,"type":"object"},"version":{"default":"2","description":"The version of the property mapping engine.","example":"2","nullable":false,"type":"string"}}},{"type":"null"}]},"id":{"description":"The property mapping's UUID","example":"018eae56-8f9d-7ca0-bea3-17f3db6cf75b","format":"uuid","nullable":false,"type":"string"},"org_id":{"description":"The organization ID associated with the property mapping","example":"018eae56-8f9d-7ca0-bea3-17f3db6cf75b","format":"uuid","nullable":false,"type":"string"},"reference_domain":{"oneOf":[{"description":"The reference domain","enum":["finance","employee_competence","competence","expense_transaction","salary_transaction","file_transfer","project","org_unit","customer","schedule","time_report","employee"],"example":"employee","title":"Domain","type":"string"},{"description":"The reference domain","enum":["finance","employee_competence","competence","expense_transaction","salary_transaction","file_transfer","project","org_unit","customer","schedule","time_report","employee"],"example":"employee","title":"Domain","type":"null"}]},"system_domain":{"description":"The system domain","enum":["finance","employee_competence","competence","expense_transaction","salary_transaction","file_transfer","project","org_unit","customer","schedule","time_report","employee"],"example":"employee","nullable":false,"title":"Domain","type":"string"},"system_integration_id":{"description":"The system integration ID associated with the property mapping","example":"018eae56-8f9d-7ca0-bea3-17f3db6cf75b","format":"uuid","nullable":false,"type":"string"},"system_path":{"description":"The system path associated with the property mapping. The validity of this value depends on the underlying system and system domain","example":["salaries","[]","amount"],"items":{"description":"A segment of the system path","example":"salaries","nullable":false,"type":"string"},"nullable":false,"type":"array"},"version":{"description":"The version of the property mapping. The latest version is 2.","example":2,"nullable":false,"type":"integer"}},"required":["id","org_id","system_integration_id","system_domain","common_domain","system_path","common_path"],"title":"PropertyMapping","type":"object"},"type":"null","uniqueKey":"data.property_mappings.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.property_mappings","typeLabel":"PropertyMapping · object[] | null"},"system":{"description":"An object representing an integrated system in Twine.","properties":{"id":{"description":"The system's UUID. This identifier is persistent across all integrations, and should be regarded as well-known.","example":"018eae56-8f9d-7ca0-bea3-17f3db6cf75b","format":"uuid","nullable":false,"type":"string","isRequired":true,"uniqueKey":"data.system.id","typeLabel":"string\u003cuuid>"},"kind":{"description":"System kind","enum":["other","expenses","time_tracking","file_area","iam","bi","accounting","payroll","hris","ats","hub"],"title":"SystemKind","type":"string","isRequired":true,"uniqueKey":"data.system.kind","typeLabel":"enum\u003cstring>"},"name":{"description":"The name of the system","example":"Evity HR","nullable":false,"type":"string","isRequired":true,"uniqueKey":"data.system.name","typeLabel":"string"},"slug":{"description":"System slug","enum":["twine","twenty_four_seven","timeplan","time_recorder","tidsbanken","teamtailor","spreadsheet","spiris","sp_payroll","skovik","simployer_classic","sftp_server","sftp","scim","s3","quinyx","personio","people_core","pe_accounting","payzlip","paxml","nmbrs","medvind_wfm","manual_upload","manual_download","looker","kontek","kleer","json_file","huma_hr","hogia_open_hr","hogia_file","hibob","heartpace","hailey_hr","fortnox","flex_hrm","evity","entra_id","catalyst_one","caspeco","bamboo_hr","alexis_hr","agda_ps","agda_file","aboard"],"title":"SystemSlug","type":"string","isRequired":true,"uniqueKey":"data.system.slug","typeLabel":"enum\u003cstring>"},"description":{"oneOf":[{"description":"Public-facing prose describing what the integration does (Markdown). `null` when the system has no authored description.","example":"The Spreadsheet integration lets Twine exchange employee data as spreadsheet files...","type":"string","uniqueKey":"data.system.description.oneOf.0","typeLabel":"string"},{"description":"Public-facing prose describing what the integration does (Markdown). `null` when the system has no authored description.","example":"The Spreadsheet integration lets Twine exchange employee data as spreadsheet files...","type":"null","uniqueKey":"data.system.description.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system.description","typeLabel":"string | null"},"domains":{"oneOf":[{"description":"The data domains this system supports and in which direction. `null` when the system has not yet declared its domain capabilities.","example":[{"capability":"read","domain":"employee"},{"capability":"write","domain":"time_report"}],"items":{"type":"any","uniqueKey":"data.system.domains.oneOf.0.items.[INDEX]","typeLabel":"any"},"type":"array","uniqueKey":"data.system.domains.oneOf.0","typeLabel":"any[]"},{"description":"The data domains this system supports and in which direction. `null` when the system has not yet declared its domain capabilities.","example":[{"capability":"read","domain":"employee"},{"capability":"write","domain":"time_report"}],"items":{"type":"any"},"type":"null","uniqueKey":"data.system.domains.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system.domains","typeLabel":"any[] | null"},"logo_url":{"oneOf":[{"description":"URL to the system's logo image","example":"https://example.com/logos/system-logo.png","format":"uri","type":"string","uniqueKey":"data.system.logo_url.oneOf.0","typeLabel":"string\u003curi>"},{"description":"URL to the system's logo image","example":"https://example.com/logos/system-logo.png","format":"uri","type":"null","uniqueKey":"data.system.logo_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system.logo_url","typeLabel":"string\u003curi> | null"},"status":{"oneOf":[{"description":"Lifecycle status: `available` systems can be integrated today, `planned` systems are in the catalog but not yet implemented, `deprecated` systems still operate but are closed to new integrations. Always set on the systems catalog endpoint; `null` on embedded system objects.","enum":["available","planned","deprecated"],"example":"available","type":"string","uniqueKey":"data.system.status.oneOf.0","typeLabel":"enum\u003cstring>"},{"description":"Lifecycle status: `available` systems can be integrated today, `planned` systems are in the catalog but not yet implemented, `deprecated` systems still operate but are closed to new integrations. Always set on the systems catalog endpoint; `null` on embedded system objects.","enum":["available","planned","deprecated"],"example":"available","type":"null","uniqueKey":"data.system.status.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system.status","typeLabel":"enum\u003cstring> | null"}},"required":["id","name","slug","kind"],"title":"System","type":"object","uniqueKey":"data.system","typeLabel":"System · object"},"system_custom":{"oneOf":[{"type":"object","title":"AgdaFileSystemCustom","description":"Custom configuration for Agda File system integrations.","required":["slug"],"properties":{"slug":{"enum":["agda_file"],"nullable":false,"type":"string","isRequired":true,"uniqueKey":"data.system_custom.oneOf.0.slug","typeLabel":"enum\u003cstring>"},"change_lookback_enabled":{"description":"When false (the default) every employee is sent in full. When true the file is limited to employees with a recorded change inside the lookback window.","nullable":false,"type":"boolean","uniqueKey":"data.system_custom.oneOf.0.change_lookback_enabled","typeLabel":"boolean"},"change_lookback_unit":{"oneOf":[{"description":"Unit of the lookback window.","enum":["day","week","month","year"],"type":"string","uniqueKey":"data.system_custom.oneOf.0.change_lookback_unit.oneOf.0","typeLabel":"enum\u003cstring>"},{"description":"Unit of the lookback window.","enum":["day","week","month","year"],"type":"null","uniqueKey":"data.system_custom.oneOf.0.change_lookback_unit.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.0.change_lookback_unit","typeLabel":"enum\u003cstring> | null"},"change_lookback_value":{"oneOf":[{"description":"Size of the lookback window. Must be at least 1 while the window is enabled.","minimum":1,"type":"integer","uniqueKey":"data.system_custom.oneOf.0.change_lookback_value.oneOf.0","typeLabel":"integer"},{"description":"Size of the lookback window. Must be at least 1 while the window is enabled.","minimum":1,"type":"null","uniqueKey":"data.system_custom.oneOf.0.change_lookback_value.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.0.change_lookback_value","typeLabel":"integer | null"},"company_no":{"oneOf":[{"description":"Agda's FTG_NR. Must match an existing company in the Agda database this integration writes to.","type":"string","uniqueKey":"data.system_custom.oneOf.0.company_no.oneOf.0","typeLabel":"string"},{"description":"Agda's FTG_NR. Must match an existing company in the Agda database this integration writes to.","type":"null","uniqueKey":"data.system_custom.oneOf.0.company_no.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.0.company_no","typeLabel":"string | null"},"file_name_prefix":{"oneOf":[{"description":"Optional prefix prepended to the exported file name, which is otherwise twine_agda_export_\u003ctimestamp>.xml.","pattern":"^[A-Za-z0-9._-]+$","type":"string","uniqueKey":"data.system_custom.oneOf.0.file_name_prefix.oneOf.0","typeLabel":"string"},{"description":"Optional prefix prepended to the exported file name, which is otherwise twine_agda_export_\u003ctimestamp>.xml.","pattern":"^[A-Za-z0-9._-]+$","type":"null","uniqueKey":"data.system_custom.oneOf.0.file_name_prefix.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.0.file_name_prefix","typeLabel":"string | null"},"salary_paycodes":{"oneOf":[{"description":"LONEART values that form one mutually exclusive salary timeline, so a move from an hourly rate to a monthly salary closes the old one. Empty means each LONEART is only closed out against itself.","items":{"type":"string","uniqueKey":"data.system_custom.oneOf.0.salary_paycodes.oneOf.0.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"data.system_custom.oneOf.0.salary_paycodes.oneOf.0","typeLabel":"string[]"},{"description":"LONEART values that form one mutually exclusive salary timeline, so a move from an hourly rate to a monthly salary closes the old one. Empty means each LONEART is only closed out against itself.","items":{"type":"string"},"type":"null","uniqueKey":"data.system_custom.oneOf.0.salary_paycodes.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.0.salary_paycodes","typeLabel":"string[] | null"}},"uniqueKey":"data.system_custom.oneOf.0","typeLabel":"AgdaFileSystemCustom · object"},{"type":"object","title":"AgdaPsSystemCustom","description":"Custom configuration for Agda PS system integrations.","properties":{"auth_scheme":{"oneOf":[{"description":"The authentication scheme to use for this Agda PS integration.","enum":["basic","bearer"],"type":"string","uniqueKey":"data.system_custom.oneOf.1.auth_scheme.oneOf.0","typeLabel":"enum\u003cstring>"},{"description":"The authentication scheme to use for this Agda PS integration.","enum":["basic","bearer"],"type":"null","uniqueKey":"data.system_custom.oneOf.1.auth_scheme.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.1.auth_scheme","typeLabel":"enum\u003cstring> | null"},"slug":{"enum":["agda_ps"],"nullable":false,"type":"string","uniqueKey":"data.system_custom.oneOf.1.slug","typeLabel":"enum\u003cstring>"}},"uniqueKey":"data.system_custom.oneOf.1","typeLabel":"AgdaPsSystemCustom · object"},{"type":"object","title":"BambooHrSystemCustom","description":"Custom configuration for BambooHR system integrations.","properties":{"slug":{"enum":["bamboo_hr"],"nullable":false,"type":"string","uniqueKey":"data.system_custom.oneOf.2.slug","typeLabel":"enum\u003cstring>"},"subdomain":{"oneOf":[{"description":"The subdomain for the BambooHR account.","type":"string","uniqueKey":"data.system_custom.oneOf.2.subdomain.oneOf.0","typeLabel":"string"},{"description":"The subdomain for the BambooHR account.","type":"null","uniqueKey":"data.system_custom.oneOf.2.subdomain.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.2.subdomain","typeLabel":"string | null"}},"uniqueKey":"data.system_custom.oneOf.2","typeLabel":"BambooHrSystemCustom · object"},{"type":"object","title":"CaspecoSystemCustom","description":"Custom configuration for Caspeco system integrations. The access token goes in `api_key` and the Caspeco database name (the `system` header, one per company) in `external_org_id`.","properties":{"slug":{"enum":["caspeco"],"nullable":false,"type":"string","uniqueKey":"data.system_custom.oneOf.3.slug","typeLabel":"enum\u003cstring>"},"use_sandbox":{"oneOf":[{"default":false,"description":"Send requests to the sandbox host (rms.dev.caspeco.net) instead of production.","type":"boolean","uniqueKey":"data.system_custom.oneOf.3.use_sandbox.oneOf.0","typeLabel":"boolean"},{"default":false,"description":"Send requests to the sandbox host (rms.dev.caspeco.net) instead of production.","type":"null","uniqueKey":"data.system_custom.oneOf.3.use_sandbox.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.3.use_sandbox","typeLabel":"boolean | null"}},"uniqueKey":"data.system_custom.oneOf.3","typeLabel":"CaspecoSystemCustom · object"},{"type":"object","title":"SpreadsheetSystemCustom","description":"Custom configuration for Spreadsheet system integrations.","properties":{"column_order_type":{"description":"The naming scheme used in the XLSX","enum":["a1","r1c1"],"type":"string","uniqueKey":"data.system_custom.oneOf.4.column_order_type","typeLabel":"enum\u003cstring>"},"main_sheet_id":{"oneOf":[{"description":"The `id` of the sheet holding one row per employee; other sheets attach to it through their link column. Left null, the first sheet that is neither ignored nor multirow is used.","type":"string","uniqueKey":"data.system_custom.oneOf.4.main_sheet_id.oneOf.0","typeLabel":"string"},{"description":"The `id` of the sheet holding one row per employee; other sheets attach to it through their link column. Left null, the first sheet that is neither ignored nor multirow is used.","type":"null","uniqueKey":"data.system_custom.oneOf.4.main_sheet_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.4.main_sheet_id","typeLabel":"string | null"},"quote_char":{"default":"\"","description":"The character used to quote values in the CSV","type":"string","uniqueKey":"data.system_custom.oneOf.4.quote_char","typeLabel":"string"},"separator":{"default":",","description":"The character used to separate values in the CSV","type":"string","uniqueKey":"data.system_custom.oneOf.4.separator","typeLabel":"string"},"sheets":{"description":"The sheets to process in the spreadsheet file (CSV/XLSX/ODS). For a CSV file there should only be 1 sheet.","items":{"description":"Custom configuration for Spreadsheet system integrations - Sheet.","properties":{"column_names":{"oneOf":[{"description":"The names of the columns to include in the integration. This is not required for the functionality, but can be used to provide better context in the UI.","items":{"type":"string","uniqueKey":"data.system_custom.oneOf.4.sheets.items.[INDEX].column_names.oneOf.0.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"data.system_custom.oneOf.4.sheets.items.[INDEX].column_names.oneOf.0","typeLabel":"string[]"},{"description":"The names of the columns to include in the integration. This is not required for the functionality, but can be used to provide better context in the UI.","items":{"type":"string"},"type":"null","uniqueKey":"data.system_custom.oneOf.4.sheets.items.[INDEX].column_names.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.4.sheets.items.[INDEX].column_names","typeLabel":"string[] | null"},"end_date_column_index":{"oneOf":[{"description":"Index of the column whose value becomes the end-date (exclusive) for every DatedProperty extracted from this row.","type":"integer","uniqueKey":"data.system_custom.oneOf.4.sheets.items.[INDEX].end_date_column_index.oneOf.0","typeLabel":"integer"},{"description":"Index of the column whose value becomes the end-date (exclusive) for every DatedProperty extracted from this row.","type":"null","uniqueKey":"data.system_custom.oneOf.4.sheets.items.[INDEX].end_date_column_index.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.4.sheets.items.[INDEX].end_date_column_index","typeLabel":"integer | null"},"exclude_row_indexes":{"oneOf":[{"default":[0],"description":"The indexes of the rows to exclude from processing","items":{"type":"integer","uniqueKey":"data.system_custom.oneOf.4.sheets.items.[INDEX].exclude_row_indexes.oneOf.0.items.[INDEX]","typeLabel":"integer"},"type":"array","uniqueKey":"data.system_custom.oneOf.4.sheets.items.[INDEX].exclude_row_indexes.oneOf.0","typeLabel":"integer[]"},{"default":[0],"description":"The indexes of the rows to exclude from processing","items":{"type":"integer"},"type":"null","uniqueKey":"data.system_custom.oneOf.4.sheets.items.[INDEX].exclude_row_indexes.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.4.sheets.items.[INDEX].exclude_row_indexes","typeLabel":"integer[] | null"},"id":{"oneOf":[{"description":"Stable identifier for the sheet, referenced by `main_sheet_id`. Send back the id you read for each sheet: a `sheets` write that omits ids replaces the sheets, which clears their ids and any `main_sheet_id` pointing at one.","type":"string","uniqueKey":"data.system_custom.oneOf.4.sheets.items.[INDEX].id.oneOf.0","typeLabel":"string"},{"description":"Stable identifier for the sheet, referenced by `main_sheet_id`. Send back the id you read for each sheet: a `sheets` write that omits ids replaces the sheets, which clears their ids and any `main_sheet_id` pointing at one.","type":"null","uniqueKey":"data.system_custom.oneOf.4.sheets.items.[INDEX].id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.4.sheets.items.[INDEX].id","typeLabel":"string | null"},"id_column_index":{"oneOf":[{"description":"Index of the column whose value becomes the `id` on every DatedProperty extracted from this row. Use to differentiate parallel value histories (e.g. salary type) within a multirow sheet.","type":"integer","uniqueKey":"data.system_custom.oneOf.4.sheets.items.[INDEX].id_column_index.oneOf.0","typeLabel":"integer"},{"description":"Index of the column whose value becomes the `id` on every DatedProperty extracted from this row. Use to differentiate parallel value histories (e.g. salary type) within a multirow sheet.","type":"null","uniqueKey":"data.system_custom.oneOf.4.sheets.items.[INDEX].id_column_index.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.4.sheets.items.[INDEX].id_column_index","typeLabel":"integer | null"},"ignore":{"oneOf":[{"description":"Whether to ignore this sheet","type":"boolean","uniqueKey":"data.system_custom.oneOf.4.sheets.items.[INDEX].ignore.oneOf.0","typeLabel":"boolean"},{"description":"Whether to ignore this sheet","type":"null","uniqueKey":"data.system_custom.oneOf.4.sheets.items.[INDEX].ignore.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.4.sheets.items.[INDEX].ignore","typeLabel":"boolean | null"},"link_column_index":{"oneOf":[{"description":"The index of the column that links multiple rows to the same entity. Required if multirows is true.","type":"integer","uniqueKey":"data.system_custom.oneOf.4.sheets.items.[INDEX].link_column_index.oneOf.0","typeLabel":"integer"},{"description":"The index of the column that links multiple rows to the same entity. Required if multirows is true.","type":"null","uniqueKey":"data.system_custom.oneOf.4.sheets.items.[INDEX].link_column_index.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.4.sheets.items.[INDEX].link_column_index","typeLabel":"integer | null"},"multirows":{"oneOf":[{"description":"If true, indicated that entities can span multiple rows. Should be specified together with link_column_index.","type":"boolean","uniqueKey":"data.system_custom.oneOf.4.sheets.items.[INDEX].multirows.oneOf.0","typeLabel":"boolean"},{"description":"If true, indicated that entities can span multiple rows. Should be specified together with link_column_index.","type":"null","uniqueKey":"data.system_custom.oneOf.4.sheets.items.[INDEX].multirows.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.4.sheets.items.[INDEX].multirows","typeLabel":"boolean | null"},"name":{"oneOf":[{"description":"The name of the sheet","type":"string","uniqueKey":"data.system_custom.oneOf.4.sheets.items.[INDEX].name.oneOf.0","typeLabel":"string"},{"description":"The name of the sheet","type":"null","uniqueKey":"data.system_custom.oneOf.4.sheets.items.[INDEX].name.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.4.sheets.items.[INDEX].name","typeLabel":"string | null"},"nr_of_columns":{"oneOf":[{"description":"The number of columns to read from the sheet","type":"integer","uniqueKey":"data.system_custom.oneOf.4.sheets.items.[INDEX].nr_of_columns.oneOf.0","typeLabel":"integer"},{"description":"The number of columns to read from the sheet","type":"null","uniqueKey":"data.system_custom.oneOf.4.sheets.items.[INDEX].nr_of_columns.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.4.sheets.items.[INDEX].nr_of_columns","typeLabel":"integer | null"},"start_date_column_index":{"oneOf":[{"description":"Index of the column whose value becomes `valid_from` on every DatedProperty extracted from this row.","type":"integer","uniqueKey":"data.system_custom.oneOf.4.sheets.items.[INDEX].start_date_column_index.oneOf.0","typeLabel":"integer"},{"description":"Index of the column whose value becomes `valid_from` on every DatedProperty extracted from this row.","type":"null","uniqueKey":"data.system_custom.oneOf.4.sheets.items.[INDEX].start_date_column_index.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.4.sheets.items.[INDEX].start_date_column_index","typeLabel":"integer | null"}},"title":"SpreadsheetCustomSheet","type":"object","uniqueKey":"data.system_custom.oneOf.4.sheets.items.[INDEX]","typeLabel":"SpreadsheetCustomSheet · object"},"type":"array","uniqueKey":"data.system_custom.oneOf.4.sheets","typeLabel":"SpreadsheetCustomSheet · object[]"},"slug":{"enum":["spreadsheet"],"nullable":false,"type":"string","uniqueKey":"data.system_custom.oneOf.4.slug","typeLabel":"enum\u003cstring>"}},"uniqueKey":"data.system_custom.oneOf.4","typeLabel":"SpreadsheetSystemCustom · object"},{"type":"object","title":"EntraIdSystemCustom","description":"Custom configuration for EntraID system integrations.","properties":{"application_id":{"oneOf":[{"description":"The application ID for the EntraID integration. This is either the ID of a customer-defined application or the ID of a customer-specific application hosted by Twine","type":"string","uniqueKey":"data.system_custom.oneOf.5.application_id.oneOf.0","typeLabel":"string"},{"description":"The application ID for the EntraID integration. This is either the ID of a customer-defined application or the ID of a customer-specific application hosted by Twine","type":"null","uniqueKey":"data.system_custom.oneOf.5.application_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.5.application_id","typeLabel":"string | null"},"application_permissions":{"oneOf":[{"description":"The permissions required in the Entra Application.","items":{"type":"string","uniqueKey":"data.system_custom.oneOf.5.application_permissions.oneOf.0.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"data.system_custom.oneOf.5.application_permissions.oneOf.0","typeLabel":"string[]"},{"description":"The permissions required in the Entra Application.","items":{"type":"string"},"type":"null","uniqueKey":"data.system_custom.oneOf.5.application_permissions.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.5.application_permissions","typeLabel":"string[] | null"},"customer_defined_application":{"oneOf":[{"description":"Whether to enable API v2 for the EvityHR account.","type":"boolean","uniqueKey":"data.system_custom.oneOf.5.customer_defined_application.oneOf.0","typeLabel":"boolean"},{"description":"Whether to enable API v2 for the EvityHR account.","type":"null","uniqueKey":"data.system_custom.oneOf.5.customer_defined_application.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.5.customer_defined_application","typeLabel":"boolean | null"},"manual_directory_extension_attributes":{"oneOf":[{"description":"Manually specified directory extension attributes for the EntraID integration. This is sometimes needed when the Graph API does not return these attributes automatically, even though they exist in the customer's directory.","items":{"type":"string","uniqueKey":"data.system_custom.oneOf.5.manual_directory_extension_attributes.oneOf.0.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"data.system_custom.oneOf.5.manual_directory_extension_attributes.oneOf.0","typeLabel":"string[]"},{"description":"Manually specified directory extension attributes for the EntraID integration. This is sometimes needed when the Graph API does not return these attributes automatically, even though they exist in the customer's directory.","items":{"type":"string"},"type":"null","uniqueKey":"data.system_custom.oneOf.5.manual_directory_extension_attributes.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.5.manual_directory_extension_attributes","typeLabel":"string[] | null"},"secret_rotation_days":{"oneOf":[{"description":"The number of days before which the secret should be rotated. Note: The secret will likely be rotated before this time. Has no effect if `customer_defined_application` is false.","type":"integer","uniqueKey":"data.system_custom.oneOf.5.secret_rotation_days.oneOf.0","typeLabel":"integer"},{"description":"The number of days before which the secret should be rotated. Note: The secret will likely be rotated before this time. Has no effect if `customer_defined_application` is false.","type":"null","uniqueKey":"data.system_custom.oneOf.5.secret_rotation_days.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.5.secret_rotation_days","typeLabel":"integer | null"},"slug":{"enum":["entra_id"],"nullable":false,"type":"string","uniqueKey":"data.system_custom.oneOf.5.slug","typeLabel":"enum\u003cstring>"},"tenant_id":{"oneOf":[{"description":"The tenant ID for the EntraID integration. Note: This is the customer's tenant ID.","type":"string","uniqueKey":"data.system_custom.oneOf.5.tenant_id.oneOf.0","typeLabel":"string"},{"description":"The tenant ID for the EntraID integration. Note: This is the customer's tenant ID.","type":"null","uniqueKey":"data.system_custom.oneOf.5.tenant_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.5.tenant_id","typeLabel":"string | null"}},"uniqueKey":"data.system_custom.oneOf.5","typeLabel":"EntraIdSystemCustom · object"},{"type":"object","title":"EvityHrSystemCustom","description":"Custom configuration for EvityHR system integrations.","properties":{"enable_api_v2":{"oneOf":[{"description":"Whether to enable API v2 for the EvityHR account.","type":"boolean","uniqueKey":"data.system_custom.oneOf.6.enable_api_v2.oneOf.0","typeLabel":"boolean"},{"description":"Whether to enable API v2 for the EvityHR account.","type":"null","uniqueKey":"data.system_custom.oneOf.6.enable_api_v2.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.6.enable_api_v2","typeLabel":"boolean | null"},"slug":{"enum":["evity"],"nullable":false,"type":"string","uniqueKey":"data.system_custom.oneOf.6.slug","typeLabel":"enum\u003cstring>"}},"uniqueKey":"data.system_custom.oneOf.6","typeLabel":"EvityHrSystemCustom · object"},{"type":"object","title":"FlexHrmSystemCustom","description":"Custom configuration for FlexHrm system integrations.","properties":{"company_nr":{"oneOf":[{"description":"The company number for customer tenant. Reads like a regular number like 12345.","type":"string","uniqueKey":"data.system_custom.oneOf.7.company_nr.oneOf.0","typeLabel":"string"},{"description":"The company number for customer tenant. Reads like a regular number like 12345.","type":"null","uniqueKey":"data.system_custom.oneOf.7.company_nr.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.7.company_nr","typeLabel":"string | null"},"instance_id":{"oneOf":[{"description":"The instance UUID for customer tenant. Twine will automatically retrieve this value.","type":"string","uniqueKey":"data.system_custom.oneOf.7.instance_id.oneOf.0","typeLabel":"string"},{"description":"The instance UUID for customer tenant. Twine will automatically retrieve this value.","type":"null","uniqueKey":"data.system_custom.oneOf.7.instance_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.7.instance_id","typeLabel":"string | null"},"instance_nr":{"oneOf":[{"description":"The instance number for customer tenant. Reads like a regular number like 12345.","type":"string","uniqueKey":"data.system_custom.oneOf.7.instance_nr.oneOf.0","typeLabel":"string"},{"description":"The instance number for customer tenant. Reads like a regular number like 12345.","type":"null","uniqueKey":"data.system_custom.oneOf.7.instance_nr.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.7.instance_nr","typeLabel":"string | null"},"probation_employment_type_id":{"oneOf":[{"description":"The probation employment type UUID for the customer tenant. If this is set, Twine will automatically generate additional employment periods with this as the employment type. Should only be used if the source system cannot provide discreet probationary employment periods.","type":"string","uniqueKey":"data.system_custom.oneOf.7.probation_employment_type_id.oneOf.0","typeLabel":"string"},{"description":"The probation employment type UUID for the customer tenant. If this is set, Twine will automatically generate additional employment periods with this as the employment type. Should only be used if the source system cannot provide discreet probationary employment periods.","type":"null","uniqueKey":"data.system_custom.oneOf.7.probation_employment_type_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.7.probation_employment_type_id","typeLabel":"string | null"},"slug":{"enum":["flex_hrm"],"nullable":false,"type":"string","uniqueKey":"data.system_custom.oneOf.7.slug","typeLabel":"enum\u003cstring>"}},"uniqueKey":"data.system_custom.oneOf.7","typeLabel":"FlexHrmSystemCustom · object"},{"type":"object","title":"FortnoxSystemCustom","description":"Custom configuration for Fortnox system integrations.","properties":{"insert_zero_salaries":{"oneOf":[{"description":"Whether to insert zero salaries for non-working periods for employees in Fortnox.","type":"boolean","uniqueKey":"data.system_custom.oneOf.8.insert_zero_salaries.oneOf.0","typeLabel":"boolean"},{"description":"Whether to insert zero salaries for non-working periods for employees in Fortnox.","type":"null","uniqueKey":"data.system_custom.oneOf.8.insert_zero_salaries.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.8.insert_zero_salaries","typeLabel":"boolean | null"},"scopes":{"oneOf":[{"description":"OAuth scopes requested from Fortnox during authentication. `companyinformation` is always included regardless of this value.","items":{"type":"string","uniqueKey":"data.system_custom.oneOf.8.scopes.oneOf.0.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"data.system_custom.oneOf.8.scopes.oneOf.0","typeLabel":"string[]"},{"description":"OAuth scopes requested from Fortnox during authentication. `companyinformation` is always included regardless of this value.","items":{"type":"string"},"type":"null","uniqueKey":"data.system_custom.oneOf.8.scopes.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.8.scopes","typeLabel":"string[] | null"},"slug":{"enum":["fortnox"],"nullable":false,"type":"string","uniqueKey":"data.system_custom.oneOf.8.slug","typeLabel":"enum\u003cstring>"}},"uniqueKey":"data.system_custom.oneOf.8","typeLabel":"FortnoxSystemCustom · object"},{"type":"object","title":"GenericSystemCustom","description":"Systems without system-specific settings in the API. Only `slug` is exposed.","required":["slug"],"properties":{"slug":{"enum":["aboard","catalyst_one","heartpace","kleer","medvind_wfm","nmbrs","payzlip","quinyx","scim","sftp_server","simployer_classic","spiris","tidsbanken","timeplan"],"nullable":false,"type":"string","isRequired":true,"uniqueKey":"data.system_custom.oneOf.9.slug","typeLabel":"enum\u003cstring>"}},"uniqueKey":"data.system_custom.oneOf.9","typeLabel":"GenericSystemCustom · object"},{"type":"object","title":"HaileyHrSystemCustom","description":"Custom configuration for Hailey HR system integrations.","properties":{"slug":{"enum":["hailey_hr"],"nullable":false,"type":"string","uniqueKey":"data.system_custom.oneOf.10.slug","typeLabel":"enum\u003cstring>"},"use_sandbox_api":{"oneOf":[{"default":true,"description":"Whether to use the Hailey HR sandbox API.","type":"boolean","uniqueKey":"data.system_custom.oneOf.10.use_sandbox_api.oneOf.0","typeLabel":"boolean"},{"default":true,"description":"Whether to use the Hailey HR sandbox API.","type":"null","uniqueKey":"data.system_custom.oneOf.10.use_sandbox_api.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.10.use_sandbox_api","typeLabel":"boolean | null"}},"uniqueKey":"data.system_custom.oneOf.10","typeLabel":"HaileyHrSystemCustom · object"},{"type":"object","title":"HibobSystemCustom","description":"Custom configuration for Hibob system integrations.","properties":{"enabled_reports":{"oneOf":[{"description":"A list of report ids that should be enabled for Hibob.","items":{"type":"string","uniqueKey":"data.system_custom.oneOf.11.enabled_reports.oneOf.0.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"data.system_custom.oneOf.11.enabled_reports.oneOf.0","typeLabel":"string[]"},{"description":"A list of report ids that should be enabled for Hibob.","items":{"type":"string"},"type":"null","uniqueKey":"data.system_custom.oneOf.11.enabled_reports.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.11.enabled_reports","typeLabel":"string[] | null"},"include_private_time_off_requests":{"oneOf":[{"default":false,"description":"Whether to include private time off requests.","type":"boolean","uniqueKey":"data.system_custom.oneOf.11.include_private_time_off_requests.oneOf.0","typeLabel":"boolean"},{"default":false,"description":"Whether to include private time off requests.","type":"null","uniqueKey":"data.system_custom.oneOf.11.include_private_time_off_requests.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.11.include_private_time_off_requests","typeLabel":"boolean | null"},"partner_token_suffix":{"oneOf":[{"description":"The partner token suffix for Hibob. Should be your company name, preferably unchanged once used once.","type":"string","uniqueKey":"data.system_custom.oneOf.11.partner_token_suffix.oneOf.0","typeLabel":"string"},{"description":"The partner token suffix for Hibob. Should be your company name, preferably unchanged once used once.","type":"null","uniqueKey":"data.system_custom.oneOf.11.partner_token_suffix.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.11.partner_token_suffix","typeLabel":"string | null"},"slug":{"enum":["hibob"],"nullable":false,"type":"string","uniqueKey":"data.system_custom.oneOf.11.slug","typeLabel":"enum\u003cstring>"}},"uniqueKey":"data.system_custom.oneOf.11","typeLabel":"HibobSystemCustom · object"},{"type":"object","title":"HogiaOpenHrSystemCustomSchema","description":"Custom configuration for Hogia Open HR File system integrations.","required":["slug"],"properties":{"slug":{"enum":["hogia_open_hr"],"nullable":false,"type":"string","isRequired":true,"uniqueKey":"data.system_custom.oneOf.12.slug","typeLabel":"enum\u003cstring>"}},"uniqueKey":"data.system_custom.oneOf.12","typeLabel":"HogiaOpenHrSystemCustomSchema · object"},{"type":"object","title":"HogiaPlusHrSystemCustomSchema","description":"Custom configuration for Hogia Plus HR File system integrations.","required":["slug"],"properties":{"slug":{"enum":["hogia_file"],"nullable":false,"type":"string","isRequired":true,"uniqueKey":"data.system_custom.oneOf.13.slug","typeLabel":"enum\u003cstring>"}},"uniqueKey":"data.system_custom.oneOf.13","typeLabel":"HogiaPlusHrSystemCustomSchema · object"},{"type":"object","title":"HumaHrSystemCustom","description":"Custom configuration for Huma HR File system integrations.","required":["slug"],"properties":{"slug":{"enum":["huma_hr"],"nullable":false,"type":"string","isRequired":true,"uniqueKey":"data.system_custom.oneOf.14.slug","typeLabel":"enum\u003cstring>"},"demo_api":{"oneOf":[{"description":"When true, API calls target Huma's demo environment (demo.openapi.humahr.com) instead of production. Off by default.","type":"boolean","uniqueKey":"data.system_custom.oneOf.14.demo_api.oneOf.0","typeLabel":"boolean"},{"description":"When true, API calls target Huma's demo environment (demo.openapi.humahr.com) instead of production. Off by default.","type":"null","uniqueKey":"data.system_custom.oneOf.14.demo_api.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.14.demo_api","typeLabel":"boolean | null"},"last_legacy_webhook_at":{"oneOf":[{"description":"Read-only: when the most recent webhook arrived on the legacy front endpoint. Null once a webhook arrives on the canonical perimeter endpoint.","format":"date-time","type":"string","uniqueKey":"data.system_custom.oneOf.14.last_legacy_webhook_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"description":"Read-only: when the most recent webhook arrived on the legacy front endpoint. Null once a webhook arrives on the canonical perimeter endpoint.","format":"date-time","type":"null","uniqueKey":"data.system_custom.oneOf.14.last_legacy_webhook_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.14.last_legacy_webhook_at","typeLabel":"string\u003cdate-time> | null"},"legacy_webhook_endpoint":{"oneOf":[{"description":"Read-only signal: true when webhooks are still arriving on the legacy front endpoint rather than the canonical perimeter endpoint. Cleared automatically once a webhook arrives on the canonical endpoint.","type":"boolean","uniqueKey":"data.system_custom.oneOf.14.legacy_webhook_endpoint.oneOf.0","typeLabel":"boolean"},{"description":"Read-only signal: true when webhooks are still arriving on the legacy front endpoint rather than the canonical perimeter endpoint. Cleared automatically once a webhook arrives on the canonical endpoint.","type":"null","uniqueKey":"data.system_custom.oneOf.14.legacy_webhook_endpoint.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.14.legacy_webhook_endpoint","typeLabel":"boolean | null"},"use_webhook_data":{"oneOf":[{"description":"Temporary migration toggle. When true, webhook payloads carry and drive data directly. When false and API credentials are configured, webhooks only trigger an API-backed sync.","type":"boolean","uniqueKey":"data.system_custom.oneOf.14.use_webhook_data.oneOf.0","typeLabel":"boolean"},{"description":"Temporary migration toggle. When true, webhook payloads carry and drive data directly. When false and API credentials are configured, webhooks only trigger an API-backed sync.","type":"null","uniqueKey":"data.system_custom.oneOf.14.use_webhook_data.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.14.use_webhook_data","typeLabel":"boolean | null"}},"uniqueKey":"data.system_custom.oneOf.14","typeLabel":"HumaHrSystemCustom · object"},{"type":"object","title":"JsonFileSystemCustom","description":"Custom configuration for JSON file system integrations.","properties":{"input_shape":{"description":"How records are read: top-level `array`, `wrapped` array (see records_path), or `jsonl`.","enum":["array","wrapped","jsonl"],"type":"string","uniqueKey":"data.system_custom.oneOf.15.input_shape","typeLabel":"enum\u003cstring>"},"link_path":{"oneOf":[{"description":"Optional JSONPath (per record) used as the entity link id.","type":"string","uniqueKey":"data.system_custom.oneOf.15.link_path.oneOf.0","typeLabel":"string"},{"description":"Optional JSONPath (per record) used as the entity link id.","type":"null","uniqueKey":"data.system_custom.oneOf.15.link_path.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.15.link_path","typeLabel":"string | null"},"output_records_key":{"oneOf":[{"description":"For output_shape `wrapped`: the key the records array is nested under.","type":"string","uniqueKey":"data.system_custom.oneOf.15.output_records_key.oneOf.0","typeLabel":"string"},{"description":"For output_shape `wrapped`: the key the records array is nested under.","type":"null","uniqueKey":"data.system_custom.oneOf.15.output_records_key.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.15.output_records_key","typeLabel":"string | null"},"output_shape":{"description":"Shape of the exported file.","enum":["array","wrapped","jsonl"],"type":"string","uniqueKey":"data.system_custom.oneOf.15.output_shape","typeLabel":"enum\u003cstring>"},"records_path":{"oneOf":[{"description":"For input_shape `wrapped`: JSONPath to the records array (e.g. `$.employees`).","type":"string","uniqueKey":"data.system_custom.oneOf.15.records_path.oneOf.0","typeLabel":"string"},{"description":"For input_shape `wrapped`: JSONPath to the records array (e.g. `$.employees`).","type":"null","uniqueKey":"data.system_custom.oneOf.15.records_path.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.15.records_path","typeLabel":"string | null"},"slug":{"enum":["json_file"],"nullable":false,"type":"string","uniqueKey":"data.system_custom.oneOf.15.slug","typeLabel":"enum\u003cstring>"},"sources":{"description":"The field sources exposed to the property mapper.","items":{"description":"A group of fields read from each record (scalar) or from a nested array (list).","properties":{"base_path":{"oneOf":[{"description":"List sources only: JSONPath (per record) selecting the array elements.","type":"string","uniqueKey":"data.system_custom.oneOf.15.sources.items.[INDEX].base_path.oneOf.0","typeLabel":"string"},{"description":"List sources only: JSONPath (per record) selecting the array elements.","type":"null","uniqueKey":"data.system_custom.oneOf.15.sources.items.[INDEX].base_path.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.15.sources.items.[INDEX].base_path","typeLabel":"string | null"},"end_date_path":{"oneOf":[{"description":"JSONPath whose value becomes the (exclusive) end-date on every DatedProperty.","type":"string","uniqueKey":"data.system_custom.oneOf.15.sources.items.[INDEX].end_date_path.oneOf.0","typeLabel":"string"},{"description":"JSONPath whose value becomes the (exclusive) end-date on every DatedProperty.","type":"null","uniqueKey":"data.system_custom.oneOf.15.sources.items.[INDEX].end_date_path.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.15.sources.items.[INDEX].end_date_path","typeLabel":"string | null"},"fields":{"description":"The fields exposed by this source.","items":{"description":"A single mappable field within a JSON file source.","properties":{"id":{"oneOf":[{"description":"Stable id for the field; generated server-side if omitted.","type":"string","uniqueKey":"data.system_custom.oneOf.15.sources.items.[INDEX].fields.items.[INDEX].id.oneOf.0","typeLabel":"string"},{"description":"Stable id for the field; generated server-side if omitted.","type":"null","uniqueKey":"data.system_custom.oneOf.15.sources.items.[INDEX].fields.items.[INDEX].id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.15.sources.items.[INDEX].fields.items.[INDEX].id","typeLabel":"string | null"},"name":{"oneOf":[{"description":"Display name shown in the property mapper.","type":"string","uniqueKey":"data.system_custom.oneOf.15.sources.items.[INDEX].fields.items.[INDEX].name.oneOf.0","typeLabel":"string"},{"description":"Display name shown in the property mapper.","type":"null","uniqueKey":"data.system_custom.oneOf.15.sources.items.[INDEX].fields.items.[INDEX].name.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.15.sources.items.[INDEX].fields.items.[INDEX].name","typeLabel":"string | null"},"path":{"oneOf":[{"description":"JSONPath to the value, relative to the record (scalar source) or to each array element (list source).","type":"string","uniqueKey":"data.system_custom.oneOf.15.sources.items.[INDEX].fields.items.[INDEX].path.oneOf.0","typeLabel":"string"},{"description":"JSONPath to the value, relative to the record (scalar source) or to each array element (list source).","type":"null","uniqueKey":"data.system_custom.oneOf.15.sources.items.[INDEX].fields.items.[INDEX].path.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.15.sources.items.[INDEX].fields.items.[INDEX].path","typeLabel":"string | null"}},"title":"JsonFileCustomField","type":"object","uniqueKey":"data.system_custom.oneOf.15.sources.items.[INDEX].fields.items.[INDEX]","typeLabel":"JsonFileCustomField · object"},"type":"array","uniqueKey":"data.system_custom.oneOf.15.sources.items.[INDEX].fields","typeLabel":"JsonFileCustomField · object[]"},"id":{"oneOf":[{"description":"Stable id for the source; generated server-side if omitted.","type":"string","uniqueKey":"data.system_custom.oneOf.15.sources.items.[INDEX].id.oneOf.0","typeLabel":"string"},{"description":"Stable id for the source; generated server-side if omitted.","type":"null","uniqueKey":"data.system_custom.oneOf.15.sources.items.[INDEX].id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.15.sources.items.[INDEX].id","typeLabel":"string | null"},"id_path":{"oneOf":[{"description":"JSONPath whose value becomes the `id` on every DatedProperty (groups parallel value histories).","type":"string","uniqueKey":"data.system_custom.oneOf.15.sources.items.[INDEX].id_path.oneOf.0","typeLabel":"string"},{"description":"JSONPath whose value becomes the `id` on every DatedProperty (groups parallel value histories).","type":"null","uniqueKey":"data.system_custom.oneOf.15.sources.items.[INDEX].id_path.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.15.sources.items.[INDEX].id_path","typeLabel":"string | null"},"ignore":{"oneOf":[{"description":"Skip this source when parsing.","type":"boolean","uniqueKey":"data.system_custom.oneOf.15.sources.items.[INDEX].ignore.oneOf.0","typeLabel":"boolean"},{"description":"Skip this source when parsing.","type":"null","uniqueKey":"data.system_custom.oneOf.15.sources.items.[INDEX].ignore.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.15.sources.items.[INDEX].ignore","typeLabel":"boolean | null"},"kind":{"description":"`scalar` reads fields off each record; `list` iterates a nested array.","enum":["scalar","list"],"type":"string","uniqueKey":"data.system_custom.oneOf.15.sources.items.[INDEX].kind","typeLabel":"enum\u003cstring>"},"name":{"oneOf":[{"description":"Display name of the source.","type":"string","uniqueKey":"data.system_custom.oneOf.15.sources.items.[INDEX].name.oneOf.0","typeLabel":"string"},{"description":"Display name of the source.","type":"null","uniqueKey":"data.system_custom.oneOf.15.sources.items.[INDEX].name.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.15.sources.items.[INDEX].name","typeLabel":"string | null"},"start_date_path":{"oneOf":[{"description":"JSONPath whose value becomes `valid_from` on every DatedProperty.","type":"string","uniqueKey":"data.system_custom.oneOf.15.sources.items.[INDEX].start_date_path.oneOf.0","typeLabel":"string"},{"description":"JSONPath whose value becomes `valid_from` on every DatedProperty.","type":"null","uniqueKey":"data.system_custom.oneOf.15.sources.items.[INDEX].start_date_path.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.15.sources.items.[INDEX].start_date_path","typeLabel":"string | null"}},"title":"JsonFileCustomSource","type":"object","uniqueKey":"data.system_custom.oneOf.15.sources.items.[INDEX]","typeLabel":"JsonFileCustomSource · object"},"type":"array","uniqueKey":"data.system_custom.oneOf.15.sources","typeLabel":"JsonFileCustomSource · object[]"}},"uniqueKey":"data.system_custom.oneOf.15","typeLabel":"JsonFileSystemCustom · object"},{"type":"object","title":"KleerSystemCustom","description":"Custom configuration for Kleer system integrations.","properties":{"new_customer_project_default_name":{"oneOf":[{"description":"Default name for new customer projects.","type":"string","uniqueKey":"data.system_custom.oneOf.16.new_customer_project_default_name.oneOf.0","typeLabel":"string"},{"description":"Default name for new customer projects.","type":"null","uniqueKey":"data.system_custom.oneOf.16.new_customer_project_default_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.16.new_customer_project_default_name","typeLabel":"string | null"},"slug":{"enum":["pe_accounting"],"nullable":false,"type":"string","uniqueKey":"data.system_custom.oneOf.16.slug","typeLabel":"enum\u003cstring>"},"sync_new_customer_project":{"oneOf":[{"default":false,"description":"Whether to sync new customer projects.","type":"boolean","uniqueKey":"data.system_custom.oneOf.16.sync_new_customer_project.oneOf.0","typeLabel":"boolean"},{"default":false,"description":"Whether to sync new customer projects.","type":"null","uniqueKey":"data.system_custom.oneOf.16.sync_new_customer_project.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.16.sync_new_customer_project","typeLabel":"boolean | null"},"use_test_api":{"oneOf":[{"default":true,"description":"Whether to use Kleer's test API.","type":"boolean","uniqueKey":"data.system_custom.oneOf.16.use_test_api.oneOf.0","typeLabel":"boolean"},{"default":true,"description":"Whether to use Kleer's test API.","type":"null","uniqueKey":"data.system_custom.oneOf.16.use_test_api.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.16.use_test_api","typeLabel":"boolean | null"},"variable_pay_date_range_end":{"oneOf":[{"description":"Day of month to end syncing variable pay.","type":"integer","uniqueKey":"data.system_custom.oneOf.16.variable_pay_date_range_end.oneOf.0","typeLabel":"integer"},{"description":"Day of month to end syncing variable pay.","type":"null","uniqueKey":"data.system_custom.oneOf.16.variable_pay_date_range_end.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.16.variable_pay_date_range_end","typeLabel":"integer | null"},"variable_pay_date_range_start":{"oneOf":[{"description":"Day of month to start syncing variable pay.","type":"integer","uniqueKey":"data.system_custom.oneOf.16.variable_pay_date_range_start.oneOf.0","typeLabel":"integer"},{"description":"Day of month to start syncing variable pay.","type":"null","uniqueKey":"data.system_custom.oneOf.16.variable_pay_date_range_start.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.16.variable_pay_date_range_start","typeLabel":"integer | null"}},"uniqueKey":"data.system_custom.oneOf.16","typeLabel":"KleerSystemCustom · object"},{"type":"object","title":"KontekSystemCustom","description":"Custom configuration for Kontek system integrations.","required":["slug"],"properties":{"slug":{"enum":["kontek"],"nullable":false,"type":"string","isRequired":true,"uniqueKey":"data.system_custom.oneOf.17.slug","typeLabel":"enum\u003cstring>"}},"uniqueKey":"data.system_custom.oneOf.17","typeLabel":"KontekSystemCustom · object"},{"type":"object","title":"ManualDownloadSystemCustom","description":"Custom configuration for manual_download file_area integrations.","properties":{"notification_emails":{"oneOf":[{"description":"Email addresses to notify when a new file becomes available for download. Dispatch is not yet enabled.","items":{"type":"string","uniqueKey":"data.system_custom.oneOf.18.notification_emails.oneOf.0.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"data.system_custom.oneOf.18.notification_emails.oneOf.0","typeLabel":"string[]"},{"description":"Email addresses to notify when a new file becomes available for download. Dispatch is not yet enabled.","items":{"type":"string"},"type":"null","uniqueKey":"data.system_custom.oneOf.18.notification_emails.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.18.notification_emails","typeLabel":"string[] | null"},"retention_days":{"oneOf":[{"default":30,"description":"Number of days generated files are retained in internal storage and available for download.","maximum":365,"minimum":1,"type":"integer","uniqueKey":"data.system_custom.oneOf.18.retention_days.oneOf.0","typeLabel":"integer"},{"default":30,"description":"Number of days generated files are retained in internal storage and available for download.","maximum":365,"minimum":1,"type":"null","uniqueKey":"data.system_custom.oneOf.18.retention_days.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.18.retention_days","typeLabel":"integer | null"},"slug":{"enum":["manual_download"],"nullable":false,"type":"string","uniqueKey":"data.system_custom.oneOf.18.slug","typeLabel":"enum\u003cstring>"}},"uniqueKey":"data.system_custom.oneOf.18","typeLabel":"ManualDownloadSystemCustom · object"},{"type":"object","title":"ManualUploadSystemCustom","description":"Custom configuration for manual_upload file_area integrations.","properties":{"max_upload_bytes":{"oneOf":[{"description":"Largest file, in bytes, that can be uploaded on this integration. Lowers the platform limit of 50 MiB; it cannot raise it.","minimum":1,"type":"integer","uniqueKey":"data.system_custom.oneOf.19.max_upload_bytes.oneOf.0","typeLabel":"integer"},{"description":"Largest file, in bytes, that can be uploaded on this integration. Lowers the platform limit of 50 MiB; it cannot raise it.","minimum":1,"type":"null","uniqueKey":"data.system_custom.oneOf.19.max_upload_bytes.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.19.max_upload_bytes","typeLabel":"integer | null"},"slug":{"enum":["manual_upload"],"nullable":false,"type":"string","uniqueKey":"data.system_custom.oneOf.19.slug","typeLabel":"enum\u003cstring>"}},"uniqueKey":"data.system_custom.oneOf.19","typeLabel":"ManualUploadSystemCustom · object"},{"type":"object","title":"PaxmlSystemCustom","description":"Custom configuration for Paxml system integrations.","properties":{"report_date_range_strategy":{"oneOf":[{"description":"The report date range parsing strategy to use for this integration.","enum":["auto","header","range","range_rounded"],"type":"string","uniqueKey":"data.system_custom.oneOf.20.report_date_range_strategy.oneOf.0","typeLabel":"enum\u003cstring>"},{"description":"The report date range parsing strategy to use for this integration.","enum":["auto","header","range","range_rounded"],"type":"null","uniqueKey":"data.system_custom.oneOf.20.report_date_range_strategy.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.20.report_date_range_strategy","typeLabel":"enum\u003cstring> | null"},"slug":{"enum":["paxml"],"nullable":false,"type":"string","uniqueKey":"data.system_custom.oneOf.20.slug","typeLabel":"enum\u003cstring>"}},"uniqueKey":"data.system_custom.oneOf.20","typeLabel":"PaxmlSystemCustom · object"},{"type":"object","title":"PeopleCoreSystemCustom","description":"Custom configuration for PeopleCore system integrations.","properties":{"scopes":{"oneOf":[{"description":"The permission scopes to use for this integration.","items":{"type":"string","uniqueKey":"data.system_custom.oneOf.21.scopes.oneOf.0.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"data.system_custom.oneOf.21.scopes.oneOf.0","typeLabel":"string[]"},{"description":"The permission scopes to use for this integration.","items":{"type":"string"},"type":"null","uniqueKey":"data.system_custom.oneOf.21.scopes.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.21.scopes","typeLabel":"string[] | null"},"slug":{"enum":["people_core"],"nullable":false,"type":"string","uniqueKey":"data.system_custom.oneOf.21.slug","typeLabel":"enum\u003cstring>"}},"uniqueKey":"data.system_custom.oneOf.21","typeLabel":"PeopleCoreSystemCustom · object"},{"type":"object","title":"PersonioSystemCustom","description":"Custom configuration for Personio system integrations.","properties":{"compensation_history_months":{"oneOf":[{"default":0,"description":"How many months of compensation history to retrieve, counting back from the current month. Personio caps a single compensation query at one calendar month, so each month is fetched separately.","type":"integer","uniqueKey":"data.system_custom.oneOf.22.compensation_history_months.oneOf.0","typeLabel":"integer"},{"default":0,"description":"How many months of compensation history to retrieve, counting back from the current month. Personio caps a single compensation query at one calendar month, so each month is fetched separately.","type":"null","uniqueKey":"data.system_custom.oneOf.22.compensation_history_months.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.22.compensation_history_months","typeLabel":"integer | null"},"has_compensation_anchor_engine":{"default":false,"description":"Whether a compensation anchor engine is configured. The engine derives a per-employee start date for the compensation window and is edited in the app, not over this API.","readOnly":true,"type":"boolean","uniqueKey":"data.system_custom.oneOf.22.has_compensation_anchor_engine","typeLabel":"boolean"},"partner_id":{"oneOf":[{"description":"The Personio partner ID to use for this integration.","type":"string","uniqueKey":"data.system_custom.oneOf.22.partner_id.oneOf.0","typeLabel":"string"},{"description":"The Personio partner ID to use for this integration.","type":"null","uniqueKey":"data.system_custom.oneOf.22.partner_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.22.partner_id","typeLabel":"string | null"},"slug":{"enum":["personio"],"nullable":false,"type":"string","uniqueKey":"data.system_custom.oneOf.22.slug","typeLabel":"enum\u003cstring>"}},"uniqueKey":"data.system_custom.oneOf.22","typeLabel":"PersonioSystemCustom · object"},{"type":"object","title":"S3SystemCustom","description":"Custom configuration for S3 system integrations.","properties":{"s3_host":{"oneOf":[{"description":"The S3 host to connect to.","type":"string","uniqueKey":"data.system_custom.oneOf.23.s3_host.oneOf.0","typeLabel":"string"},{"description":"The S3 host to connect to.","type":"null","uniqueKey":"data.system_custom.oneOf.23.s3_host.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.23.s3_host","typeLabel":"string | null"},"s3_region":{"oneOf":[{"default":"us-east-1","description":"The S3 region to connect to.","type":"string","uniqueKey":"data.system_custom.oneOf.23.s3_region.oneOf.0","typeLabel":"string"},{"default":"us-east-1","description":"The S3 region to connect to.","type":"null","uniqueKey":"data.system_custom.oneOf.23.s3_region.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.23.s3_region","typeLabel":"string | null"},"slug":{"enum":["s3"],"nullable":false,"type":"string","uniqueKey":"data.system_custom.oneOf.23.slug","typeLabel":"enum\u003cstring>"}},"uniqueKey":"data.system_custom.oneOf.23","typeLabel":"S3SystemCustom · object"},{"type":"object","title":"SftpSystemCustom","description":"Custom configuration for SFTP system integrations.","properties":{"auth_method":{"default":"password","description":"How Twine authenticates: `password` uses `api_client_secret`, `ssh_key` uses the private key in `api_key`. Changing it clears the other method's secret.","enum":["password","ssh_key"],"type":"string","uniqueKey":"data.system_custom.oneOf.24.auth_method","typeLabel":"enum\u003cstring>"},"sftp_host":{"oneOf":[{"description":"The SFTP host to connect to.","type":"string","uniqueKey":"data.system_custom.oneOf.24.sftp_host.oneOf.0","typeLabel":"string"},{"description":"The SFTP host to connect to.","type":"null","uniqueKey":"data.system_custom.oneOf.24.sftp_host.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.24.sftp_host","typeLabel":"string | null"},"sftp_port":{"oneOf":[{"default":22,"description":"The SFTP port to connect to.","type":"integer","uniqueKey":"data.system_custom.oneOf.24.sftp_port.oneOf.0","typeLabel":"integer"},{"default":22,"description":"The SFTP port to connect to.","type":"null","uniqueKey":"data.system_custom.oneOf.24.sftp_port.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.24.sftp_port","typeLabel":"integer | null"},"slug":{"enum":["sftp"],"nullable":false,"type":"string","uniqueKey":"data.system_custom.oneOf.24.slug","typeLabel":"enum\u003cstring>"}},"uniqueKey":"data.system_custom.oneOf.24","typeLabel":"SftpSystemCustom · object"},{"type":"object","title":"SimployerOneSystemCustom","description":"Custom configuration for SimployerOne system integrations.","properties":{"slug":{"enum":["alexis_hr"],"nullable":false,"type":"string","uniqueKey":"data.system_custom.oneOf.25.slug","typeLabel":"enum\u003cstring>"}},"uniqueKey":"data.system_custom.oneOf.25","typeLabel":"SimployerOneSystemCustom · object"},{"type":"object","title":"SkovikSystemCustom","description":"Custom configuration for Skovik system integrations.","required":["slug"],"properties":{"slug":{"enum":["skovik"],"nullable":false,"type":"string","isRequired":true,"uniqueKey":"data.system_custom.oneOf.26.slug","typeLabel":"enum\u003cstring>"}},"uniqueKey":"data.system_custom.oneOf.26","typeLabel":"SkovikSystemCustom · object"},{"type":"object","title":"TeamtailorSystemCustom","description":"Custom configuration for Teamtailor system integrations.","properties":{"filter_on_stage_types":{"oneOf":[{"description":"The authentication scheme to use for this Teamtailor integration.","enum":["basic","bearer"],"type":"string","uniqueKey":"data.system_custom.oneOf.27.filter_on_stage_types.oneOf.0","typeLabel":"enum\u003cstring>"},{"description":"The authentication scheme to use for this Teamtailor integration.","enum":["basic","bearer"],"type":"null","uniqueKey":"data.system_custom.oneOf.27.filter_on_stage_types.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.27.filter_on_stage_types","typeLabel":"enum\u003cstring> | null"},"slug":{"enum":["teamtailor"],"nullable":false,"type":"string","uniqueKey":"data.system_custom.oneOf.27.slug","typeLabel":"enum\u003cstring>"}},"uniqueKey":"data.system_custom.oneOf.27","typeLabel":"TeamtailorSystemCustom · object"},{"type":"object","title":"TwentyFourSevenSystemCustom","description":"Custom configuration for Twenty Four Seven system integrations.","required":["slug"],"properties":{"slug":{"enum":["twenty_four_seven"],"nullable":false,"type":"string","isRequired":true,"uniqueKey":"data.system_custom.oneOf.28.slug","typeLabel":"enum\u003cstring>"},"absence_replication":{"oneOf":[{"description":"Absence replication configuration for V2 pipeline.","properties":{"group_by_field":{"oneOf":[{"description":"Field used to group consecutive absences.","enum":["comment","source_external_id","source_external_ids","target_time_type_id"],"type":"string","uniqueKey":"data.system_custom.oneOf.28.absence_replication.oneOf.0.group_by_field.oneOf.0","typeLabel":"enum\u003cstring>"},{"description":"Field used to group consecutive absences.","enum":["comment","source_external_id","source_external_ids","target_time_type_id"],"type":"null","uniqueKey":"data.system_custom.oneOf.28.absence_replication.oneOf.0.group_by_field.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.28.absence_replication.oneOf.0.group_by_field","typeLabel":"enum\u003cstring> | null"},"group_consecutive":{"oneOf":[{"description":"Whether to merge consecutive daily TimeReports sharing the grouping field into a single Payday absence.","type":"boolean","uniqueKey":"data.system_custom.oneOf.28.absence_replication.oneOf.0.group_consecutive.oneOf.0","typeLabel":"boolean"},{"description":"Whether to merge consecutive daily TimeReports sharing the grouping field into a single Payday absence.","type":"null","uniqueKey":"data.system_custom.oneOf.28.absence_replication.oneOf.0.group_consecutive.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.28.absence_replication.oneOf.0.group_consecutive","typeLabel":"boolean | null"}},"title":"TwentyFourSevenAbsenceReplication","type":"object","uniqueKey":"data.system_custom.oneOf.28.absence_replication.oneOf.0","typeLabel":"TwentyFourSevenAbsenceReplication · object"},{"description":"Absence replication configuration for V2 pipeline.","properties":{"group_by_field":{"oneOf":[{"description":"Field used to group consecutive absences.","enum":["comment","source_external_id","source_external_ids","target_time_type_id"],"type":"string"},{"description":"Field used to group consecutive absences.","enum":["comment","source_external_id","source_external_ids","target_time_type_id"],"type":"null"}]},"group_consecutive":{"oneOf":[{"description":"Whether to merge consecutive daily TimeReports sharing the grouping field into a single Payday absence.","type":"boolean"},{"description":"Whether to merge consecutive daily TimeReports sharing the grouping field into a single Payday absence.","type":"null"}]}},"title":"TwentyFourSevenAbsenceReplication","type":"null","uniqueKey":"data.system_custom.oneOf.28.absence_replication.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.28.absence_replication","typeLabel":"TwentyFourSevenAbsenceReplication · object | null"},"country_code":{"oneOf":[{"description":"Auto-detected from Payday's organization endpoint on credential save. Drives country-specific V2 payload handling.","enum":["SE","NO"],"type":"string","uniqueKey":"data.system_custom.oneOf.28.country_code.oneOf.0","typeLabel":"enum\u003cstring>"},{"description":"Auto-detected from Payday's organization endpoint on credential save. Drives country-specific V2 payload handling.","enum":["SE","NO"],"type":"null","uniqueKey":"data.system_custom.oneOf.28.country_code.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.28.country_code","typeLabel":"enum\u003cstring> | null"},"defer_employment_end_date":{"oneOf":[{"deprecated":true,"description":"Deprecated, use employment_end_date_policy. Read as `defer` when no policy is set.","type":"boolean","uniqueKey":"data.system_custom.oneOf.28.defer_employment_end_date.oneOf.0","typeLabel":"boolean"},{"deprecated":true,"description":"Deprecated, use employment_end_date_policy. Read as `defer` when no policy is set.","type":"null","uniqueKey":"data.system_custom.oneOf.28.defer_employment_end_date.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.28.defer_employment_end_date","typeLabel":"boolean | null"},"designate_primary_employment":{"oneOf":[{"description":"Whether Twine designates the primary employment for each employee.","type":"boolean","uniqueKey":"data.system_custom.oneOf.28.designate_primary_employment.oneOf.0","typeLabel":"boolean"},{"description":"Whether Twine designates the primary employment for each employee.","type":"null","uniqueKey":"data.system_custom.oneOf.28.designate_primary_employment.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.28.designate_primary_employment","typeLabel":"boolean | null"},"employment_end_date_offset":{"oneOf":[{"description":"How far ahead of today an employment end date may fall and still be written, when end date deferral is enabled.","properties":{"day":{"oneOf":[{"default":0,"type":"integer","uniqueKey":"data.system_custom.oneOf.28.employment_end_date_offset.oneOf.0.day.oneOf.0","typeLabel":"integer"},{"default":0,"type":"null","uniqueKey":"data.system_custom.oneOf.28.employment_end_date_offset.oneOf.0.day.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.28.employment_end_date_offset.oneOf.0.day","typeLabel":"integer | null"},"month":{"oneOf":[{"default":0,"type":"integer","uniqueKey":"data.system_custom.oneOf.28.employment_end_date_offset.oneOf.0.month.oneOf.0","typeLabel":"integer"},{"default":0,"type":"null","uniqueKey":"data.system_custom.oneOf.28.employment_end_date_offset.oneOf.0.month.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.28.employment_end_date_offset.oneOf.0.month","typeLabel":"integer | null"},"week":{"oneOf":[{"default":0,"type":"integer","uniqueKey":"data.system_custom.oneOf.28.employment_end_date_offset.oneOf.0.week.oneOf.0","typeLabel":"integer"},{"default":0,"type":"null","uniqueKey":"data.system_custom.oneOf.28.employment_end_date_offset.oneOf.0.week.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.28.employment_end_date_offset.oneOf.0.week","typeLabel":"integer | null"},"year":{"oneOf":[{"default":0,"type":"integer","uniqueKey":"data.system_custom.oneOf.28.employment_end_date_offset.oneOf.0.year.oneOf.0","typeLabel":"integer"},{"default":0,"type":"null","uniqueKey":"data.system_custom.oneOf.28.employment_end_date_offset.oneOf.0.year.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.28.employment_end_date_offset.oneOf.0.year","typeLabel":"integer | null"}},"title":"TwentyFourSevenEmploymentEndDateOffset","type":"object","uniqueKey":"data.system_custom.oneOf.28.employment_end_date_offset.oneOf.0","typeLabel":"TwentyFourSevenEmploymentEndDateOffset · object"},{"description":"How far ahead of today an employment end date may fall and still be written, when end date deferral is enabled.","properties":{"day":{"oneOf":[{"default":0,"type":"integer"},{"default":0,"type":"null"}]},"month":{"oneOf":[{"default":0,"type":"integer"},{"default":0,"type":"null"}]},"week":{"oneOf":[{"default":0,"type":"integer"},{"default":0,"type":"null"}]},"year":{"oneOf":[{"default":0,"type":"integer"},{"default":0,"type":"null"}]}},"title":"TwentyFourSevenEmploymentEndDateOffset","type":"null","uniqueKey":"data.system_custom.oneOf.28.employment_end_date_offset.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.28.employment_end_date_offset","typeLabel":"TwentyFourSevenEmploymentEndDateOffset · object | null"},"employment_end_date_policy":{"oneOf":[{"description":"Who sets an employment's end date and reason in Payday. `write` (the default) sends them as soon as Twine has them; `defer` waits until the end date falls within employment_end_date_offset of today; `never` means Twine writes none and the customer sets them by hand.","enum":["write","defer","never"],"type":"string","uniqueKey":"data.system_custom.oneOf.28.employment_end_date_policy.oneOf.0","typeLabel":"enum\u003cstring>"},{"description":"Who sets an employment's end date and reason in Payday. `write` (the default) sends them as soon as Twine has them; `defer` waits until the end date falls within employment_end_date_offset of today; `never` means Twine writes none and the customer sets them by hand.","enum":["write","defer","never"],"type":"null","uniqueKey":"data.system_custom.oneOf.28.employment_end_date_policy.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.28.employment_end_date_policy","typeLabel":"enum\u003cstring> | null"},"merge_contiguous_employments":{"oneOf":[{"description":"Whether source employment periods that run contiguously and agree on every mapped field are sent to Payday as a single employment.","type":"boolean","uniqueKey":"data.system_custom.oneOf.28.merge_contiguous_employments.oneOf.0","typeLabel":"boolean"},{"description":"Whether source employment periods that run contiguously and agree on every mapped field are sent to Payday as a single employment.","type":"null","uniqueKey":"data.system_custom.oneOf.28.merge_contiguous_employments.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.28.merge_contiguous_employments","typeLabel":"boolean | null"},"primary_employment_date_offset":{"oneOf":[{"description":"Date offset applied when designating primary employment.","properties":{"day":{"oneOf":[{"default":0,"type":"integer","uniqueKey":"data.system_custom.oneOf.28.primary_employment_date_offset.oneOf.0.day.oneOf.0","typeLabel":"integer"},{"default":0,"type":"null","uniqueKey":"data.system_custom.oneOf.28.primary_employment_date_offset.oneOf.0.day.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.28.primary_employment_date_offset.oneOf.0.day","typeLabel":"integer | null"},"month":{"oneOf":[{"default":0,"type":"integer","uniqueKey":"data.system_custom.oneOf.28.primary_employment_date_offset.oneOf.0.month.oneOf.0","typeLabel":"integer"},{"default":0,"type":"null","uniqueKey":"data.system_custom.oneOf.28.primary_employment_date_offset.oneOf.0.month.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.28.primary_employment_date_offset.oneOf.0.month","typeLabel":"integer | null"},"week":{"oneOf":[{"default":0,"type":"integer","uniqueKey":"data.system_custom.oneOf.28.primary_employment_date_offset.oneOf.0.week.oneOf.0","typeLabel":"integer"},{"default":0,"type":"null","uniqueKey":"data.system_custom.oneOf.28.primary_employment_date_offset.oneOf.0.week.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.28.primary_employment_date_offset.oneOf.0.week","typeLabel":"integer | null"},"year":{"oneOf":[{"default":0,"type":"integer","uniqueKey":"data.system_custom.oneOf.28.primary_employment_date_offset.oneOf.0.year.oneOf.0","typeLabel":"integer"},{"default":0,"type":"null","uniqueKey":"data.system_custom.oneOf.28.primary_employment_date_offset.oneOf.0.year.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.28.primary_employment_date_offset.oneOf.0.year","typeLabel":"integer | null"}},"title":"TwentyFourSevenPrimaryEmploymentDateOffset","type":"object","uniqueKey":"data.system_custom.oneOf.28.primary_employment_date_offset.oneOf.0","typeLabel":"TwentyFourSevenPrimaryEmploymentDateOffset · object"},{"description":"Date offset applied when designating primary employment.","properties":{"day":{"oneOf":[{"default":0,"type":"integer"},{"default":0,"type":"null"}]},"month":{"oneOf":[{"default":0,"type":"integer"},{"default":0,"type":"null"}]},"week":{"oneOf":[{"default":0,"type":"integer"},{"default":0,"type":"null"}]},"year":{"oneOf":[{"default":0,"type":"integer"},{"default":0,"type":"null"}]}},"title":"TwentyFourSevenPrimaryEmploymentDateOffset","type":"null","uniqueKey":"data.system_custom.oneOf.28.primary_employment_date_offset.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.28.primary_employment_date_offset","typeLabel":"TwentyFourSevenPrimaryEmploymentDateOffset · object | null"},"use_v2_replication_pipeline":{"oneOf":[{"description":"Opt-in to the V2 replication pipeline. Requires country_code to be set.","type":"boolean","uniqueKey":"data.system_custom.oneOf.28.use_v2_replication_pipeline.oneOf.0","typeLabel":"boolean"},{"description":"Opt-in to the V2 replication pipeline. Requires country_code to be set.","type":"null","uniqueKey":"data.system_custom.oneOf.28.use_v2_replication_pipeline.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.system_custom.oneOf.28.use_v2_replication_pipeline","typeLabel":"boolean | null"}},"uniqueKey":"data.system_custom.oneOf.28","typeLabel":"TwentyFourSevenSystemCustom · object"},{"type":"object","title":"TimeRecorderSystemCustom","description":"Custom configuration for Time Recorder system integrations.","required":["slug"],"properties":{"slug":{"enum":["time_recorder"],"nullable":false,"type":"string","isRequired":true,"uniqueKey":"data.system_custom.oneOf.29.slug","typeLabel":"enum\u003cstring>"}},"uniqueKey":"data.system_custom.oneOf.29","typeLabel":"TimeRecorderSystemCustom · object"},{"type":"object","title":"TwineSystemCustom","description":"Custom configuration for Twine system integrations.","required":["slug"],"properties":{"slug":{"enum":["twine"],"nullable":false,"type":"string","isRequired":true,"uniqueKey":"data.system_custom.oneOf.30.slug","typeLabel":"enum\u003cstring>"}},"uniqueKey":"data.system_custom.oneOf.30","typeLabel":"TwineSystemCustom · object"}],"uniqueKey":"data.system_custom","typeLabel":"AgdaFileSystemCustom · object | AgdaPsSystemCustom · object | BambooHrSystemCustom · object | CaspecoSystemCustom · object | SpreadsheetSystemCustom · object | EntraIdSystemCustom · object | EvityHrSystemCustom · object | FlexHrmSystemCustom · object | FortnoxSystemCustom · object | GenericSystemCustom · object | HaileyHrSystemCustom · object | HibobSystemCustom · object | HogiaOpenHrSystemCustomSchema · object | HogiaPlusHrSystemCustomSchema · object | HumaHrSystemCustom · object | JsonFileSystemCustom · object | KleerSystemCustom · object | KontekSystemCustom · object | ManualDownloadSystemCustom · object | ManualUploadSystemCustom · object | PaxmlSystemCustom · object | PeopleCoreSystemCustom · object | PersonioSystemCustom · object | S3SystemCustom · object | SftpSystemCustom · object | SimployerOneSystemCustom · object | SkovikSystemCustom · object | TeamtailorSystemCustom · object | TwentyFourSevenSystemCustom · object | TimeRecorderSystemCustom · object | TwineSystemCustom · object"},"updated_at":{"description":"Timestamp of when the system integration was last updated","example":"2021-06-01T12:00:00Z","format":"date-time","type":"string","uniqueKey":"data.updated_at","typeLabel":"string\u003cdate-time>"}},"required":["id","org_id","system_id"],"title":"SystemIntegration","type":"object","isRequired":true,"uniqueKey":"data","typeLabel":"SystemIntegration · object"}},"required":["data"],"title":"SystemIntegrationResponse","type":"object","uniqueKey":"","typeLabel":"SystemIntegrationResponse · object"},"examples":{"Example":{"title":"Example","value":{"data":{"id":"018eae56-8f9d-7ca0-bea3-17f3db6cf75b","org_id":"018eae56-8f9d-7ca0-bea3-17f3db6cf75b","system_id":"018eae56-8f9d-7ca0-bea3-17f3db6cf75b","api_client_id":"018eae56-8f9d-7ca0-bea3-17f3db6cf75b","api_endpoint_url":"https://your-company.api.example.com/v1","domain_mappings":[{"enabled":true,"from_domain":"employee","id":"018eae56-8f9d-7ca0-bea3-17f3db6cf75b","org_id":"018eae56-8f9d-7ca0-bea3-17f3db6cf75b","source_system_integration_id":"018eae56-8f9d-7ca0-bea3-17f3db6cf75b","target_system_integration_id":"018eae56-8f9d-7ca0-bea3-17f3db6cf75b","to_domain":"employee","all_conditions_must_apply":false,"conditions":[{"apply_on_actions":["create"],"condition":{},"domain":"employee","enabled":true,"id":"018eae56-8f9d-7ca0-bea3-17f3db6cf75b","description":"\u003cstring>"}],"description":"Employees from the HR system into payroll","inserted_at":"2021-06-01T12:00:00Z","mode":"default","sync_triggers":[{"domain_mapping_id":"018eae56-8f9d-7ca0-bea3-17f3db6cf75b","id":"018eae56-8f9d-7ca0-bea3-17f3db6cf75b","org_id":"018eae56-8f9d-7ca0-bea3-17f3db6cf75b","system_integration_id":"018eae56-8f9d-7ca0-bea3-17f3db6cf75b","cron_expression":"0 0 * * *","domain_configuration":{"domain":"time_report","from_date":"2023-12-25","from_date_engine":{},"to_date":"2023-12-25","to_date_engine":{}},"last_sync_ended_at":"2023-01-01T00:00:00Z","last_sync_started_at":"2023-01-01T00:00:00Z","next_sync_at":"2023-01-01T00:00:00Z","parent_id":"018eae56-8f9d-7ca0-bea3-17f3db6cf75b"}],"updated_at":"2021-06-01T12:00:00Z"}],"external_org_id":"\u003cstring>","inserted_at":"2021-06-01T12:00:00Z","property_mappings":[{"common_domain":"employee","common_path":["salary_amount"],"id":"018eae56-8f9d-7ca0-bea3-17f3db6cf75b","org_id":"018eae56-8f9d-7ca0-bea3-17f3db6cf75b","system_domain":"employee","system_integration_id":"018eae56-8f9d-7ca0-bea3-17f3db6cf75b","system_path":["salaries","[]","amount"],"converters":[{"converter":"string_to_integer","pod_id":"018eae56-8f9d-7ca0-bea3-17f3db6cf75b"}],"enabled":true,"engine":{"domain":"employee","engine":{},"version":"2","description":"This engine maps properties from one format to another."},"reference_domain":"employee","version":2}],"system":{"id":"018eae56-8f9d-7ca0-bea3-17f3db6cf75b","kind":"other","name":"Evity HR","slug":"twine","description":"The Spreadsheet integration lets Twine exchange employee data as spreadsheet files...","domains":[{"capability":"read","domain":"employee"},{"capability":"write","domain":"time_report"}],"logo_url":"https://example.com/logos/system-logo.png","status":"available"},"system_custom":{"slug":"agda_file","change_lookback_enabled":true,"change_lookback_unit":"day","change_lookback_value":2,"company_no":"\u003cstring>","file_name_prefix":"\u003cstring>","salary_paycodes":["\u003cstring>"]},"updated_at":"2021-06-01T12:00:00Z"}}}},"exampleType":"generated"}},"description":"System Integration Response","exampleType":"generated"},"d0b6363d-6720-4d43-a95f-1f4e133f5e88":{"content":{"application/json":{"schema":{"description":"Bad request error","properties":{"code":{"example":400,"type":"integer","isRequired":true,"uniqueKey":"code","typeLabel":"integer"},"errors":{"default":[],"items":{"description":"Singular error","properties":{"domain":{"type":"string","isRequired":true,"uniqueKey":"errors.items.[INDEX].domain","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"errors.items.[INDEX].message","typeLabel":"string"},"reason":{"type":"string","isRequired":true,"uniqueKey":"errors.items.[INDEX].reason","typeLabel":"string"}},"required":["domain","reason","message"],"title":"InnerError","type":"object","uniqueKey":"errors.items.[INDEX]","typeLabel":"InnerError · object"},"type":"array","isRequired":true,"uniqueKey":"errors","typeLabel":"InnerError · object[]"},"message":{"example":"Bad Request","type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"}},"required":["code","message","errors"],"title":"BadRequestError","type":"object","uniqueKey":"","typeLabel":"BadRequestError · object"},"examples":{"Example":{"title":"Example","value":{"code":400,"errors":[],"message":"Bad Request"}}},"exampleType":"generated"}},"description":"Bad Request Response","exampleType":"generated"},"f7754493-b30d-41a5-a417-0c0093f4f5d7":{"content":{"application/json":{"schema":{"description":"Forbidden error","properties":{"code":{"example":403,"type":"integer","isRequired":true,"uniqueKey":"code","typeLabel":"integer"},"errors":{"default":[],"items":{"description":"Singular error","properties":{"domain":{"type":"string","isRequired":true,"uniqueKey":"errors.items.[INDEX].domain","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"errors.items.[INDEX].message","typeLabel":"string"},"reason":{"type":"string","isRequired":true,"uniqueKey":"errors.items.[INDEX].reason","typeLabel":"string"}},"required":["domain","reason","message"],"title":"InnerError","type":"object","uniqueKey":"errors.items.[INDEX]","typeLabel":"InnerError · object"},"type":"array","isRequired":true,"uniqueKey":"errors","typeLabel":"InnerError · object[]"},"message":{"example":"Forbidden","type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"}},"required":["code","message","errors"],"title":"ForbiddenError","type":"object","uniqueKey":"","typeLabel":"ForbiddenError · object"},"examples":{"Example":{"title":"Example","value":{"code":403,"errors":[],"message":"Forbidden"}}},"exampleType":"generated"}},"description":"Forbidden Response","exampleType":"generated"},"4f47456c-53cb-4599-845c-0685c649d025":{"content":{"application/json":{"schema":{"description":"Internal server error","properties":{"code":{"example":500,"type":"integer","isRequired":true,"uniqueKey":"code","typeLabel":"integer"},"errors":{"default":[],"items":{"description":"Singular error","properties":{"domain":{"type":"string","isRequired":true,"uniqueKey":"errors.items.[INDEX].domain","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"errors.items.[INDEX].message","typeLabel":"string"},"reason":{"type":"string","isRequired":true,"uniqueKey":"errors.items.[INDEX].reason","typeLabel":"string"}},"required":["domain","reason","message"],"title":"InnerError","type":"object","uniqueKey":"errors.items.[INDEX]","typeLabel":"InnerError · object"},"type":"array","isRequired":true,"uniqueKey":"errors","typeLabel":"InnerError · object[]"},"message":{"example":"Internal Server Error","type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"}},"required":["code","message","errors"],"title":"InternalServerError","type":"object","uniqueKey":"","typeLabel":"InternalServerError · object"},"examples":{"Example":{"title":"Example","value":{"code":500,"errors":[],"message":"Internal Server Error"}}},"exampleType":"generated"}},"description":"Internal Error Response","exampleType":"generated"}},"security":{"48248fe8-3acb-4be1-b40f-8384723ebc05":{"BearerAuth":{"bearerFormat":"JWT","description":"Bearer token for authentication","scheme":"bearer","type":"http","scopes":[],"schemeName":"BearerAuth"}}},"servers":{"9052e5c0-34df-47d4-8603-693bab08bcc0":{"description":"Twine Public Production API","url":"https://api.twine.se","variables":{}},"c9338b87-25eb-4aa8-b3fe-b99dae164f43":{"description":"Twine Public Staging API","url":"https://api-stage.twine.se","variables":{}}},"processedSecurityOptions":[{"schemes":[{"scheme":{"bearerFormat":"JWT","description":"Bearer token for authentication","scheme":"bearer","type":"http","scopes":[],"schemeName":"BearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Bearer token for authentication","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"BearerAuth","name":"Authorization"}],"title":"BearerAuth"}]},"originalFileLocation":"https://api.twine.se/spec/openapi.json"},"subdomain":"entwineab","siteName":"Twine Integrations","title":"Partially Update System Integration - Twine Integrations","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-14T11:25:09.634Z","originalFileLocation":"api-reference/systemintegrations/partially-update-system-integration.mdx"},"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=\"Updates the fields of a system integration that the request sends with a value. A field left out, or sent as null, keeps its stored value, and this holds inside auth and system_custom too. An integration can therefore be updated without knowing its secrets, for example when the customer entered them through a credentials link. Changing credentials requires the administrate action on the integration, not just update. Credentials are bound to the endpoint they were entered for. When an update changes where the integration connects (api_endpoint_url, or system_custom.s3_host / system_custom.sftp_host), the stored api_key and api_client_secret are cleared unless the same request sends them, whether new or unchanged; api_client_id is kept. If you do not hold the credentials, change the endpoint first and then create a credentials link for your customer.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Twine Integrations\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/entwineab/8LV-a3cLiAT4An4I/_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/entwineab/8LV-a3cLiAT4An4I/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/entwineab/8LV-a3cLiAT4An4I/_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/entwineab/8LV-a3cLiAT4An4I/_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/entwineab/8LV-a3cLiAT4An4I/_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/entwineab/8LV-a3cLiAT4An4I/_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/entwineab/8LV-a3cLiAT4An4I/_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/entwineab/8LV-a3cLiAT4An4I/_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/entwineab/8LV-a3cLiAT4An4I/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Partially Update System Integration - Twine Integrations\">\u003cmeta data-mint-head property=\"og:description\" content=\"Updates the fields of a system integration that the request sends with a value. A field left out, or sent as null, keeps its stored value, and this holds inside auth and system_custom too. An integration can therefore be updated without knowing its secrets, for example when the customer entered them through a credentials link. Changing credentials requires the administrate action on the integration, not just update. Credentials are bound to the endpoint they were entered for. When an update changes where the integration connects (api_endpoint_url, or system_custom.s3_host / system_custom.sftp_host), the stored api_key and api_client_secret are cleared unless the same request sends them, whether new or unchanged; api_client_id is kept. If you do not hold the credentials, change the endpoint first and then create a credentials link for your customer.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Twine Integrations\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.twine.se/api-reference/systemintegrations/partially-update-system-integration\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://entwineab.mintlify.app/_mintlify/api/og/v2?division=SystemIntegrations\u0026amp;title=Partially+Update+System+Integration\u0026amp;description=Updates+the+fields+of+a+system+integration+that+the+request+sends+with+a+value.+A+field+left%0Aout%2C+or+sent+as+%60null%60%2C+keeps+its+stored+value%2C+and+this+holds+insi\u0026amp;theme=30a0ce2375f0bc6afd332c94\u0026amp;signature=fe7a18d739acced67c521850a13e1d5adefd2d8c0e22acdd6a44608b9f55d02d\">\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=\"Partially Update System Integration - Twine Integrations\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Updates the fields of a system integration that the request sends with a value. A field left out, or sent as null, keeps its stored value, and this holds inside auth and system_custom too. An integration can therefore be updated without knowing its secrets, for example when the customer entered them through a credentials link. Changing credentials requires the administrate action on the integration, not just update. Credentials are bound to the endpoint they were entered for. When an update changes where the integration connects (api_endpoint_url, or system_custom.s3_host / system_custom.sftp_host), the stored api_key and api_client_secret are cleared unless the same request sends them, whether new or unchanged; api_client_id is kept. If you do not hold the credentials, change the endpoint first and then create a credentials link for your customer.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://entwineab.mintlify.app/_mintlify/api/og/v2?division=SystemIntegrations\u0026amp;title=Partially+Update+System+Integration\u0026amp;description=Updates+the+fields+of+a+system+integration+that+the+request+sends+with+a+value.+A+field+left%0Aout%2C+or+sent+as+%60null%60%2C+keeps+its+stored+value%2C+and+this+holds+insi\u0026amp;theme=30a0ce2375f0bc6afd332c94\u0026amp;signature=fe7a18d739acced67c521850a13e1d5adefd2d8c0e22acdd6a44608b9f55d02d\">\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/entwineab/8LV-a3cLiAT4An4I/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Twine Integrations\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#7600ff\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.twine.se/api-reference/systemintegrations/partially-update-system-integration\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/systemintegrations/partially-update-system-integration.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.twine.se/#organization\",\"name\":\"Twine Integrations\",\"url\":\"https://docs.twine.se\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/entwineab/W0WCY-b2dvTokvLn/logo/light.svg?fit=max\u0026auto=format\u0026n=W0WCY-b2dvTokvLn\u0026q=85\u0026s=7e70d0ec35e8816f98a512eafa2ad35b\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.twine.se#website\",\"name\":\"Twine Integrations\",\"url\":\"https://docs.twine.se\",\"publisher\":{\"@id\":\"https://docs.twine.se/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.twine.se/api-reference/systemintegrations/partially-update-system-integration#webpage\",\"url\":\"https://docs.twine.se/api-reference/systemintegrations/partially-update-system-integration\",\"name\":\"Partially Update System Integration\",\"description\":\"Updates the fields of a system integration that the request sends with a value. A field left out, or sent as null, keeps its stored value, and this holds inside auth and system_custom too. An integration can therefore be updated without knowing its secrets, for example when the customer entered them through a credentials link. Changing credentials requires the administrate action on the integration, not just update. Credentials are bound to the endpoint they were entered for. When an update changes where the integration connects (api_endpoint_url, or system_custom.s3_host / system_custom.sftp_host), the stored api_key and api_client_secret are cleared unless the same request sends them, whether new or unchanged; api_client_id is kept. If you do not hold the credentials, change the endpoint first and then create a credentials link for your customer.\",\"dateModified\":\"2026-10-14T11:25:09.634Z\",\"isPartOf\":{\"@id\":\"https://docs.twine.se#website\"},\"breadcrumb\":{\"@id\":\"https://docs.twine.se/api-reference/systemintegrations/partially-update-system-integration#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.twine.se/api-reference/systemintegrations/partially-update-system-integration#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"API Reference\",\"item\":\"https://docs.twine.se/api-reference/users/get-users\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"SystemIntegrations\",\"item\":\"https://docs.twine.se/api-reference/systemintegrations/get-system-integration\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Partially Update System Integration\",\"item\":\"https://docs.twine.se/api-reference/systemintegrations/partially-update-system-integration\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.twine.se/api-reference/systemintegrations/partially-update-system-integration#apireference\",\"headline\":\"Partially Update System Integration\",\"name\":\"Partially Update System Integration\",\"description\":\"Updates the fields of a system integration that the request sends with a value. A field left out, or sent as null, keeps its stored value, and this holds inside auth and system_custom too. An integration can therefore be updated without knowing its secrets, for example when the customer entered them through a credentials link. Changing credentials requires the administrate action on the integration, not just update. Credentials are bound to the endpoint they were entered for. When an update changes where the integration connects (api_endpoint_url, or system_custom.s3_host / system_custom.sftp_host), the stored api_key and api_client_secret are cleared unless the same request sends them, whether new or unchanged; api_client_id is kept. If you do not hold the credentials, change the endpoint first and then create a credentials link for your customer.\",\"url\":\"https://docs.twine.se/api-reference/systemintegrations/partially-update-system-integration\",\"mainEntityOfPage\":{\"@id\":\"https://docs.twine.se/api-reference/systemintegrations/partially-update-system-integration#webpage\"},\"dateModified\":\"2026-10-14T11:25:09.634Z\",\"publisher\":{\"@id\":\"https://docs.twine.se/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.twine.se#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Twine Integrations\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Twine Integrations","nav":{"global":{"anchors":[{"anchor":"twine.se","icon":"globe","href":"https://www.twine.se"}]},"tabs":[{"tab":"Overview","pages":[{"title":"Overview","href":"/overview"}]},{"tab":"Integrations","pages":[{"title":"Integrations","href":"/integrations"}]},{"tab":"Platform","pages":[{"title":"Platform","href":"/platform"}]},{"tab":"Backoffice","pages":[{"title":"Backoffice","href":"/backoffice"}]},{"tab":"Flow Engine","pages":[{"title":"Flow Engine","href":"/flow-engine"}]},{"tab":"Data Engine","pages":[{"title":"Data Engine","href":"/data-engine"}]},{"tab":"Changelog","pages":[{"title":"Changelog","href":"/changelog"}]},{"tab":"API Reference","groups":[{"group":"API Documentation","pages":[{"title":"Introduction","href":"/api-reference/introduction"},{"title":"Authentication","href":"/api-reference/authentication"},{"title":"Provisioning","href":"/api-reference/provisioning"},{"title":"Filtering and ordering","href":"/api-reference/filtering-and-ordering"},{"title":"Pushing data","href":"/api-reference/pushing-data"}]},{"group":"API Reference","pages":[{"group":"Users","pages":[{"title":"Get Users","deprecated":null,"version":null,"openapi":"https://api.twine.se/spec/openapi.json get /v1/org/users","href":"/api-reference/users/get-users"}]},{"group":"Competences","pages":[{"title":"Get Competence","deprecated":null,"version":null,"openapi":"https://api.twine.se/spec/openapi.json get /v1/org/competences/{competence_id}","href":"/api-reference/competences/get-competence"},{"title":"Replace Competence","deprecated":null,"version":null,"openapi":"https://api.twine.se/spec/openapi.json put /v1/org/competences/{competence_id}","href":"/api-reference/competences/replace-competence"},{"title":"Delete Competence","deprecated":null,"version":null,"openapi":"https://api.twine.se/spec/openapi.json delete /v1/org/competences/{competence_id}","href":"/api-reference/competences/delete-competence"},{"title":"Update Competence","deprecated":null,"version":null,"openapi":"https://api.twine.se/spec/openapi.json patch /v1/org/competences/{competence_id}","href":"/api-reference/competences/update-competence"},{"title":"Get Competences","deprecated":null,"version":null,"openapi":"https://api.twine.se/spec/openapi.json get /v1/org/competences","href":"/api-reference/competences/get-competences"},{"title":"Create Competence","deprecated":null,"version":null,"openapi":"https://api.twine.se/spec/openapi.json post /v1/org/competences","href":"/api-reference/competences/create-competence"}]},{"group":"Organizations","pages":[{"title":"Get organizations","deprecated":null,"version":null,"openapi":"https://api.twine.se/spec/openapi.json get /v1/org","href":"/api-reference/organizations/get-organizations"},{"title":"Create organization","deprecated":null,"version":null,"openapi":"https://api.twine.se/spec/openapi.json post /v1/org","href":"/api-reference/organizations/create-organization"},{"title":"Get organization","deprecated":null,"version":null,"openapi":"https://api.twine.se/spec/openapi.json get /v1/org/{org_id}","href":"/api-reference/organizations/get-organization"}]},{"group":"DomainMappings","pages":[{"title":"Delete Domain Mapping Sync Trigger","deprecated":null,"version":null,"openapi":"https://api.twine.se/spec/openapi.json delete /v1/org/domain-mappings/{domain_mapping_id}/sync-triggers/{sync_trigger_id}","href":"/api-reference/domainmappings/delete-domain-mapping-sync-trigger"},{"title":"Fire Domain Mapping Sync Trigger","deprecated":null,"version":null,"openapi":"https://api.twine.se/spec/openapi.json post /v1/org/domain-mappings/{domain_mapping_id}/sync-triggers/{sync_trigger_id}/fire","href":"/api-reference/domainmappings/fire-domain-mapping-sync-trigger"},{"title":"Get Domain Mapping","deprecated":null,"version":null,"openapi":"https://api.twine.se/spec/openapi.json get /v1/org/domain-mappings/{domain_mapping_id}","href":"/api-reference/domainmappings/get-domain-mapping"},{"title":"Update Domain Mapping","deprecated":null,"version":null,"openapi":"https://api.twine.se/spec/openapi.json put /v1/org/domain-mappings/{domain_mapping_id}","href":"/api-reference/domainmappings/update-domain-mapping"},{"title":"Delete Domain Mapping","deprecated":null,"version":null,"openapi":"https://api.twine.se/spec/openapi.json delete /v1/org/domain-mappings/{domain_mapping_id}","href":"/api-reference/domainmappings/delete-domain-mapping"},{"title":"Get Domain Mappings","deprecated":null,"version":null,"openapi":"https://api.twine.se/spec/openapi.json get /v1/org/domain-mappings","href":"/api-reference/domainmappings/get-domain-mappings"},{"title":"Create Domain Mapping","deprecated":null,"version":null,"openapi":"https://api.twine.se/spec/openapi.json post /v1/org/domain-mappings","href":"/api-reference/domainmappings/create-domain-mapping"}]},{"group":"SystemIntegrations","pages":[{"title":"Get System Integration","deprecated":null,"version":null,"openapi":"https://api.twine.se/spec/openapi.json get /v1/org/system-integrations/{id}","href":"/api-reference/systemintegrations/get-system-integration"},{"title":"Update System Integration","description":"Updates a system integration. Deprecated: use `PATCH /v1/org/system-integrations/{id}`, which\ndoes not require `auth` and `system_custom`.\n\n`auth` and `system_custom` are required, but a field sent as `null`, or left out of\n`system_custom`, keeps its stored value.\n\nChanging credentials requires the `administrate` action on the integration, not just `update`.\nA role with `update` alone may send `auth` with every field `null`, which leaves the stored\ncredentials as they are; any non-null `auth` field is refused with 403.\n\nCredentials are bound to the endpoint they were entered for. When an update changes where the integration connects (`api_endpoint_url`, or `system_custom.s3_host` / `system_custom.sftp_host`), the stored `api_key` and `api_client_secret` are cleared unless the same request sends them, whether new or unchanged; `api_client_id` is kept. Sending the current endpoint again, or one that differs only\nin whitespace, a trailing slash or letter case, keeps them.\n","deprecated":true,"version":null,"openapi":"https://api.twine.se/spec/openapi.json put /v1/org/system-integrations/{id}","href":"/api-reference/systemintegrations/update-system-integration"},{"title":"Partially Update System Integration","deprecated":null,"version":null,"openapi":"https://api.twine.se/spec/openapi.json patch /v1/org/system-integrations/{id}","href":"/api-reference/systemintegrations/partially-update-system-integration"},{"title":"Create Credentials Link","description":"Creates a link your customer opens to enter the credentials for a system integration themselves,\nwithout a Twine login. You never see what they enter.\n\nThe link collects credentials only. For a system whose API can live on any host (Flex HRM,\nAgda PS, S3, SFTP), set where the integration connects first (`api_endpoint_url`, or\n`system_custom.s3_host` / `system_custom.sftp_host`); until then this answers `422`. The form\nshows that value to your customer read-only.\n\nThe link is valid for 5 days and can be submitted once; create a new one if it expires or has\nbeen used. Creating one requires the `administrate` action on the integration, since whoever\nholds the link can set its credentials.\n","deprecated":null,"version":null,"openapi":"https://api.twine.se/spec/openapi.json post /v1/org/system-integrations/{id}/credentials-link","href":"/api-reference/systemintegrations/create-credentials-link"},{"title":"Get System Integration Fields","deprecated":null,"version":null,"openapi":"https://api.twine.se/spec/openapi.json get /v1/org/system-integrations/{id}/fields/{domain}","href":"/api-reference/systemintegrations/get-system-integration-fields"},{"title":"Get System Integrations","deprecated":null,"version":null,"openapi":"https://api.twine.se/spec/openapi.json get /v1/org/system-integrations","href":"/api-reference/systemintegrations/get-system-integrations"},{"title":"Create System Integration","deprecated":null,"version":null,"openapi":"https://api.twine.se/spec/openapi.json post /v1/org/system-integrations","href":"/api-reference/systemintegrations/create-system-integration"}]},{"group":"File Transfers","pages":[{"title":"Get File Transfers","deprecated":null,"version":null,"openapi":"https://api.twine.se/spec/openapi.json get /v1/org/file-transfers","href":"/api-reference/file-transfers/get-file-transfers"},{"title":"Upload File","deprecated":null,"version":null,"openapi":"https://api.twine.se/spec/openapi.json post /v1/org/file-transfers","href":"/api-reference/file-transfers/upload-file"},{"title":"Get File Transfer","deprecated":null,"version":null,"openapi":"https://api.twine.se/spec/openapi.json get /v1/org/file-transfers/{file_transfer_id}","href":"/api-reference/file-transfers/get-file-transfer"}]},{"group":"System Time Types","pages":[{"title":"Get System Time Type","deprecated":null,"version":null,"openapi":"https://api.twine.se/spec/openapi.json get /v1/org/time-reports/system-time-types/{system_integration_id}/{system_time_type_id}","href":"/api-reference/system-time-types/get-system-time-type"},{"title":"Update System Time Type","deprecated":null,"version":null,"openapi":"https://api.twine.se/spec/openapi.json put /v1/org/time-reports/system-time-types/{system_integration_id}/{system_time_type_id}","href":"/api-reference/system-time-types/update-system-time-type"},{"title":"Delete System Time Type","deprecated":null,"version":null,"openapi":"https://api.twine.se/spec/openapi.json delete /v1/org/time-reports/system-time-types/{system_integration_id}/{system_time_type_id}","href":"/api-reference/system-time-types/delete-system-time-type"},{"title":"Get System Time Types","deprecated":null,"version":null,"openapi":"https://api.twine.se/spec/openapi.json get /v1/org/time-reports/system-time-types/{system_integration_id}","href":"/api-reference/system-time-types/get-system-time-types"},{"title":"Create System Time Type","deprecated":null,"version":null,"openapi":"https://api.twine.se/spec/openapi.json post /v1/org/time-reports/system-time-types/{system_integration_id}","href":"/api-reference/system-time-types/create-system-time-type"}]},{"group":"EmployeeMappings","pages":[{"title":"Get Employee Mappings","deprecated":null,"version":null,"openapi":"https://api.twine.se/spec/openapi.json get /v1/org/employees/mappings","href":"/api-reference/employeemappings/get-employee-mappings"},{"title":"Create Employee Mapping","deprecated":null,"version":null,"openapi":"https://api.twine.se/spec/openapi.json post /v1/org/employees/mappings","href":"/api-reference/employeemappings/create-employee-mapping"},{"title":"Update Employee Mapping","deprecated":null,"version":null,"openapi":"https://api.twine.se/spec/openapi.json put /v1/org/employees/mappings/{employee_mapping_id}","href":"/api-reference/employeemappings/update-employee-mapping"},{"title":"Delete Employee Mapping","deprecated":null,"version":null,"openapi":"https://api.twine.se/spec/openapi.json delete /v1/org/employees/mappings/{employee_mapping_id}","href":"/api-reference/employeemappings/delete-employee-mapping"}]},{"group":"Time Reports","pages":[{"title":"Get Time Reports","deprecated":null,"version":null,"openapi":"https://api.twine.se/spec/openapi.json get /v1/org/time-reports","href":"/api-reference/time-reports/get-time-reports"},{"title":"Create Time Report","deprecated":null,"version":null,"openapi":"https://api.twine.se/spec/openapi.json post /v1/org/time-reports","href":"/api-reference/time-reports/create-time-report"},{"title":"Get Time Report","deprecated":null,"version":null,"openapi":"https://api.twine.se/spec/openapi.json get /v1/org/time-reports/{time_report_id}","href":"/api-reference/time-reports/get-time-report"},{"title":"Update Time Report","deprecated":null,"version":null,"openapi":"https://api.twine.se/spec/openapi.json put /v1/org/time-reports/{time_report_id}","href":"/api-reference/time-reports/update-time-report"},{"title":"Delete Time Report","deprecated":null,"version":null,"openapi":"https://api.twine.se/spec/openapi.json delete /v1/org/time-reports/{time_report_id}","href":"/api-reference/time-reports/delete-time-report"}]},{"group":"Provisioning","pages":[{"title":"Refresh token","deprecated":null,"version":null,"openapi":"https://api.twine.se/spec/openapi.json post /provisioning/refresh-token/refresh","href":"/api-reference/provisioning/refresh-token"},{"title":"Begin refresh token process","deprecated":null,"version":null,"openapi":"https://api.twine.se/spec/openapi.json post /provisioning/refresh-token/begin","href":"/api-reference/provisioning/begin-refresh-token-process"}]},{"group":"Systems","pages":[{"title":"Get System Fields","deprecated":null,"version":null,"openapi":"https://api.twine.se/spec/openapi.json get /v1/systems/{system_id}/fields/{domain}","href":"/api-reference/systems/get-system-fields"},{"title":"Get Systems","deprecated":null,"version":null,"openapi":"https://api.twine.se/spec/openapi.json get /v1/systems","href":"/api-reference/systems/get-systems"}]},{"group":"Organizational Units","pages":[{"title":"Get Organizational Units","deprecated":null,"version":null,"openapi":"https://api.twine.se/spec/openapi.json get /v2/org/organizational-units","href":"/api-reference/organizational-units/get-organizational-units"},{"title":"Get Organizational Unit","deprecated":true,"version":null,"openapi":"https://api.twine.se/spec/openapi.json get /v1/org/organizational-units/{id}","href":"/api-reference/organizational-units/get-organizational-unit"},{"title":"Get Organizational Units","deprecated":true,"version":null,"openapi":"https://api.twine.se/spec/openapi.json get /v1/org/organizational-units","href":"/api-reference/organizational-units/get-organizational-units-1"},{"title":"Get Organizational Unit","deprecated":null,"version":null,"openapi":"https://api.twine.se/spec/openapi.json get /v2/org/organizational-units/{id}","href":"/api-reference/organizational-units/get-organizational-unit-1"}]},{"group":"Jobs","pages":[{"title":"Get Job by ID","deprecated":null,"version":null,"openapi":"https://api.twine.se/spec/openapi.json get /v1/org/jobs/{job_id}","href":"/api-reference/jobs/get-job-by-id"},{"title":"Get Jobs","deprecated":null,"version":null,"openapi":"https://api.twine.se/spec/openapi.json get /v1/org/jobs","href":"/api-reference/jobs/get-jobs"}]},{"group":"DataEngine","pages":[{"title":"Get DataEngine Node Docs","deprecated":null,"version":null,"openapi":"https://api.twine.se/spec/openapi.json get /v1/data-engine/docs","href":"/api-reference/dataengine/get-dataengine-node-docs"}]},{"group":"Conditions","pages":[{"title":"Get Condition by ID","deprecated":null,"version":null,"openapi":"https://api.twine.se/spec/openapi.json get /v1/org/conditions/{condition_id}","href":"/api-reference/conditions/get-condition-by-id"},{"title":"Get Conditions","deprecated":null,"version":null,"openapi":"https://api.twine.se/spec/openapi.json get /v1/org/conditions","href":"/api-reference/conditions/get-conditions"}]},{"group":"Employees","pages":[{"title":"Get Employees","deprecated":null,"version":null,"openapi":"https://api.twine.se/spec/openapi.json get /v1/org/employees","href":"/api-reference/employees/get-employees"},{"title":"Create Employee","deprecated":null,"version":null,"openapi":"https://api.twine.se/spec/openapi.json post /v1/org/employees","href":"/api-reference/employees/create-employee"},{"title":"Get Employee","deprecated":null,"version":null,"openapi":"https://api.twine.se/spec/openapi.json get /v1/org/employees/{employee_id}","href":"/api-reference/employees/get-employee"},{"title":"Put Employee","deprecated":null,"version":null,"openapi":"https://api.twine.se/spec/openapi.json put /v1/org/employees/{employee_id}","href":"/api-reference/employees/put-employee"},{"title":"Patch Employee","deprecated":null,"version":null,"openapi":"https://api.twine.se/spec/openapi.json patch /v1/org/employees/{employee_id}","href":"/api-reference/employees/patch-employee"},{"title":"Shape Employees","deprecated":null,"version":null,"openapi":"https://api.twine.se/spec/openapi.json post /v1/org/employees/shape","href":"/api-reference/employees/shape-employees"}]},{"group":"Employee Competences","pages":[{"title":"Get Employee Competence","deprecated":null,"version":null,"openapi":"https://api.twine.se/spec/openapi.json get /v1/org/employee-competences/{employee_competence_id}","href":"/api-reference/employee-competences/get-employee-competence"},{"title":"Replace Employee Competence","deprecated":null,"version":null,"openapi":"https://api.twine.se/spec/openapi.json put /v1/org/employee-competences/{employee_competence_id}","href":"/api-reference/employee-competences/replace-employee-competence"},{"title":"Delete Employee Competence","deprecated":null,"version":null,"openapi":"https://api.twine.se/spec/openapi.json delete /v1/org/employee-competences/{employee_competence_id}","href":"/api-reference/employee-competences/delete-employee-competence"},{"title":"Update Employee Competence","deprecated":null,"version":null,"openapi":"https://api.twine.se/spec/openapi.json patch /v1/org/employee-competences/{employee_competence_id}","href":"/api-reference/employee-competences/update-employee-competence"},{"title":"Get Employee Competences","deprecated":null,"version":null,"openapi":"https://api.twine.se/spec/openapi.json get /v1/org/employee-competences","href":"/api-reference/employee-competences/get-employee-competences"},{"title":"Create Employee Competence","deprecated":null,"version":null,"openapi":"https://api.twine.se/spec/openapi.json post /v1/org/employee-competences","href":"/api-reference/employee-competences/create-employee-competence"}]},{"group":"Salary Transactions","pages":[{"title":"Get Salary Transactions","deprecated":null,"version":null,"openapi":"https://api.twine.se/spec/openapi.json get /v1/org/salary-transactions","href":"/api-reference/salary-transactions/get-salary-transactions"},{"title":"Create Salary Transaction","deprecated":null,"version":null,"openapi":"https://api.twine.se/spec/openapi.json post /v1/org/salary-transactions","href":"/api-reference/salary-transactions/create-salary-transaction"},{"title":"Get Salary Transaction","deprecated":null,"version":null,"openapi":"https://api.twine.se/spec/openapi.json get /v1/org/salary-transactions/{salary_transaction_id}","href":"/api-reference/salary-transactions/get-salary-transaction"},{"title":"Replace Salary Transaction","deprecated":null,"version":null,"openapi":"https://api.twine.se/spec/openapi.json put /v1/org/salary-transactions/{salary_transaction_id}","href":"/api-reference/salary-transactions/replace-salary-transaction"},{"title":"Delete Salary Transaction","deprecated":null,"version":null,"openapi":"https://api.twine.se/spec/openapi.json delete /v1/org/salary-transactions/{salary_transaction_id}","href":"/api-reference/salary-transactions/delete-salary-transaction"},{"title":"Update Salary Transaction","deprecated":null,"version":null,"openapi":"https://api.twine.se/spec/openapi.json patch /v1/org/salary-transactions/{salary_transaction_id}","href":"/api-reference/salary-transactions/update-salary-transaction"}]}]}]}]},"title":"Partially Update System Integration - Twine Integrations","buildId":"dpl_cadrRc5H9XQiJQbDFN5mcYRs2PAj","deploymentId":"dpl_cadrRc5H9XQiJQbDFN5mcYRs2PAj","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-DKJwRUt2.js","utils-CWD_VS3u.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-oFjciODD.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-C76WsxC3.js","snippetPresets-DvPMxpX_.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-CuNQfndH.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-BVFpVUoF.js","shallow-t59Jg5Kr.js","getApiPlaygroundDisplay-C_JZ4amX.js","CodeSnippet-CLRDnx_h.js","CodeSnippets-C2myU4kc.js","Page-7TwLLapg.js","getPastedJson-B-JaVXw7.js","icon-BA-iDhH3.js","MethodPill-D4qZABFp.js","DuplicateIcon-THIDKO1O.js","createIcon-CYYJwgFd.js","DynamicMarkdown-UGQuxDKp.js","SectionHeading-jYELb23h.js","axios-vUo_bRtp.js","Markdown-DKsLa3wy.js","clsx-CefdjKz2.js","lib--scc4DXi.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-BaREnp3o.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-sgx_0XzF.js"]}