{ "type": "https://code.dcycle.io/api-reference/errors#BULK_RECORDS_REJECTED", "title": "Unprocessable Entity", "status": 422, "code": "BULK_RECORDS_REJECTED", "detail": "1 of the submitted records are invalid; nothing was written.", "errors": [ { "source_row_index": 0, "client_row_id": "SUP-0042", "error_code": "REFERENCE_NOT_FOUND", "error_params": { "field": "supplier_id", "value": "5f4e3d2c-1b0a-4f9e-8d7c-6b5a4f3e2d1c" } } ], "rejected": 1, "request_id": "b2248a31-0f1b-4a7d-83ce-b29bd5977b4c"}
{ "dry_run": true, "submitted": 1, "valid": 1 }
← Purchases APIGive suppliers you already have their activity code (CNAE or SIC), which picks the spend-based emission factor of
their purchases: the suppliers Create Purchases (v2) created in_progress from a
supplier_name it did not know, the ones created in the app, or one
Create Purchase Suppliers (v2) rejected with SUPPLIER_ALREADY_EXISTS.
The request checks every record, gives each supplier its code at once and answers 202 Accepted with an
ingest job that recalculates their purchases in the background (see
how bulk ingestion works). Follow it with
GET /v2/ingest-jobs/{id} or, for a job submitted with an API key, the
ingest_job.finished webhook.
Beta. Part of the bulk ingest API, in beta. The contract may still change before general availability.
Every record is checked: its supplier exists and is in your organization’s
perimeter, it is not already in the request, and its code is an
active code of its framework, as in Create Purchase Suppliers (v2).
If any record is invalid the whole request is rejected with 422 and nothing is written
(all or nothing).
Every supplier takes its code at once, in one transaction: it is active, and a classification Dcycle had
found for it (D&B) is replaced by yours, as the Data Importer’s supplier codes import does. Its name and country do
not change.
The job recalculates the purchases of each supplier, in the supplier’s own organization: they go back to
in_progress, without emissions, and are calculated again with the factor of the new activity, whatever their
status was (an error one included). A supplier sent with the code it already has is recalculated too, so send
only the suppliers whose code you want to set or change.
When every chunk is done the job is completed (or completed_with_errors). For a job submitted with an API
key, ingest_job.finished is sent with "operation": "update" to the webhook endpoints of the x-organization-id
organization.
The job is done when the purchases are queued for their calculation, not when it ends: for a supplier with many
purchases they can stay in_progress for some minutes after the job is completed. Read them with
List Purchases.
The organization the suppliers are classified for. Its suppliers, and those of the organizations under it that you
can write to (its perimeter), can be classified.
1 to 255 characters, one per batch, looked up per organization across every v2 bulk route. Within 24 hours, the
same key with the same route and body returns the original job (with Idempotent-Replayed: true); the same key with
another body or on another route is 422 IDEMPOTENCY_KEY_REUSED, and while the first request is still being
processed 409 IDEMPOTENCY_KEY_IN_PROGRESS. After 24 hours the key is free, and a request with it is a new one. See
The Idempotency-Key.
Check only: the same 422 for invalid records, nothing written, no job; 200 with
{"dry_run": true, "submitted": n, "valid": n} when every record is valid. The Idempotency-Key header is still
required, but a dry run does not check or store it.
202 Accepted with the job (entity_type: purchase_suppliers, operation: update) and a Location header to it.
GET /v2/ingest-jobs/{id}/items has one item per supplier, in the order sent,
with the supplier’s id as entity_id; an item is failed with CALCULATION_FAILED when the supplier was deleted
before the job reached it, or its purchases could not be queued.
Problem details. Per-record codes in errors[].error_code of a 422 BULK_RECORDS_REJECTED:
error_code
Cause
SCHEMA_INVALID
The record does not match the schema: no supplier_id or one that is not a UUID, no code or framework, a framework not listed, an unknown field (e.g. business_name or organization_id)… error_params.errors says where.
REFERENCE_NOT_FOUND
The supplier does not exist or is outside your organization’s perimeter, both answer the same (error_params.field is supplier_id), or code is not an active code of framework (code).
DUPLICATE_SUPPLIER
Another record of the request has the same supplier_id.
Request-level errors: 401 for a missing or invalid API key, 403 LOGGED_USER_NOT_MEMBER when the key’s user is not a
member of the organization, 422 REQUEST_VALIDATION_FAILED for a malformed body (no records, more than 1,000, no
Idempotency-Key), 422 IDEMPOTENCY_KEY_REUSED, 409 IDEMPOTENCY_KEY_IN_PROGRESS, and 429 beyond the
rate limits.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Dcycle Platform Docs","colors":{"primary":"#006ad4","light":"#006ad4","dark":"#006ad4"},"favicon":"https://mintcdn.com/dcyleio/3p55kB8fgLjSeubO/images/favicon.svg?fit=max\u0026auto=format\u0026n=3p55kB8fgLjSeubO\u0026q=85\u0026s=b60bb57384c71b7a5a59fbc458538887","api":{"params":{"expanded":"all"},"playground":{"display":"interactive","proxy":true},"examples":{"languages":["javascript","python","curl"],"prefill":true},"mdx":{"server":"https://api.dcycle.io"}},"navbar":{"links":[{"href":"https://app.dcycle.io","label":"App"}],"primary":{"type":"button","label":"Get API Key","href":"/docs/authentication#get-an-api-key"}},"search":{"prompt":"Search API endpoints and guides..."},"seo":{"indexing":"all"},"styling":{"eyebrows":"breadcrumbs","codeblocks":{"theme":{"light":"github-light","dark":"github-dark"}},"latex":false},"contextual":{"options":["copy","view","claude","chatgpt"],"display":"header"},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"dcyleio","hasAudioNarration":false,"actualSubdomain":"dcyleio","customDomains":["code.dcycle.io"],"gitSource":{"type":"github","owner":"dcycle-by-wum","repo":"dcycle-backend-app","deployBranch":"main","contentDirectory":"docs/developer-center","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae333a8344aa043c132cf7b","collectionId":"f4662e63-4aec-46a0-8f07-cb862daa94eb","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae333a8344aa043c132cf7b"},"feedback":{"thumbs":true},"entitlements":{},"buildId":"6ae336f920ed97e30f822bbe","clientVersion":"0.0.4006","searchFilterCounts":[{"language":"default","tag":"API","count":444},{"language":"default","tag":"Guides","count":48},{"language":"default","tag":"CLI","count":40},{"language":"default","tag":"Vehicles","count":38},{"language":"default","tag":"Own Workforce","count":37},{"language":"default","tag":"Employees","count":36},{"language":"default","tag":"Custom KPI","count":33},{"language":"default","tag":"Commands","count":33},{"language":"default","tag":"Logistics","count":32},{"language":"default","tag":"MCP","count":32}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"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":"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":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/purchases/suppliers-update-v2","slug":"/api-reference/purchases/suppliers-update-v2","pageMetadata":{"title":"Classify Purchase Suppliers (v2)","api":"PATCH /v2/purchases/suppliers","description":"Give up to 1,000 existing purchase suppliers their activity code and recalculate their purchases, as an ingest job","tag":"BETA","href":"/api-reference/purchases/suppliers-update-v2"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Give up to 1,000 existing purchase suppliers their activity code and recalculate their purchases, as an ingest job\"\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,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,ol:`ol`,p:`p`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,..._provideComponents(),...props.components},{Card,CardGroup,Expandable,Heading,Note,ParamField,Table,Warning}=_components;if(!Card)_missingMdxReference(`Card`,true);if(!CardGroup)_missingMdxReference(`CardGroup`,true);if(!Expandable)_missingMdxReference(`Expandable`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Note)_missingMdxReference(`Note`,true);if(!ParamField)_missingMdxReference(`ParamField`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:_jsx(_components.a,{href:`/api-reference/purchases/overview`,children:`← Purchases API`})}),`\n`,_jsxs(_components.p,{children:[`Give suppliers you already have their activity code (CNAE or SIC), which picks the spend-based emission factor of\ntheir purchases: the suppliers `,_jsx(_components.a,{href:`/api-reference/purchases/create-v2`,children:`Create Purchases (v2)`}),` created `,_jsx(_components.code,{children:`in_progress`}),` from a\n`,_jsx(_components.code,{children:`supplier_name`}),` it did not know, the ones created in the app, or one\n`,_jsx(_components.a,{href:`/api-reference/purchases/suppliers-create-v2`,children:`Create Purchase Suppliers (v2)`}),` rejected with `,_jsx(_components.code,{children:`SUPPLIER_ALREADY_EXISTS`}),`.\nThe request checks every record, gives each supplier its code at once and answers `,_jsx(_components.code,{children:`202 Accepted`}),` with an\n`,_jsx(_components.a,{href:`/api-reference/ingest-jobs/get`,children:`ingest job`}),` that recalculates their purchases in the background (see\n`,_jsx(_components.a,{href:`/api-reference/ingest-jobs/overview`,children:`how bulk ingestion works`}),`). Follow it with\n`,_jsx(_components.a,{href:`/api-reference/ingest-jobs/get`,children:_jsx(_components.code,{children:`GET /v2/ingest-jobs/{id}`})}),` or, for a job submitted with an API key, the\n`,_jsx(_components.a,{href:`/api-reference/webhooks/overview`,children:_jsx(_components.code,{children:`ingest_job.finished`})}),` webhook.`]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Beta.`}),` Part of the bulk ingest API, in beta. The contract may still change before general availability.`]})}),`\n`,`\n`,`\n`,_jsx(Heading,{level:`2`,id:`how-it-works`,children:`How it works`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Every record is checked`}),`: its supplier exists and is in your organization’s\n`,_jsx(_components.a,{href:`/api-reference/ingest-jobs/overview#perimeter`,children:`perimeter`}),`, it is not already in the request, and its `,_jsx(_components.code,{children:`code`}),` is an\nactive code of its `,_jsx(_components.code,{children:`framework`}),`, as in `,_jsx(_components.a,{href:`/api-reference/purchases/suppliers-create-v2#activity-codes`,children:`Create Purchase Suppliers (v2)`}),`.\nIf any record is invalid the `,_jsx(_components.strong,{children:`whole`}),` request is rejected with `,_jsx(_components.code,{children:`422`}),` and nothing is written\n(`,_jsx(_components.a,{href:`/api-reference/ingest-jobs/overview#all-or-nothing`,children:`all or nothing`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Every supplier takes its code at once`}),`, in one transaction: it is `,_jsx(_components.code,{children:`active`}),`, and a classification Dcycle had\nfound for it (D\u0026B) is replaced by yours, as the Data Importer’s supplier codes import does. Its name and country do\nnot change.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`The job recalculates the purchases of each supplier`}),`, in the supplier’s own organization: they go back to\n`,_jsx(_components.code,{children:`in_progress`}),`, without emissions, and are calculated again with the factor of the new activity, whatever their\nstatus was (an `,_jsx(_components.code,{children:`error`}),` one included). A supplier sent with the code it already has is recalculated too, so send\nonly the suppliers whose code you want to set or change.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`When every chunk is done`}),` the job is `,_jsx(_components.code,{children:`completed`}),` (or `,_jsx(_components.code,{children:`completed_with_errors`}),`). For a job submitted with an API\nkey, `,_jsx(_components.code,{children:`ingest_job.finished`}),` is sent with `,_jsx(_components.code,{children:`\"operation\": \"update\"`}),` to the webhook endpoints of the `,_jsx(_components.code,{children:`x-organization-id`}),`\norganization.`]}),`\n`]}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[`The job is done when the purchases are queued for their calculation, not when it ends: for a supplier with many\npurchases they can stay `,_jsx(_components.code,{children:`in_progress`}),` for some minutes after the job is `,_jsx(_components.code,{children:`completed`}),`. Read them with\n`,_jsx(_components.a,{href:`/api-reference/purchases/list`,children:`List Purchases`}),`.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`request`,children:`Request`}),`\n`,_jsx(Heading,{level:`3`,id:`headers`,children:`Headers`}),`\n`,_jsx(ParamField,{header:`x-api-key`,type:`string`,required:true,id:`param-x-api-key`,children:_jsxs(_components.p,{children:[`Your API key (see `,_jsx(_components.a,{href:`/api-reference/introduction#authentication`,children:`Authentication`}),`).`]})}),`\n`,_jsx(ParamField,{header:`x-organization-id`,type:`string`,required:true,id:`param-x-organization-id`,children:_jsxs(_components.p,{children:[`The organization the suppliers are classified for. Its suppliers, and those of the organizations under it that you\ncan write to (its `,_jsx(_components.a,{href:`/api-reference/ingest-jobs/overview#perimeter`,children:`perimeter`}),`), can be classified.`]})}),`\n`,_jsx(ParamField,{header:`Idempotency-Key`,type:`string`,required:true,id:`param-idempotency-key`,children:_jsxs(_components.p,{children:[`1 to 255 characters, one per batch, looked up per organization across every v2 bulk route. Within 24 hours, the\nsame key with the same route and body returns the original job (with `,_jsx(_components.code,{children:`Idempotent-Replayed: true`}),`); the same key with\nanother body or on another route is `,_jsx(_components.code,{children:`422 IDEMPOTENCY_KEY_REUSED`}),`, and while the first request is still being\nprocessed `,_jsx(_components.code,{children:`409 IDEMPOTENCY_KEY_IN_PROGRESS`}),`. After 24 hours the key is free, and a request with it is a new one. See\n`,_jsx(_components.a,{href:`/api-reference/ingest-jobs/overview#the-idempotency-key`,children:`The Idempotency-Key`}),`.`]})}),`\n`,_jsx(Heading,{level:`3`,id:`query-parameters`,children:`Query Parameters`}),`\n`,_jsx(ParamField,{query:`dry_run`,type:`boolean`,default:`false`,id:`param-dry-run`,children:_jsxs(_components.p,{children:[`Check only: the same `,_jsx(_components.code,{children:`422`}),` for invalid records, nothing written, no job; `,_jsx(_components.code,{children:`200`}),` with\n`,_jsx(_components.code,{children:`{\"dry_run\": true, \"submitted\": n, \"valid\": n}`}),` when every record is valid. The `,_jsx(_components.code,{children:`Idempotency-Key`}),` header is still\nrequired, but a dry run does not check or store it.`]})}),`\n`,_jsx(Heading,{level:`3`,id:`body-parameters`,children:`Body Parameters`}),`\n`,_jsxs(ParamField,{body:`records`,type:`array[object]`,required:true,id:`param-records`,children:[_jsxs(_components.p,{children:[`The suppliers to classify, 1 to 1,000. A field not listed here is rejected (`,_jsx(_components.code,{children:`SCHEMA_INVALID`}),`).`]}),_jsxs(Expandable,{title:`record`,children:[_jsx(ParamField,{body:`supplier_id`,type:`uuid`,required:true,id:`param-supplier-id`,children:_jsxs(_components.p,{children:[`The supplier’s `,_jsx(_components.code,{children:`id`}),`, as `,_jsx(_components.a,{href:`/api-reference/purchases/suppliers-create-v2`,children:`Create Purchase Suppliers (v2)`}),` answers it\nor `,_jsx(_components.a,{href:`/api-reference/purchases/suppliers-list`,children:`List Purchase Suppliers`}),` lists it.`]})}),_jsx(ParamField,{body:`code`,type:`string`,required:true,id:`param-code`,children:_jsxs(_components.p,{children:[`The supplier’s activity code in `,_jsx(_components.code,{children:`framework`}),`, up to 16 characters (see\n`,_jsx(_components.a,{href:`/api-reference/purchases/suppliers-create-v2#activity-codes`,children:`Activity codes`}),`).`]})}),_jsx(ParamField,{body:`framework`,type:`string`,required:true,id:`param-framework`,children:_jsxs(_components.p,{children:[`The classification of `,_jsx(_components.code,{children:`code`}),`: `,_jsx(_components.code,{children:`cnae_2009`}),` (CNAE 2009) or `,_jsx(_components.code,{children:`us_sic_v87`}),` (US SIC 1987).`]})}),_jsx(ParamField,{body:`client_row_id`,type:`string`,id:`param-client-row-id`,children:_jsx(_components.p,{children:`Your own reference for the record, up to 255 characters, echoed in errors and in the job items.`})})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`response`,children:`Response`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`202 Accepted`}),` with the job (`,_jsx(_components.code,{children:`entity_type: purchase_suppliers`}),`, `,_jsx(_components.code,{children:`operation: update`}),`) and a `,_jsx(_components.code,{children:`Location`}),` header to it.\n`,_jsx(_components.a,{href:`/api-reference/ingest-jobs/list-items`,children:_jsx(_components.code,{children:`GET /v2/ingest-jobs/{id}/items`})}),` has one item per supplier, in the order sent,\nwith the supplier’s id as `,_jsx(_components.code,{children:`entity_id`}),`; an item is `,_jsx(_components.code,{children:`failed`}),` with `,_jsx(_components.code,{children:`CALCULATION_FAILED`}),` when the supplier was deleted\nbefore the job reached it, or its purchases could not be queued.`]}),`\n`,_jsx(Heading,{level:`2`,id:`errors`,children:`Errors`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.a,{href:`/api-reference/errors`,children:`Problem details`}),`. Per-record codes in `,_jsx(_components.code,{children:`errors[].error_code`}),` of a `,_jsx(_components.code,{children:`422 BULK_RECORDS_REJECTED`}),`:`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:_jsx(_components.code,{children:`error_code`})}),_jsx(_components.th,{children:`Cause`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`SCHEMA_INVALID`})}),_jsxs(_components.td,{children:[`The record does not match the schema: no `,_jsx(_components.code,{children:`supplier_id`}),` or one that is not a UUID, no `,_jsx(_components.code,{children:`code`}),` or `,_jsx(_components.code,{children:`framework`}),`, a `,_jsx(_components.code,{children:`framework`}),` not listed, an unknown field (e.g. `,_jsx(_components.code,{children:`business_name`}),` or `,_jsx(_components.code,{children:`organization_id`}),`)… `,_jsx(_components.code,{children:`error_params.errors`}),` says where.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`REFERENCE_NOT_FOUND`})}),_jsxs(_components.td,{children:[`The supplier does not exist or is outside your organization’s `,_jsx(_components.a,{href:`/api-reference/ingest-jobs/overview#perimeter`,children:`perimeter`}),`, both answer the same (`,_jsx(_components.code,{children:`error_params.field`}),` is `,_jsx(_components.code,{children:`supplier_id`}),`), or `,_jsx(_components.code,{children:`code`}),` is not an active code of `,_jsx(_components.code,{children:`framework`}),` (`,_jsx(_components.code,{children:`code`}),`).`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`DUPLICATE_SUPPLIER`})}),_jsxs(_components.td,{children:[`Another record of the request has the same `,_jsx(_components.code,{children:`supplier_id`}),`.`]})]})]})]}),`\n`,_jsxs(_components.p,{children:[`Request-level errors: `,_jsx(_components.code,{children:`401`}),` for a missing or invalid API key, `,_jsx(_components.code,{children:`403 LOGGED_USER_NOT_MEMBER`}),` when the key’s user is not a\nmember of the organization, `,_jsx(_components.code,{children:`422 REQUEST_VALIDATION_FAILED`}),` for a malformed body (no `,_jsx(_components.code,{children:`records`}),`, more than 1,000, no\n`,_jsx(_components.code,{children:`Idempotency-Key`}),`), `,_jsx(_components.code,{children:`422 IDEMPOTENCY_KEY_REUSED`}),`, `,_jsx(_components.code,{children:`409 IDEMPOTENCY_KEY_IN_PROGRESS`}),`, and `,_jsx(_components.code,{children:`429`}),` beyond the\n`,_jsx(_components.a,{href:`/api-reference/rate-limits`,children:`rate limits`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`limits`,children:`Limits`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Limit`}),_jsx(_components.th,{children:`Value`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Records per request`}),_jsx(_components.td,{\"data-numeric\":`true`,children:`1 to 1,000`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Suppliers per recalculation chunk`}),_jsx(_components.td,{\"data-numeric\":`true`,children:`100`})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`related-endpoints`,children:`Related Endpoints`}),`\n`,_jsxs(CardGroup,{cols:2,children:[_jsx(Card,{title:`Create Purchase Suppliers (v2)`,icon:`plus`,href:`/api-reference/purchases/suppliers-create-v2`,children:_jsx(_components.p,{children:`Create new suppliers, with their code`})}),_jsx(Card,{title:`List Purchase Suppliers`,icon:`building`,href:`/api-reference/purchases/suppliers-list`,children:_jsx(_components.p,{children:`Find the ids to classify`})}),_jsx(Card,{title:`Create Purchases (v2)`,icon:`cart-shopping`,href:`/api-reference/purchases/create-v2`,children:_jsx(_components.p,{children:`Purchases from these suppliers`})}),_jsx(Card,{title:`Get Ingest Job`,icon:`magnifying-glass`,href:`/api-reference/ingest-jobs/get`,children:_jsx(_components.p,{children:`Follow the recalculation`})})]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"codeStyling":{"theme":{"light":"github-light","dark":"github-dark"}},"config":{},"pageMetadata":{"title":"Classify Purchase Suppliers (v2)","api":"PATCH /v2/purchases/suppliers","description":"Give up to 1,000 existing purchase suppliers their activity code and recalculate their purchases, as an ingest job","tag":"BETA","href":"/api-reference/purchases/suppliers-update-v2"}}},"mdxSourceWithNoJs":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,..._provideComponents(),...props.components},{Card,CardGroup,CodeBlock,Expandable,Heading,Note,ParamField,RequestExample,ResponseExample,Table,Warning}=_components;if(!Card)_missingMdxReference(`Card`,true);if(!CardGroup)_missingMdxReference(`CardGroup`,true);if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Expandable)_missingMdxReference(`Expandable`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Note)_missingMdxReference(`Note`,true);if(!ParamField)_missingMdxReference(`ParamField`,true);if(!RequestExample)_missingMdxReference(`RequestExample`,true);if(!ResponseExample)_missingMdxReference(`ResponseExample`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:_jsx(_components.a,{href:`/api-reference/purchases/overview`,children:`← Purchases API`})}),`\n`,_jsxs(_components.p,{children:[`Give suppliers you already have their activity code (CNAE or SIC), which picks the spend-based emission factor of\ntheir purchases: the suppliers `,_jsx(_components.a,{href:`/api-reference/purchases/create-v2`,children:`Create Purchases (v2)`}),` created `,_jsx(_components.code,{children:`in_progress`}),` from a\n`,_jsx(_components.code,{children:`supplier_name`}),` it did not know, the ones created in the app, or one\n`,_jsx(_components.a,{href:`/api-reference/purchases/suppliers-create-v2`,children:`Create Purchase Suppliers (v2)`}),` rejected with `,_jsx(_components.code,{children:`SUPPLIER_ALREADY_EXISTS`}),`.\nThe request checks every record, gives each supplier its code at once and answers `,_jsx(_components.code,{children:`202 Accepted`}),` with an\n`,_jsx(_components.a,{href:`/api-reference/ingest-jobs/get`,children:`ingest job`}),` that recalculates their purchases in the background (see\n`,_jsx(_components.a,{href:`/api-reference/ingest-jobs/overview`,children:`how bulk ingestion works`}),`). Follow it with\n`,_jsx(_components.a,{href:`/api-reference/ingest-jobs/get`,children:_jsx(_components.code,{children:`GET /v2/ingest-jobs/{id}`})}),` or, for a job submitted with an API key, the\n`,_jsx(_components.a,{href:`/api-reference/webhooks/overview`,children:_jsx(_components.code,{children:`ingest_job.finished`})}),` webhook.`]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Beta.`}),` Part of the bulk ingest API, in beta. The contract may still change before general availability.`]})}),`\n`,_jsxs(RequestExample,{children:[_jsx(CodeBlock,{filename:`cURL`,numberOfLines:`15`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light github-dark`,style:{backgroundColor:`#fff`,\"--shiki-dark-bg\":`#24292e`,color:`#24292e`,\"--shiki-dark\":`#e1e4e8`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`15`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#6F42C1`,\"--shiki-dark\":`#B392F0`},children:`curl`}),_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#79B8FF`},children:` -X`}),_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#9ECBFF`},children:` PATCH`}),_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#9ECBFF`},children:` \"https://api.dcycle.io/v2/purchases/suppliers\"`}),_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#79B8FF`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#79B8FF`},children:` -H`}),_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#9ECBFF`},children:' \"x-api-key: ${'}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`DCYCLE_API_KEY`}),_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#9ECBFF`},children:`}\"`}),_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#79B8FF`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#79B8FF`},children:` -H`}),_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#9ECBFF`},children:' \"x-organization-id: ${'}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`DCYCLE_ORG_ID`}),_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#9ECBFF`},children:`}\"`}),_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#79B8FF`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#79B8FF`},children:` -H`}),_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#9ECBFF`},children:` \"Idempotency-Key: 9d8c7b6a-5f4e-4d3c-8b2a-1f0e9d8c7b6a\"`}),_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#79B8FF`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#79B8FF`},children:` -H`}),_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#9ECBFF`},children:` \"Content-Type: application/json\"`}),_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#79B8FF`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#79B8FF`},children:` -d`}),_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#9ECBFF`},children:` '{`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#9ECBFF`},children:` \"records\": [`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#9ECBFF`},children:` {`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#9ECBFF`},children:` \"supplier_id\": \"5f4e3d2c-1b0a-4f9e-8d7c-6b5a4f3e2d1c\",`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#9ECBFF`},children:` \"code\": \"1712\",`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#9ECBFF`},children:` \"framework\": \"cnae_2009\",`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#9ECBFF`},children:` \"client_row_id\": \"SUP-0042\"`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#9ECBFF`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#9ECBFF`},children:` ]`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#9ECBFF`},children:` }'`})}),`\n`]})})}),_jsx(CodeBlock,{filename:`Python`,numberOfLines:`26`,language:`python`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light github-dark`,style:{backgroundColor:`#fff`,\"--shiki-dark-bg\":`#24292e`,color:`#24292e`,\"--shiki-dark\":`#e1e4e8`},language:`python`,children:_jsxs(_components.code,{language:`python`,numberOfLines:`26`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#D73A49`,\"--shiki-dark\":`#F97583`},children:`import`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:` os`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#D73A49`,\"--shiki-dark\":`#F97583`},children:`import`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:` uuid`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#D73A49`,\"--shiki-dark\":`#F97583`},children:`import`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:` requests`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`response `}),_jsx(_components.span,{style:{color:`#D73A49`,\"--shiki-dark\":`#F97583`},children:`=`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:` requests.patch(`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#9ECBFF`},children:` \"https://api.dcycle.io/v2/purchases/suppliers\"`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#E36209`,\"--shiki-dark\":`#FFAB70`},children:` headers`}),_jsx(_components.span,{style:{color:`#D73A49`,\"--shiki-dark\":`#F97583`},children:`=`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`{`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#9ECBFF`},children:` \"x-api-key\"`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`: os.environ[`}),_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#9ECBFF`},children:`\"DCYCLE_API_KEY\"`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`],`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#9ECBFF`},children:` \"x-organization-id\"`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`: os.environ[`}),_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#9ECBFF`},children:`\"DCYCLE_ORG_ID\"`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`],`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#9ECBFF`},children:` \"Idempotency-Key\"`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`: `}),_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#79B8FF`},children:`str`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`(uuid.uuid4()), `}),_jsx(_components.span,{style:{color:`#6A737D`,\"--shiki-dark\":`#6A737D`},children:`# keep it to retry this same batch`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:` },`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#E36209`,\"--shiki-dark\":`#FFAB70`},children:` json`}),_jsx(_components.span,{style:{color:`#D73A49`,\"--shiki-dark\":`#F97583`},children:`=`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`{`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#9ECBFF`},children:` \"records\"`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`: [`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:` {`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#9ECBFF`},children:` \"supplier_id\"`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`: `}),_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#9ECBFF`},children:`\"5f4e3d2c-1b0a-4f9e-8d7c-6b5a4f3e2d1c\"`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#9ECBFF`},children:` \"code\"`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`: `}),_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#9ECBFF`},children:`\"1712\"`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#9ECBFF`},children:` \"framework\"`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`: `}),_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#9ECBFF`},children:`\"cnae_2009\"`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#9ECBFF`},children:` \"client_row_id\"`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`: `}),_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#9ECBFF`},children:`\"SUP-0042\"`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:` ]`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:` },`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#E36209`,\"--shiki-dark\":`#FFAB70`},children:` timeout`}),_jsx(_components.span,{style:{color:`#D73A49`,\"--shiki-dark\":`#F97583`},children:`=`}),_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#79B8FF`},children:`60`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`)`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`response.raise_for_status()`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#79B8FF`},children:`print`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`(response.json()[`}),_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#9ECBFF`},children:`\"id\"`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`])`})]}),`\n`]})})})]}),`\n`,_jsxs(ResponseExample,{children:[_jsx(CodeBlock,{filename:`202`,numberOfLines:`16`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light github-dark`,style:{backgroundColor:`#fff`,\"--shiki-dark-bg\":`#24292e`,color:`#24292e`,\"--shiki-dark\":`#e1e4e8`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`16`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#79B8FF`},children:` \"id\"`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`: `}),_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#9ECBFF`},children:`\"2b1a0f9e-8d7c-4b6a-9f5e-4d3c2b1a0f9e\"`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#79B8FF`},children:` \"status\"`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`: `}),_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#9ECBFF`},children:`\"processing\"`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#79B8FF`},children:` \"entity_type\"`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`: `}),_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#9ECBFF`},children:`\"purchase_suppliers\"`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#79B8FF`},children:` \"operation\"`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`: `}),_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#9ECBFF`},children:`\"update\"`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#79B8FF`},children:` \"source\"`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`: `}),_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#9ECBFF`},children:`\"api_bulk\"`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#79B8FF`},children:` \"counts\"`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`: { `}),_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#79B8FF`},children:`\"submitted\"`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`: `}),_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#79B8FF`},children:`1`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`, `}),_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#79B8FF`},children:`\"succeeded\"`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`: `}),_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#79B8FF`},children:`0`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`, `}),_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#79B8FF`},children:`\"failed\"`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`: `}),_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#79B8FF`},children:`0`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:` },`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#79B8FF`},children:` \"chunks_total\"`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`: `}),_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#79B8FF`},children:`1`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#79B8FF`},children:` \"chunks_done\"`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`: `}),_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#79B8FF`},children:`0`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#79B8FF`},children:` \"created_at\"`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`: `}),_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#9ECBFF`},children:`\"2026-10-29T09:20:31.877Z\"`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#79B8FF`},children:` \"finished_at\"`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`: `}),_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#79B8FF`},children:`null`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#79B8FF`},children:` \"links\"`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#79B8FF`},children:` \"self\"`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`: `}),_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#9ECBFF`},children:`\"/v2/ingest-jobs/2b1a0f9e-8d7c-4b6a-9f5e-4d3c2b1a0f9e\"`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#79B8FF`},children:` \"items\"`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`: `}),_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#9ECBFF`},children:`\"/v2/ingest-jobs/2b1a0f9e-8d7c-4b6a-9f5e-4d3c2b1a0f9e/items\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`}`})}),`\n`]})})}),_jsx(CodeBlock,{filename:`422`,numberOfLines:`17`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light github-dark`,style:{backgroundColor:`#fff`,\"--shiki-dark-bg\":`#24292e`,color:`#24292e`,\"--shiki-dark\":`#e1e4e8`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`17`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#79B8FF`},children:` \"type\"`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`: `}),_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#9ECBFF`},children:`\"https://code.dcycle.io/api-reference/errors#BULK_RECORDS_REJECTED\"`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#79B8FF`},children:` \"title\"`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`: `}),_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#9ECBFF`},children:`\"Unprocessable Entity\"`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#79B8FF`},children:` \"status\"`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`: `}),_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#79B8FF`},children:`422`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#79B8FF`},children:` \"code\"`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`: `}),_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#9ECBFF`},children:`\"BULK_RECORDS_REJECTED\"`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#79B8FF`},children:` \"detail\"`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`: `}),_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#9ECBFF`},children:`\"1 of the submitted records are invalid; nothing was written.\"`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#79B8FF`},children:` \"errors\"`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`: [`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:` {`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#79B8FF`},children:` \"source_row_index\"`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`: `}),_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#79B8FF`},children:`0`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#79B8FF`},children:` \"client_row_id\"`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`: `}),_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#9ECBFF`},children:`\"SUP-0042\"`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#79B8FF`},children:` \"error_code\"`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`: `}),_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#9ECBFF`},children:`\"REFERENCE_NOT_FOUND\"`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#79B8FF`},children:` \"error_params\"`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`: { `}),_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#79B8FF`},children:`\"field\"`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`: `}),_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#9ECBFF`},children:`\"supplier_id\"`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`, `}),_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#79B8FF`},children:`\"value\"`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`: `}),_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#9ECBFF`},children:`\"5f4e3d2c-1b0a-4f9e-8d7c-6b5a4f3e2d1c\"`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:` }`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:` ],`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#79B8FF`},children:` \"rejected\"`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`: `}),_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#79B8FF`},children:`1`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#79B8FF`},children:` \"request_id\"`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`: `}),_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#9ECBFF`},children:`\"b2248a31-0f1b-4a7d-83ce-b29bd5977b4c\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`}`})}),`\n`]})})}),_jsx(CodeBlock,{filename:`200 (dry_run=true)`,numberOfLines:`1`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light github-dark`,style:{backgroundColor:`#fff`,\"--shiki-dark-bg\":`#24292e`,color:`#24292e`,\"--shiki-dark\":`#e1e4e8`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`{ `}),_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#79B8FF`},children:`\"dry_run\"`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`: `}),_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#79B8FF`},children:`true`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`, `}),_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#79B8FF`},children:`\"submitted\"`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`: `}),_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#79B8FF`},children:`1`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`, `}),_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#79B8FF`},children:`\"valid\"`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`: `}),_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#79B8FF`},children:`1`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:` }`})]}),`\n`]})})})]}),`\n`,_jsx(Heading,{level:`2`,id:`how-it-works`,children:`How it works`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Every record is checked`}),`: its supplier exists and is in your organization’s\n`,_jsx(_components.a,{href:`/api-reference/ingest-jobs/overview#perimeter`,children:`perimeter`}),`, it is not already in the request, and its `,_jsx(_components.code,{children:`code`}),` is an\nactive code of its `,_jsx(_components.code,{children:`framework`}),`, as in `,_jsx(_components.a,{href:`/api-reference/purchases/suppliers-create-v2#activity-codes`,children:`Create Purchase Suppliers (v2)`}),`.\nIf any record is invalid the `,_jsx(_components.strong,{children:`whole`}),` request is rejected with `,_jsx(_components.code,{children:`422`}),` and nothing is written\n(`,_jsx(_components.a,{href:`/api-reference/ingest-jobs/overview#all-or-nothing`,children:`all or nothing`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Every supplier takes its code at once`}),`, in one transaction: it is `,_jsx(_components.code,{children:`active`}),`, and a classification Dcycle had\nfound for it (D\u0026B) is replaced by yours, as the Data Importer’s supplier codes import does. Its name and country do\nnot change.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`The job recalculates the purchases of each supplier`}),`, in the supplier’s own organization: they go back to\n`,_jsx(_components.code,{children:`in_progress`}),`, without emissions, and are calculated again with the factor of the new activity, whatever their\nstatus was (an `,_jsx(_components.code,{children:`error`}),` one included). A supplier sent with the code it already has is recalculated too, so send\nonly the suppliers whose code you want to set or change.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`When every chunk is done`}),` the job is `,_jsx(_components.code,{children:`completed`}),` (or `,_jsx(_components.code,{children:`completed_with_errors`}),`). For a job submitted with an API\nkey, `,_jsx(_components.code,{children:`ingest_job.finished`}),` is sent with `,_jsx(_components.code,{children:`\"operation\": \"update\"`}),` to the webhook endpoints of the `,_jsx(_components.code,{children:`x-organization-id`}),`\norganization.`]}),`\n`]}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[`The job is done when the purchases are queued for their calculation, not when it ends: for a supplier with many\npurchases they can stay `,_jsx(_components.code,{children:`in_progress`}),` for some minutes after the job is `,_jsx(_components.code,{children:`completed`}),`. Read them with\n`,_jsx(_components.a,{href:`/api-reference/purchases/list`,children:`List Purchases`}),`.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`request`,children:`Request`}),`\n`,_jsx(Heading,{level:`3`,id:`headers`,children:`Headers`}),`\n`,_jsx(ParamField,{header:`x-api-key`,type:`string`,required:true,id:`param-x-api-key`,children:_jsxs(_components.p,{children:[`Your API key (see `,_jsx(_components.a,{href:`/api-reference/introduction#authentication`,children:`Authentication`}),`).`]})}),`\n`,_jsx(ParamField,{header:`x-organization-id`,type:`string`,required:true,id:`param-x-organization-id`,children:_jsxs(_components.p,{children:[`The organization the suppliers are classified for. Its suppliers, and those of the organizations under it that you\ncan write to (its `,_jsx(_components.a,{href:`/api-reference/ingest-jobs/overview#perimeter`,children:`perimeter`}),`), can be classified.`]})}),`\n`,_jsx(ParamField,{header:`Idempotency-Key`,type:`string`,required:true,id:`param-idempotency-key`,children:_jsxs(_components.p,{children:[`1 to 255 characters, one per batch, looked up per organization across every v2 bulk route. Within 24 hours, the\nsame key with the same route and body returns the original job (with `,_jsx(_components.code,{children:`Idempotent-Replayed: true`}),`); the same key with\nanother body or on another route is `,_jsx(_components.code,{children:`422 IDEMPOTENCY_KEY_REUSED`}),`, and while the first request is still being\nprocessed `,_jsx(_components.code,{children:`409 IDEMPOTENCY_KEY_IN_PROGRESS`}),`. After 24 hours the key is free, and a request with it is a new one. See\n`,_jsx(_components.a,{href:`/api-reference/ingest-jobs/overview#the-idempotency-key`,children:`The Idempotency-Key`}),`.`]})}),`\n`,_jsx(Heading,{level:`3`,id:`query-parameters`,children:`Query Parameters`}),`\n`,_jsx(ParamField,{query:`dry_run`,type:`boolean`,default:`false`,id:`param-dry-run`,children:_jsxs(_components.p,{children:[`Check only: the same `,_jsx(_components.code,{children:`422`}),` for invalid records, nothing written, no job; `,_jsx(_components.code,{children:`200`}),` with\n`,_jsx(_components.code,{children:`{\"dry_run\": true, \"submitted\": n, \"valid\": n}`}),` when every record is valid. The `,_jsx(_components.code,{children:`Idempotency-Key`}),` header is still\nrequired, but a dry run does not check or store it.`]})}),`\n`,_jsx(Heading,{level:`3`,id:`body-parameters`,children:`Body Parameters`}),`\n`,_jsxs(ParamField,{body:`records`,type:`array[object]`,required:true,id:`param-records`,children:[_jsxs(_components.p,{children:[`The suppliers to classify, 1 to 1,000. A field not listed here is rejected (`,_jsx(_components.code,{children:`SCHEMA_INVALID`}),`).`]}),_jsxs(Expandable,{title:`record`,children:[_jsx(ParamField,{body:`supplier_id`,type:`uuid`,required:true,id:`param-supplier-id`,children:_jsxs(_components.p,{children:[`The supplier’s `,_jsx(_components.code,{children:`id`}),`, as `,_jsx(_components.a,{href:`/api-reference/purchases/suppliers-create-v2`,children:`Create Purchase Suppliers (v2)`}),` answers it\nor `,_jsx(_components.a,{href:`/api-reference/purchases/suppliers-list`,children:`List Purchase Suppliers`}),` lists it.`]})}),_jsx(ParamField,{body:`code`,type:`string`,required:true,id:`param-code`,children:_jsxs(_components.p,{children:[`The supplier’s activity code in `,_jsx(_components.code,{children:`framework`}),`, up to 16 characters (see\n`,_jsx(_components.a,{href:`/api-reference/purchases/suppliers-create-v2#activity-codes`,children:`Activity codes`}),`).`]})}),_jsx(ParamField,{body:`framework`,type:`string`,required:true,id:`param-framework`,children:_jsxs(_components.p,{children:[`The classification of `,_jsx(_components.code,{children:`code`}),`: `,_jsx(_components.code,{children:`cnae_2009`}),` (CNAE 2009) or `,_jsx(_components.code,{children:`us_sic_v87`}),` (US SIC 1987).`]})}),_jsx(ParamField,{body:`client_row_id`,type:`string`,id:`param-client-row-id`,children:_jsx(_components.p,{children:`Your own reference for the record, up to 255 characters, echoed in errors and in the job items.`})})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`response`,children:`Response`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`202 Accepted`}),` with the job (`,_jsx(_components.code,{children:`entity_type: purchase_suppliers`}),`, `,_jsx(_components.code,{children:`operation: update`}),`) and a `,_jsx(_components.code,{children:`Location`}),` header to it.\n`,_jsx(_components.a,{href:`/api-reference/ingest-jobs/list-items`,children:_jsx(_components.code,{children:`GET /v2/ingest-jobs/{id}/items`})}),` has one item per supplier, in the order sent,\nwith the supplier’s id as `,_jsx(_components.code,{children:`entity_id`}),`; an item is `,_jsx(_components.code,{children:`failed`}),` with `,_jsx(_components.code,{children:`CALCULATION_FAILED`}),` when the supplier was deleted\nbefore the job reached it, or its purchases could not be queued.`]}),`\n`,_jsx(Heading,{level:`2`,id:`errors`,children:`Errors`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.a,{href:`/api-reference/errors`,children:`Problem details`}),`. Per-record codes in `,_jsx(_components.code,{children:`errors[].error_code`}),` of a `,_jsx(_components.code,{children:`422 BULK_RECORDS_REJECTED`}),`:`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:_jsx(_components.code,{children:`error_code`})}),_jsx(_components.th,{children:`Cause`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`SCHEMA_INVALID`})}),_jsxs(_components.td,{children:[`The record does not match the schema: no `,_jsx(_components.code,{children:`supplier_id`}),` or one that is not a UUID, no `,_jsx(_components.code,{children:`code`}),` or `,_jsx(_components.code,{children:`framework`}),`, a `,_jsx(_components.code,{children:`framework`}),` not listed, an unknown field (e.g. `,_jsx(_components.code,{children:`business_name`}),` or `,_jsx(_components.code,{children:`organization_id`}),`)… `,_jsx(_components.code,{children:`error_params.errors`}),` says where.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`REFERENCE_NOT_FOUND`})}),_jsxs(_components.td,{children:[`The supplier does not exist or is outside your organization’s `,_jsx(_components.a,{href:`/api-reference/ingest-jobs/overview#perimeter`,children:`perimeter`}),`, both answer the same (`,_jsx(_components.code,{children:`error_params.field`}),` is `,_jsx(_components.code,{children:`supplier_id`}),`), or `,_jsx(_components.code,{children:`code`}),` is not an active code of `,_jsx(_components.code,{children:`framework`}),` (`,_jsx(_components.code,{children:`code`}),`).`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`DUPLICATE_SUPPLIER`})}),_jsxs(_components.td,{children:[`Another record of the request has the same `,_jsx(_components.code,{children:`supplier_id`}),`.`]})]})]})]}),`\n`,_jsxs(_components.p,{children:[`Request-level errors: `,_jsx(_components.code,{children:`401`}),` for a missing or invalid API key, `,_jsx(_components.code,{children:`403 LOGGED_USER_NOT_MEMBER`}),` when the key’s user is not a\nmember of the organization, `,_jsx(_components.code,{children:`422 REQUEST_VALIDATION_FAILED`}),` for a malformed body (no `,_jsx(_components.code,{children:`records`}),`, more than 1,000, no\n`,_jsx(_components.code,{children:`Idempotency-Key`}),`), `,_jsx(_components.code,{children:`422 IDEMPOTENCY_KEY_REUSED`}),`, `,_jsx(_components.code,{children:`409 IDEMPOTENCY_KEY_IN_PROGRESS`}),`, and `,_jsx(_components.code,{children:`429`}),` beyond the\n`,_jsx(_components.a,{href:`/api-reference/rate-limits`,children:`rate limits`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`limits`,children:`Limits`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Limit`}),_jsx(_components.th,{children:`Value`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Records per request`}),_jsx(_components.td,{\"data-numeric\":`true`,children:`1 to 1,000`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Suppliers per recalculation chunk`}),_jsx(_components.td,{\"data-numeric\":`true`,children:`100`})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`related-endpoints`,children:`Related Endpoints`}),`\n`,_jsxs(CardGroup,{cols:2,children:[_jsx(Card,{title:`Create Purchase Suppliers (v2)`,icon:`plus`,href:`/api-reference/purchases/suppliers-create-v2`,children:_jsx(_components.p,{children:`Create new suppliers, with their code`})}),_jsx(Card,{title:`List Purchase Suppliers`,icon:`building`,href:`/api-reference/purchases/suppliers-list`,children:_jsx(_components.p,{children:`Find the ids to classify`})}),_jsx(Card,{title:`Create Purchases (v2)`,icon:`cart-shopping`,href:`/api-reference/purchases/create-v2`,children:_jsx(_components.p,{children:`Purchases from these suppliers`})}),_jsx(Card,{title:`Get Ingest Job`,icon:`magnifying-glass`,href:`/api-reference/ingest-jobs/get`,children:_jsx(_components.p,{children:`Follow the recalculation`})})]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"codeStyling":{"theme":{"light":"github-light","dark":"github-dark"}},"config":{},"pageMetadata":{"title":"Classify Purchase Suppliers (v2)","api":"PATCH /v2/purchases/suppliers","description":"Give up to 1,000 existing purchase suppliers their activity code and recalculate their purchases, as an ingest job","tag":"BETA","href":"/api-reference/purchases/suppliers-update-v2"}}}},"mdxExtracts":{"tableOfContents":[{"title":"How it works","slug":"how-it-works","depth":2,"children":[]},{"title":"Request","slug":"request","depth":2,"children":[{"title":"Headers","slug":"headers","depth":3,"children":[]},{"title":"Query Parameters","slug":"query-parameters","depth":3,"children":[]},{"title":"Body Parameters","slug":"body-parameters","depth":3,"children":[]}]},{"title":"Response","slug":"response","depth":2,"children":[]},{"title":"Errors","slug":"errors","depth":2,"children":[]},{"title":"Limits","slug":"limits","depth":2,"children":[]},{"title":"Related Endpoints","slug":"related-endpoints","depth":2,"children":[]}],"codeExamples":{"request":{"type":"RequestExample","children":[{"filename":"cURL","html":"\u003cpre class=\"shiki shiki-themes github-light github-dark\" style=\"background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8\" language=\"shellscript\">\u003ccode language=\"shellscript\" numberOfLines=\"15\">\u003cspan class=\"line\">\u003cspan style=\"color:#6F42C1;--shiki-dark:#B392F0\">curl\u003c/span>\u003cspan style=\"color:#005CC5;--shiki-dark:#79B8FF\"> -X\u003c/span>\u003cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\"> PATCH\u003c/span>\u003cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\"> \"https://api.dcycle.io/v2/purchases/suppliers\"\u003c/span>\u003cspan style=\"color:#005CC5;--shiki-dark:#79B8FF\"> \\\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#005CC5;--shiki-dark:#79B8FF\"> -H\u003c/span>\u003cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\"> \"x-api-key: ${\u003c/span>\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">DCYCLE_API_KEY\u003c/span>\u003cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\">}\"\u003c/span>\u003cspan style=\"color:#005CC5;--shiki-dark:#79B8FF\"> \\\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#005CC5;--shiki-dark:#79B8FF\"> -H\u003c/span>\u003cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\"> \"x-organization-id: ${\u003c/span>\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">DCYCLE_ORG_ID\u003c/span>\u003cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\">}\"\u003c/span>\u003cspan style=\"color:#005CC5;--shiki-dark:#79B8FF\"> \\\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#005CC5;--shiki-dark:#79B8FF\"> -H\u003c/span>\u003cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\"> \"Idempotency-Key: 9d8c7b6a-5f4e-4d3c-8b2a-1f0e9d8c7b6a\"\u003c/span>\u003cspan style=\"color:#005CC5;--shiki-dark:#79B8FF\"> \\\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#005CC5;--shiki-dark:#79B8FF\"> -H\u003c/span>\u003cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\"> \"Content-Type: application/json\"\u003c/span>\u003cspan style=\"color:#005CC5;--shiki-dark:#79B8FF\"> \\\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#005CC5;--shiki-dark:#79B8FF\"> -d\u003c/span>\u003cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\"> '{\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\"> \"records\": [\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\"> {\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\"> \"supplier_id\": \"5f4e3d2c-1b0a-4f9e-8d7c-6b5a4f3e2d1c\",\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\"> \"code\": \"1712\",\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\"> \"framework\": \"cnae_2009\",\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\"> \"client_row_id\": \"SUP-0042\"\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\"> }\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\"> ]\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\"> }'\u003c/span>\u003c/span>\n\u003c/code>\u003c/pre>"},{"filename":"Python","html":"\u003cpre class=\"shiki shiki-themes github-light github-dark\" style=\"background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8\" language=\"python\">\u003ccode language=\"python\" numberOfLines=\"26\">\u003cspan class=\"line\">\u003cspan style=\"color:#D73A49;--shiki-dark:#F97583\">import\u003c/span>\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\"> os\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#D73A49;--shiki-dark:#F97583\">import\u003c/span>\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\"> uuid\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#D73A49;--shiki-dark:#F97583\">import\u003c/span>\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\"> requests\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">response \u003c/span>\u003cspan style=\"color:#D73A49;--shiki-dark:#F97583\">=\u003c/span>\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\"> requests.patch(\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\"> \"https://api.dcycle.io/v2/purchases/suppliers\"\u003c/span>\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#E36209;--shiki-dark:#FFAB70\"> headers\u003c/span>\u003cspan style=\"color:#D73A49;--shiki-dark:#F97583\">=\u003c/span>\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">{\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\"> \"x-api-key\"\u003c/span>\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">: os.environ[\u003c/span>\u003cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\">\"DCYCLE_API_KEY\"\u003c/span>\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">],\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\"> \"x-organization-id\"\u003c/span>\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">: os.environ[\u003c/span>\u003cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\">\"DCYCLE_ORG_ID\"\u003c/span>\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">],\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\"> \"Idempotency-Key\"\u003c/span>\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">: \u003c/span>\u003cspan style=\"color:#005CC5;--shiki-dark:#79B8FF\">str\u003c/span>\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">(uuid.uuid4()), \u003c/span>\u003cspan style=\"color:#6A737D;--shiki-dark:#6A737D\"># keep it to retry this same batch\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\"> },\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#E36209;--shiki-dark:#FFAB70\"> json\u003c/span>\u003cspan style=\"color:#D73A49;--shiki-dark:#F97583\">=\u003c/span>\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">{\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\"> \"records\"\u003c/span>\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">: [\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\"> {\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\"> \"supplier_id\"\u003c/span>\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">: \u003c/span>\u003cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\">\"5f4e3d2c-1b0a-4f9e-8d7c-6b5a4f3e2d1c\"\u003c/span>\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\"> \"code\"\u003c/span>\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">: \u003c/span>\u003cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\">\"1712\"\u003c/span>\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\"> \"framework\"\u003c/span>\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">: \u003c/span>\u003cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\">\"cnae_2009\"\u003c/span>\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\"> \"client_row_id\"\u003c/span>\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">: \u003c/span>\u003cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\">\"SUP-0042\"\u003c/span>\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\"> }\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\"> ]\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\"> },\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#E36209;--shiki-dark:#FFAB70\"> timeout\u003c/span>\u003cspan style=\"color:#D73A49;--shiki-dark:#F97583\">=\u003c/span>\u003cspan style=\"color:#005CC5;--shiki-dark:#79B8FF\">60\u003c/span>\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">)\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">response.raise_for_status()\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#005CC5;--shiki-dark:#79B8FF\">print\u003c/span>\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">(response.json()[\u003c/span>\u003cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\">\"id\"\u003c/span>\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">])\u003c/span>\u003c/span>\n\u003c/code>\u003c/pre>"}],"attributes":[]},"response":{"type":"ResponseExample","children":[{"filename":"202","html":"\u003cpre class=\"shiki shiki-themes github-light github-dark\" style=\"background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8\" language=\"json\">\u003ccode language=\"json\" numberOfLines=\"16\">\u003cspan class=\"line\">\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">{\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#005CC5;--shiki-dark:#79B8FF\"> \"id\"\u003c/span>\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">: \u003c/span>\u003cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\">\"2b1a0f9e-8d7c-4b6a-9f5e-4d3c2b1a0f9e\"\u003c/span>\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#005CC5;--shiki-dark:#79B8FF\"> \"status\"\u003c/span>\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">: \u003c/span>\u003cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\">\"processing\"\u003c/span>\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#005CC5;--shiki-dark:#79B8FF\"> \"entity_type\"\u003c/span>\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">: \u003c/span>\u003cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\">\"purchase_suppliers\"\u003c/span>\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#005CC5;--shiki-dark:#79B8FF\"> \"operation\"\u003c/span>\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">: \u003c/span>\u003cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\">\"update\"\u003c/span>\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#005CC5;--shiki-dark:#79B8FF\"> \"source\"\u003c/span>\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">: \u003c/span>\u003cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\">\"api_bulk\"\u003c/span>\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#005CC5;--shiki-dark:#79B8FF\"> \"counts\"\u003c/span>\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">: { \u003c/span>\u003cspan style=\"color:#005CC5;--shiki-dark:#79B8FF\">\"submitted\"\u003c/span>\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">: \u003c/span>\u003cspan style=\"color:#005CC5;--shiki-dark:#79B8FF\">1\u003c/span>\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">, \u003c/span>\u003cspan style=\"color:#005CC5;--shiki-dark:#79B8FF\">\"succeeded\"\u003c/span>\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">: \u003c/span>\u003cspan style=\"color:#005CC5;--shiki-dark:#79B8FF\">0\u003c/span>\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">, \u003c/span>\u003cspan style=\"color:#005CC5;--shiki-dark:#79B8FF\">\"failed\"\u003c/span>\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">: \u003c/span>\u003cspan style=\"color:#005CC5;--shiki-dark:#79B8FF\">0\u003c/span>\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\"> },\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#005CC5;--shiki-dark:#79B8FF\"> \"chunks_total\"\u003c/span>\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">: \u003c/span>\u003cspan style=\"color:#005CC5;--shiki-dark:#79B8FF\">1\u003c/span>\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#005CC5;--shiki-dark:#79B8FF\"> \"chunks_done\"\u003c/span>\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">: \u003c/span>\u003cspan style=\"color:#005CC5;--shiki-dark:#79B8FF\">0\u003c/span>\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#005CC5;--shiki-dark:#79B8FF\"> \"created_at\"\u003c/span>\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">: \u003c/span>\u003cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\">\"2026-10-29T09:20:31.877Z\"\u003c/span>\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#005CC5;--shiki-dark:#79B8FF\"> \"finished_at\"\u003c/span>\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">: \u003c/span>\u003cspan style=\"color:#005CC5;--shiki-dark:#79B8FF\">null\u003c/span>\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#005CC5;--shiki-dark:#79B8FF\"> \"links\"\u003c/span>\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">: {\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#005CC5;--shiki-dark:#79B8FF\"> \"self\"\u003c/span>\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">: \u003c/span>\u003cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\">\"/v2/ingest-jobs/2b1a0f9e-8d7c-4b6a-9f5e-4d3c2b1a0f9e\"\u003c/span>\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#005CC5;--shiki-dark:#79B8FF\"> \"items\"\u003c/span>\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">: \u003c/span>\u003cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\">\"/v2/ingest-jobs/2b1a0f9e-8d7c-4b6a-9f5e-4d3c2b1a0f9e/items\"\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\"> }\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">}\u003c/span>\u003c/span>\n\u003c/code>\u003c/pre>"},{"filename":"422","html":"\u003cpre class=\"shiki shiki-themes github-light github-dark\" style=\"background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8\" language=\"json\">\u003ccode language=\"json\" numberOfLines=\"17\">\u003cspan class=\"line\">\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">{\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#005CC5;--shiki-dark:#79B8FF\"> \"type\"\u003c/span>\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">: \u003c/span>\u003cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\">\"https://code.dcycle.io/api-reference/errors#BULK_RECORDS_REJECTED\"\u003c/span>\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#005CC5;--shiki-dark:#79B8FF\"> \"title\"\u003c/span>\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">: \u003c/span>\u003cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\">\"Unprocessable Entity\"\u003c/span>\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#005CC5;--shiki-dark:#79B8FF\"> \"status\"\u003c/span>\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">: \u003c/span>\u003cspan style=\"color:#005CC5;--shiki-dark:#79B8FF\">422\u003c/span>\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#005CC5;--shiki-dark:#79B8FF\"> \"code\"\u003c/span>\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">: \u003c/span>\u003cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\">\"BULK_RECORDS_REJECTED\"\u003c/span>\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#005CC5;--shiki-dark:#79B8FF\"> \"detail\"\u003c/span>\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">: \u003c/span>\u003cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\">\"1 of the submitted records are invalid; nothing was written.\"\u003c/span>\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#005CC5;--shiki-dark:#79B8FF\"> \"errors\"\u003c/span>\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">: [\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\"> {\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#005CC5;--shiki-dark:#79B8FF\"> \"source_row_index\"\u003c/span>\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">: \u003c/span>\u003cspan style=\"color:#005CC5;--shiki-dark:#79B8FF\">0\u003c/span>\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#005CC5;--shiki-dark:#79B8FF\"> \"client_row_id\"\u003c/span>\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">: \u003c/span>\u003cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\">\"SUP-0042\"\u003c/span>\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#005CC5;--shiki-dark:#79B8FF\"> \"error_code\"\u003c/span>\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">: \u003c/span>\u003cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\">\"REFERENCE_NOT_FOUND\"\u003c/span>\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#005CC5;--shiki-dark:#79B8FF\"> \"error_params\"\u003c/span>\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">: { \u003c/span>\u003cspan style=\"color:#005CC5;--shiki-dark:#79B8FF\">\"field\"\u003c/span>\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">: \u003c/span>\u003cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\">\"supplier_id\"\u003c/span>\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">, \u003c/span>\u003cspan style=\"color:#005CC5;--shiki-dark:#79B8FF\">\"value\"\u003c/span>\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">: \u003c/span>\u003cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\">\"5f4e3d2c-1b0a-4f9e-8d7c-6b5a4f3e2d1c\"\u003c/span>\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\"> }\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\"> }\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\"> ],\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#005CC5;--shiki-dark:#79B8FF\"> \"rejected\"\u003c/span>\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">: \u003c/span>\u003cspan style=\"color:#005CC5;--shiki-dark:#79B8FF\">1\u003c/span>\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#005CC5;--shiki-dark:#79B8FF\"> \"request_id\"\u003c/span>\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">: \u003c/span>\u003cspan style=\"color:#032F62;--shiki-dark:#9ECBFF\">\"b2248a31-0f1b-4a7d-83ce-b29bd5977b4c\"\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">}\u003c/span>\u003c/span>\n\u003c/code>\u003c/pre>"},{"filename":"200 (dry_run=true)","html":"\u003cpre class=\"shiki shiki-themes github-light github-dark\" style=\"background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8\" language=\"json\">\u003ccode language=\"json\" numberOfLines=\"1\">\u003cspan class=\"line\">\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">{ \u003c/span>\u003cspan style=\"color:#005CC5;--shiki-dark:#79B8FF\">\"dry_run\"\u003c/span>\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">: \u003c/span>\u003cspan style=\"color:#005CC5;--shiki-dark:#79B8FF\">true\u003c/span>\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">, \u003c/span>\u003cspan style=\"color:#005CC5;--shiki-dark:#79B8FF\">\"submitted\"\u003c/span>\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">: \u003c/span>\u003cspan style=\"color:#005CC5;--shiki-dark:#79B8FF\">1\u003c/span>\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">, \u003c/span>\u003cspan style=\"color:#005CC5;--shiki-dark:#79B8FF\">\"valid\"\u003c/span>\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\">: \u003c/span>\u003cspan style=\"color:#005CC5;--shiki-dark:#79B8FF\">1\u003c/span>\u003cspan style=\"color:#24292E;--shiki-dark:#E1E4E8\"> }\u003c/span>\u003c/span>\n\u003c/code>\u003c/pre>"}],"attributes":[]}},"endpoint":{"title":"Classify Purchase Suppliers (v2)","path":"/v2/purchases/suppliers","servers":[{"url":"https://api.dcycle.io"}],"method":"patch","request":{"security":[],"parameters":{"query":{"dry_run":{"schema":[{"type":"boolean","description":"Check only: the same `422` for invalid records, nothing written, no job; `200` with `{\"dry_run\": true, \"submitted\": n, \"valid\": n}` when every record is valid. The `Idempotency-Key` header is still required, but a dry run does not check or store it."}]}},"header":{"x-api-key":{"schema":[{"type":"string","description":"Your API key (see Authentication ).","required":true}]},"x-organization-id":{"schema":[{"type":"string","description":"The organization the suppliers are classified for. Its suppliers, and those of the organizations under it that you can write to (its perimeter ), can be classified.","required":true}]},"Idempotency-Key":{"schema":[{"type":"string","description":"1 to 255 characters, one per batch, looked up per organization across every v2 bulk route. Within 24 hours, the same key with the same route and body returns the original job (with `Idempotent-Replayed: true` ); the same key with another body or on another route is `422 IDEMPOTENCY_KEY_REUSED` , and while the first request is still being processed `409 IDEMPOTENCY_KEY_IN_PROGRESS` . After 24 hours the key is free, and a request with it is a new one. See The Idempotency-Key .","required":true}]}},"cookie":{},"path":{}},"body":{"application/json":{"schemaArray":[{"type":"object","properties":{"records":[{"type":"object","properties":{"supplier_id":[{"type":"string","description":"The supplier’s `id` , as Create Purchase Suppliers (v2) answers it or List Purchase Suppliers lists it.","required":true}],"code":[{"type":"string","description":"The supplier’s activity code in `framework` , up to 16 characters (see Activity codes ).","required":true}],"framework":[{"type":"string","description":"The classification of `code` : `cnae_2009` (CNAE 2009) or `us_sic_v87` (US SIC 1987).","required":true}],"client_row_id":[{"type":"string","description":"Your own reference for the record, up to 255 characters, echoed in errors and in the job items."}]},"description":"The suppliers to classify, 1 to 1,000. A field not listed here is rejected ( `SCHEMA_INVALID` ).","required":true}]}}],"examples":{"example":{"value":{"records":{"supplier_id":"\u003cstring>","code":"\u003cstring>","framework":"\u003cstring>","client_row_id":"\u003cstring>"}}}}}}},"response":{},"deprecated":false}},"jsLinks":[],"subdomain":"dcyleio","siteName":"Dcycle Platform Docs","title":"Classify Purchase Suppliers (v2) - Dcycle Platform Docs","navMaps":{"firstHrefInVersion":{"New API (Recommended)":{"href":"/api-reference/purchases/suppliers-update-v2","matchLevel":0},"Legacy API":{"href":"/api-reference/legacy/purchases/list","matchLevel":2}},"firstHrefInLanguage":{}},"lastModified":"2026-10-29T11:28:17.791Z","originalFileLocation":"api-reference/purchases/suppliers-update-v2.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=\"Give up to 1,000 existing purchase suppliers their activity code and recalculate their purchases, as an ingest job\">\u003cmeta data-mint-head name=\"application-name\" content=\"Dcycle Platform Docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/dcyleio/q7dxVY1vTbgXGd35/_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/dcyleio/q7dxVY1vTbgXGd35/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/dcyleio/q7dxVY1vTbgXGd35/_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/dcyleio/q7dxVY1vTbgXGd35/_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/dcyleio/q7dxVY1vTbgXGd35/_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/dcyleio/q7dxVY1vTbgXGd35/_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/dcyleio/q7dxVY1vTbgXGd35/_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/dcyleio/q7dxVY1vTbgXGd35/_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/dcyleio/q7dxVY1vTbgXGd35/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Classify Purchase Suppliers (v2) - Dcycle Platform Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Give up to 1,000 existing purchase suppliers their activity code and recalculate their purchases, as an ingest job\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Dcycle Platform Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://code.dcycle.io/api-reference/purchases/suppliers-update-v2\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://dcyleio.mintlify.app/_mintlify/api/og/v2?division=Purchases\u0026amp;title=Classify+Purchase+Suppliers+%28v2%29\u0026amp;description=Give+up+to+1%2C000+existing+purchase+suppliers+their+activity+code+and+recalculate+their+purchases%2C+as+an+ingest+job\u0026amp;theme=d115002796afa8d4456400b7\u0026amp;signature=4a137265bda42d344a6ad995be2531217602bacb857fb90e019f3699beace332\">\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=\"Classify Purchase Suppliers (v2) - Dcycle Platform Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Give up to 1,000 existing purchase suppliers their activity code and recalculate their purchases, as an ingest job\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://dcyleio.mintlify.app/_mintlify/api/og/v2?division=Purchases\u0026amp;title=Classify+Purchase+Suppliers+%28v2%29\u0026amp;description=Give+up+to+1%2C000+existing+purchase+suppliers+their+activity+code+and+recalculate+their+purchases%2C+as+an+ingest+job\u0026amp;theme=d115002796afa8d4456400b7\u0026amp;signature=4a137265bda42d344a6ad995be2531217602bacb857fb90e019f3699beace332\">\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/dcyleio/q7dxVY1vTbgXGd35/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Dcycle Platform Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#006ad4\">\u003clink data-mint-head rel=\"canonical\" href=\"https://code.dcycle.io/api-reference/purchases/suppliers-update-v2\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/purchases/suppliers-update-v2.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://code.dcycle.io/#organization\",\"name\":\"Dcycle Platform Docs\",\"url\":\"https://code.dcycle.io\"},{\"@type\":\"WebSite\",\"@id\":\"https://code.dcycle.io#website\",\"name\":\"Dcycle Platform Docs\",\"url\":\"https://code.dcycle.io\",\"publisher\":{\"@id\":\"https://code.dcycle.io/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://code.dcycle.io/api-reference/purchases/suppliers-update-v2#webpage\",\"url\":\"https://code.dcycle.io/api-reference/purchases/suppliers-update-v2\",\"name\":\"Classify Purchase Suppliers (v2)\",\"description\":\"Give up to 1,000 existing purchase suppliers their activity code and recalculate their purchases, as an ingest job\",\"dateModified\":\"2026-10-29T11:28:17.791Z\",\"isPartOf\":{\"@id\":\"https://code.dcycle.io#website\"},\"breadcrumb\":{\"@id\":\"https://code.dcycle.io/api-reference/purchases/suppliers-update-v2#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://code.dcycle.io/api-reference/purchases/suppliers-update-v2#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Purchases\",\"item\":\"https://code.dcycle.io/api-reference/purchases/overview\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Classify Purchase Suppliers (v2)\",\"item\":\"https://code.dcycle.io/api-reference/purchases/suppliers-update-v2\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://code.dcycle.io/api-reference/purchases/suppliers-update-v2#apireference\",\"headline\":\"Classify Purchase Suppliers (v2)\",\"name\":\"Classify Purchase Suppliers (v2)\",\"description\":\"Give up to 1,000 existing purchase suppliers their activity code and recalculate their purchases, as an ingest job\",\"url\":\"https://code.dcycle.io/api-reference/purchases/suppliers-update-v2\",\"mainEntityOfPage\":{\"@id\":\"https://code.dcycle.io/api-reference/purchases/suppliers-update-v2#webpage\"},\"dateModified\":\"2026-10-29T11:28:17.791Z\",\"publisher\":{\"@id\":\"https://code.dcycle.io/#organization\"},\"isPartOf\":{\"@id\":\"https://code.dcycle.io#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Dcycle Platform Docs\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Dcycle Platform Docs","nav":{"global":null,"tabs":[{"tab":"Get Started","pages":[{"title":"Get Started","href":"/docs/introduction"}]},{"tab":"Guides","pages":[{"title":"Guides","href":"/guides/emissions/overview"}]},{"tab":"API","versions":[{"version":"New API (Recommended)","groups":[{"group":"Introduction","pages":[{"title":"API Introduction","href":"/api-reference/introduction"},{"title":"Changelog","href":"/api-reference/changelog"},{"title":"Errors","href":"/api-reference/errors"},{"title":"OpenAPI \u0026 SDKs","href":"/api-reference/openapi-sdks"},{"title":"Rate Limits","href":"/api-reference/rate-limits"}]},{"group":"Business Travels","pages":[{"title":"Business Travels API","href":"/api-reference/business-travels/overview"},{"title":"Get Business Travel Totals","api":"GET /v1/business-travels/totals","href":"/api-reference/business-travels/totals"},{"title":"Get Business Travel Version History","api":"GET /v1/business-travels/{business_travel_id}/versions","href":"/api-reference/business-travels/versions"},{"title":"List Business Travels","api":"GET /v1/business-travels","href":"/api-reference/business-travels/list"},{"title":"Get Business Travel","api":"GET /v1/business-travels/{business_travel_id}","href":"/api-reference/business-travels/get"},{"title":"Create Business Travel","api":"POST /v1/business-travels","deprecated":true,"href":"/api-reference/business-travels/create"},{"title":"Create Business Travels (v2)","api":"POST /v2/business-travels","tag":"BETA","href":"/api-reference/business-travels/create-v2"},{"title":"Delete Business Travels (v2)","api":"POST /v2/business-travels/delete","tag":"BETA","href":"/api-reference/business-travels/delete-v2"},{"title":"Update Business Travel","api":"PATCH /v1/business-travels/{business_travel_id}","href":"/api-reference/business-travels/update"},{"title":"Delete Business Travel","api":"DELETE /v1/business-travels/{business_travel_id}","deprecated":true,"href":"/api-reference/business-travels/delete"},{"title":"Bulk Delete Business Travels","api":"POST /v1/business-travels/bulk-delete","deprecated":true,"href":"/api-reference/business-travels/bulk-delete"},{"title":"Bulk Delete Business Travels by Filters","api":"POST /v1/business-travels/bulk-delete-by-filters","href":"/api-reference/business-travels/bulk-delete-by-filters"}]},{"group":"Custom Emission Factors","pages":[{"title":"Custom Emission Factor Databases","tag":"BETA","href":"/api-reference/custom-emission-factors/overview"},{"title":"List Custom Database Versions","api":"GET /v1/emission-factors/custom-databases/{database_id}/versions","tag":"BETA","href":"/api-reference/custom-emission-factors/list-versions"},{"title":"List Custom Databases","api":"GET /v1/emission-factors/custom-databases","tag":"BETA","href":"/api-reference/custom-emission-factors/list-databases"},{"title":"List Custom Records","api":"GET /v1/emission-factors/custom-databases/{database_id}/versions/{source_id}/records","tag":"BETA","href":"/api-reference/custom-emission-factors/list-records"},{"title":"Get Custom Record","api":"GET /v1/emission-factors/custom-databases/record/{record_id}","tag":"BETA","href":"/api-reference/custom-emission-factors/get-record"},{"title":"Create Custom Database","api":"POST /v1/emission-factors/custom-databases","tag":"BETA","href":"/api-reference/custom-emission-factors/create-database"},{"title":"Create Custom Database Version","api":"POST /v1/emission-factors/custom-databases/{database_id}/versions","tag":"BETA","href":"/api-reference/custom-emission-factors/create-version"},{"title":"Create Custom Record","api":"POST /v1/emission-factors/custom-databases/{database_id}/versions/{source_id}/records","tag":"BETA","href":"/api-reference/custom-emission-factors/create-record"},{"title":"Update Custom Record","api":"PATCH /v1/emission-factors/custom-databases/{database_id}/versions/{source_id}/records/{record_id}","tag":"BETA","href":"/api-reference/custom-emission-factors/update-record"},{"title":"Delete Custom Record","api":"DELETE /v1/emission-factors/custom-databases/{database_id}/versions/{source_id}/records/{record_id}","tag":"BETA","href":"/api-reference/custom-emission-factors/delete-record"}]},{"group":"Custom Emission Groups","pages":[{"title":"List Custom Emission Groups","api":"GET /custom_emission_groups/light","href":"/api-reference/custom-emission-groups/list-light"}]},{"group":"Custom KPI","pages":[{"title":"Custom KPI","href":"/api-reference/custom-kpi/overview"},{"title":"List Dataset Values","api":"GET /v1/custom-kpi-datasets/{dataset_id}/values","href":"/api-reference/custom-kpi/list-dataset-values"},{"title":"List Datasets","api":"GET /v1/custom-kpi-datasets","href":"/api-reference/custom-kpi/list-datasets"},{"title":"Get Dataset","api":"GET /v1/custom-kpi-datasets/{dataset_id}","href":"/api-reference/custom-kpi/get-dataset"},{"title":"Create Dataset","api":"POST /v1/custom-kpi-datasets","href":"/api-reference/custom-kpi/create-dataset"},{"title":"Download Excel","api":"POST /v1/custom-kpi-datasets/{dataset_id}/download_excel","href":"/api-reference/custom-kpi/download-excel"},{"title":"Submit Response","api":"POST /v1/custom-kpi-datasets/{dataset_id}/responses","href":"/api-reference/custom-kpi/submit-response"},{"title":"Update Dataset","api":"PATCH /v1/custom-kpi-datasets/{dataset_id}","href":"/api-reference/custom-kpi/update-dataset"},{"title":"Delete Dataset","api":"DELETE /v1/custom-kpi-datasets/{dataset_id}","href":"/api-reference/custom-kpi/delete-dataset"},{"title":"Presigned URL","api":"POST /v1/custom-kpi-datasets/{dataset_id}/responses/attachments/presigned-url","href":"/api-reference/custom-kpi/presigned-url"},{"group":"Assignments","expanded":true,"pages":[{"title":"List Assignments","api":"GET /v1/custom-kpi-datasets/{dataset_id}/assignments","href":"/api-reference/custom-kpi/list-assignments"},{"title":"Create Assignment","api":"POST /v1/custom-kpi-datasets/{dataset_id}/assignments","href":"/api-reference/custom-kpi/create-assignment"},{"title":"Update Assignment","api":"PATCH /v1/custom-kpi-datasets/{dataset_id}/assignments/{assignment_id}","href":"/api-reference/custom-kpi/update-assignment"},{"title":"Delete Assignment","api":"DELETE /v1/custom-kpi-datasets/{dataset_id}/assignments/{assignment_id}","href":"/api-reference/custom-kpi/delete-assignment"}]},{"group":"Campaigns","expanded":true,"pages":[{"title":"Assignment Versions","api":"GET /v1/custom-kpi-datasets/{dataset_id}/campaigns/{campaign_id}/assignments/{campaign_assignment_id}/versions","href":"/api-reference/custom-kpi/assignment-versions"},{"title":"Get Assignment Values","api":"GET /v1/custom-kpi-datasets/{dataset_id}/campaigns/{campaign_id}/assignments/{campaign_assignment_id}/values","href":"/api-reference/custom-kpi/get-assignment-values"},{"title":"List Campaign Values","api":"GET /v1/custom-kpi-datasets/{dataset_id}/campaigns/{campaign_id}/values","href":"/api-reference/custom-kpi/list-campaign-values"},{"title":"List Campaigns","api":"GET /v1/custom-kpi-datasets/{dataset_id}/campaigns","href":"/api-reference/custom-kpi/list-campaigns"},{"title":"List Response Sets","api":"GET /v1/custom-kpi-datasets/{dataset_id}/campaigns/{campaign_id}/response-sets","href":"/api-reference/custom-kpi/list-response-sets"},{"title":"Get Campaign","api":"GET /v1/custom-kpi-datasets/{dataset_id}/campaigns/{campaign_id}","href":"/api-reference/custom-kpi/get-campaign"},{"title":"Add Campaign Recipient","api":"POST /v1/custom-kpi-datasets/{dataset_id}/campaigns/{campaign_id}/assignments","href":"/api-reference/custom-kpi/add-campaign-recipient"},{"title":"Create Campaign","api":"POST /v1/custom-kpi-datasets/{dataset_id}/campaigns","href":"/api-reference/custom-kpi/create-campaign"},{"title":"Lock Campaign","api":"POST /v1/custom-kpi-datasets/{dataset_id}/campaigns/{campaign_id}/lock","href":"/api-reference/custom-kpi/lock-campaign"},{"title":"Resend Invite","api":"POST /v1/custom-kpi-datasets/{dataset_id}/campaigns/{campaign_id}/assignments/{campaign_assignment_id}/resend","href":"/api-reference/custom-kpi/resend-invite"},{"title":"Send Invites","api":"POST /v1/custom-kpi-datasets/{dataset_id}/campaigns/{campaign_id}/send-invites","href":"/api-reference/custom-kpi/send-invites"},{"title":"Unlock Campaign","api":"POST /v1/custom-kpi-datasets/{dataset_id}/campaigns/{campaign_id}/unlock","href":"/api-reference/custom-kpi/unlock-campaign"},{"title":"Edit Assignment Values","api":"PATCH /v1/custom-kpi-datasets/{dataset_id}/campaigns/{campaign_id}/assignments/{campaign_assignment_id}/values","href":"/api-reference/custom-kpi/edit-assignment-values"},{"title":"Update Campaign","api":"PATCH /v1/custom-kpi-datasets/{dataset_id}/campaigns/{campaign_id}","href":"/api-reference/custom-kpi/update-campaign"},{"title":"Delete Campaign","api":"DELETE /v1/custom-kpi-datasets/{dataset_id}/campaigns/{campaign_id}","href":"/api-reference/custom-kpi/delete-campaign"},{"title":"Remove Campaign Recipient","api":"DELETE /v1/custom-kpi-datasets/{dataset_id}/campaigns/{campaign_id}/assignments/{campaign_assignment_id}","href":"/api-reference/custom-kpi/remove-campaign-recipient"}]},{"group":"KPIs","expanded":true,"pages":[{"title":"Create KPI","api":"POST /v1/custom-kpi-datasets/{dataset_id}/kpis","href":"/api-reference/custom-kpi/create-kpi"},{"title":"Update KPI","api":"PATCH /v1/custom-kpi-datasets/{dataset_id}/kpis/{kpi_id}","href":"/api-reference/custom-kpi/update-kpi"},{"title":"Delete KPI","api":"DELETE /v1/custom-kpi-datasets/{dataset_id}/kpis/{kpi_id}","href":"/api-reference/custom-kpi/delete-kpi"}]}]},{"group":"Dashboards","pages":[{"title":"Dashboards API","href":"/api-reference/dashboards/overview"},{"title":"List Dashboards","api":"GET /v2/dashboard","href":"/api-reference/dashboards/list"},{"title":"Get Dashboard","api":"GET /v2/dashboard/{dashboard_id}","href":"/api-reference/dashboards/get"},{"title":"Create Dashboard","api":"POST /v2/dashboard","href":"/api-reference/dashboards/create"},{"title":"Update Dashboard","api":"PATCH /v2/dashboard/{dashboard_id}","href":"/api-reference/dashboards/update"},{"title":"Delete Dashboard","api":"DELETE /v2/dashboard/{dashboard_id}","href":"/api-reference/dashboards/delete"}]},{"group":"Datasets","pages":[{"title":"Get Dataset Schema","api":"GET /v1/datasets/{key}/schema","href":"/api-reference/datasets/schema"},{"title":"List Available Datasets","api":"GET /v1/datasets","href":"/api-reference/datasets/list"},{"title":"Query datasets","api":"POST /v1/datasets/{key}/query","href":"/api-reference/datasets/query"}]},{"group":"Emissions","pages":[{"title":"Emissions","href":"/api-reference/emissions/overview"},{"title":"Get Emissions Summary","api":"GET /v1/total-impacts","href":"/api-reference/emissions/get-summary"}]},{"group":"Employees","pages":[{"title":"Employees API","href":"/api-reference/employees/overview"},{"title":"List Employees","api":"GET /v1/employees","href":"/api-reference/employees/list"},{"title":"List Employees (V2)","api":"GET /v2/employees","href":"/api-reference/employees/list-v2"},{"title":"List Survey Rows","api":"GET /v2/employees/survey-rows","href":"/api-reference/employees/survey-rows"},{"title":"Queue Pending Mobility Survey Export","api":"GET /v2/employees/pending-survey/download","href":"/api-reference/employees/pending-survey-download"},{"title":"Get Employee","api":"GET /v1/employees/{employee_id}","href":"/api-reference/employees/get"},{"title":"Create Commuting Periods (v2)","api":"POST /v2/employees/commuting","tag":"BETA","href":"/api-reference/employees/commuting-create-v2"},{"title":"Create Employee","api":"POST /v1/employees","deprecated":true,"href":"/api-reference/employees/create"},{"title":"Create Employees (v2)","api":"POST /v2/employees","tag":"BETA","href":"/api-reference/employees/create-v2"},{"title":"Delete Commuting Periods (v2)","api":"POST /v2/employees/commuting/delete","tag":"BETA","href":"/api-reference/employees/commuting-delete-v2"},{"title":"Delete Employees (v2)","api":"POST /v2/employees/delete","tag":"BETA","href":"/api-reference/employees/delete-v2"},{"title":"Download Survey Rows","api":"POST /v2/employees/survey-rows/export","href":"/api-reference/employees/survey-rows-export"},{"title":"Resend Commuting Survey","api":"POST /v1/employees/resend-survey","href":"/api-reference/employees/resend-survey"},{"title":"Update Employee","api":"PATCH /v1/employees/{employee_id}","href":"/api-reference/employees/update"},{"title":"Delete Employee","api":"DELETE /v1/employees/{employee_id}","deprecated":true,"href":"/api-reference/employees/delete"},{"title":"Bulk Delete Employees","api":"POST /v2/employees/bulk-delete","href":"/api-reference/employees/bulk-delete"},{"title":"Bulk Delete Employees by Filters","api":"POST /v2/employees/bulk-delete-by-filters","href":"/api-reference/employees/bulk-delete-by-filters"},{"title":"CSV Import","api":"POST /v1/employees/csv","href":"/api-reference/employees/csv-import"},{"title":"Recalculate Employees","api":"POST /v2/employees/recalculate","href":"/api-reference/employees/recalculate"},{"group":"Commuting Periods","expanded":true,"pages":[{"title":"Calculation Steps","api":"GET /v1/employee-historic/{employee_historic_id}/steps","href":"/api-reference/employees/commuting-periods/calculation-steps"},{"title":"List Commuting Periods","api":"GET /v1/employee-historic","href":"/api-reference/employees/commuting-periods/list"},{"title":"Get Commuting Period","api":"GET /v1/employee-historic/{employee_historic_id}","href":"/api-reference/employees/commuting-periods/get"},{"title":"Create Commuting Period","api":"POST /v1/employee-historic","deprecated":true,"href":"/api-reference/employees/commuting-periods/create"},{"title":"Update Commuting Period","api":"PATCH /v1/employee-historic/{employee_historic_id}","href":"/api-reference/employees/commuting-periods/update"},{"title":"Delete Commuting Period","api":"DELETE /v1/employee-historic/{employee_historic_id}","deprecated":true,"href":"/api-reference/employees/commuting-periods/delete"},{"title":"CSV Upload","api":"POST /v1/employee-historic/bulk/csv","deprecated":true,"href":"/api-reference/employees/commuting-periods/csv-upload"}]},{"group":"Survey Templates","expanded":true,"pages":[{"title":"Survey Templates API","href":"/api-reference/employees/survey-templates/overview"},{"title":"List Survey Templates","api":"GET /v1/employee-survey-templates","href":"/api-reference/employees/survey-templates/list"},{"title":"Get Survey Template","api":"GET /v1/employee-survey-templates/{template_id}","href":"/api-reference/employees/survey-templates/get"},{"title":"Create Survey Template","api":"POST /v1/employee-survey-templates","href":"/api-reference/employees/survey-templates/create"},{"title":"Block Template","api":"PATCH /v1/employee-survey-templates/{template_id}/block","href":"/api-reference/employees/survey-templates/block"},{"title":"Set Default Template","api":"PATCH /v1/employee-survey-templates/{template_id}/default","href":"/api-reference/employees/survey-templates/set-default"},{"title":"Unblock Template","api":"PATCH /v1/employee-survey-templates/{template_id}/unblock","href":"/api-reference/employees/survey-templates/unblock"},{"title":"Update Survey Template","api":"PATCH /v1/employee-survey-templates/{template_id}","href":"/api-reference/employees/survey-templates/update"},{"title":"Delete Survey Template","api":"DELETE /v1/employee-survey-templates/{template_id}","href":"/api-reference/employees/survey-templates/delete"},{"title":"Clone Survey Template","api":"POST /v1/employee-survey-templates/{template_id}/clone","href":"/api-reference/employees/survey-templates/clone"}]}]},{"group":"Facilities","pages":[{"title":"Facilities API","href":"/api-reference/facilities/overview"},{"title":"Get Facility Version History","api":"GET /v1/facilities/{facility_id}/versions","href":"/api-reference/facilities/versions"},{"title":"List Facilities","api":"GET /v1/facilities","href":"/api-reference/facilities/list"},{"title":"Get Facility","api":"GET /v1/facilities/{facility_id}","href":"/api-reference/facilities/get"},{"title":"Create Facilities (v2)","api":"POST /v2/facilities","tag":"BETA","href":"/api-reference/facilities/create-v2"},{"title":"Create Facility","api":"POST /v1/facilities","deprecated":true,"href":"/api-reference/facilities/create"},{"title":"Create Waste Water Facility","api":"POST /v1/facilities/waste_water","deprecated":true,"href":"/api-reference/facilities/create-waste-water"},{"title":"Delete Facilities (v2)","api":"POST /v2/facilities/delete","tag":"BETA","href":"/api-reference/facilities/delete-v2"},{"title":"Update Facility","api":"PUT /v1/facilities/{facility_id}","href":"/api-reference/facilities/update"},{"title":"Delete Facility","api":"DELETE /v1/facilities/{facility_id}","deprecated":true,"href":"/api-reference/facilities/delete"}]},{"group":"Files","pages":[{"title":"Files","href":"/api-reference/files/overview"},{"title":"List File Readings","api":"GET /v1/files/readings","href":"/api-reference/files/readings"},{"title":"Create Records From File Reading","api":"POST /v1/files/readings","href":"/api-reference/files/create-records"},{"title":"Retry File Processing","api":"POST /v1/files/send-event","href":"/api-reference/files/process"},{"title":"Update File Reading","api":"PUT /v1/files/readings/{file_reading_id}","href":"/api-reference/files/update-reading"},{"title":"Upload Files","api":"POST /v1/files/presigned-urls","href":"/api-reference/files/upload"}]},{"group":"Historical Emissions","pages":[{"title":"Historical Emissions","href":"/api-reference/historical-emissions/overview"},{"title":"List Historical Emissions","api":"GET /v1/historical-emissions/","href":"/api-reference/historical-emissions/list"},{"title":"Get Historical Emission","api":"GET /v1/historical-emissions/{historical_emission_id}","href":"/api-reference/historical-emissions/get"},{"title":"Create Historical Emission","api":"POST /v1/historical-emissions/","href":"/api-reference/historical-emissions/create"},{"title":"Update Historical Emission","api":"PATCH /v1/historical-emissions/{historical_emission_id}","href":"/api-reference/historical-emissions/update"},{"title":"Delete Historical Emission","api":"DELETE /v1/historical-emissions/{historical_emission_id}","href":"/api-reference/historical-emissions/delete"}]},{"group":"Hotel Stays","pages":[{"title":"Hotel Stays API","href":"/api-reference/hotel-stays/overview"},{"title":"Get Hotel Stay Totals","api":"GET /v1/hotel-stays/totals","href":"/api-reference/hotel-stays/totals"},{"title":"Hotel Stay Calculation Steps","api":"GET /v1/hotel-stays/{hotel_stay_id}/steps","href":"/api-reference/hotel-stays/impact-calculation"},{"title":"List Available Countries","api":"GET /v1/hotel-stays/available-countries","href":"/api-reference/hotel-stays/available-countries"},{"title":"List Hotel Stays","api":"GET /v1/hotel-stays","href":"/api-reference/hotel-stays/list"},{"title":"Get Hotel Stay","api":"GET /v1/hotel-stays/{hotel_stay_id}","href":"/api-reference/hotel-stays/get"},{"title":"Create Hotel Stay","api":"POST /v1/hotel-stays","deprecated":true,"href":"/api-reference/hotel-stays/create"},{"title":"Create Hotel Stays (v2)","api":"POST /v2/hotel-stays","tag":"BETA","href":"/api-reference/hotel-stays/create-v2"},{"title":"Delete Hotel Stays (v2)","api":"POST /v2/hotel-stays/delete","tag":"BETA","href":"/api-reference/hotel-stays/delete-v2"},{"title":"Update Hotel Stay","api":"PATCH /v1/hotel-stays/{hotel_stay_id}","href":"/api-reference/hotel-stays/update"},{"title":"Delete Hotel Stay","api":"DELETE /v1/hotel-stays/{hotel_stay_id}","deprecated":true,"href":"/api-reference/hotel-stays/delete"},{"title":"Bulk Delete Hotel Stays","api":"POST /v1/hotel-stays/bulk-delete","deprecated":true,"href":"/api-reference/hotel-stays/bulk-delete"},{"title":"Bulk Delete Hotel Stays by Filters","api":"POST /v1/hotel-stays/bulk-delete-by-filters","href":"/api-reference/hotel-stays/bulk-delete-by-filters"},{"title":"CSV Upload","api":"POST /v1/hotel-stays/bulk/csv","deprecated":true,"href":"/api-reference/hotel-stays/csv-upload"},{"title":"Recalculate Hotel Stays","api":"POST /v1/hotel-stays/recalculate","href":"/api-reference/hotel-stays/recalculate"}]},{"group":"Imports","pages":[{"title":"Imports","href":"/api-reference/imports/overview"},{"title":"Get Import Rows","api":"GET /v2/imports/{import_id}/rows","href":"/api-reference/imports/get-rows"},{"title":"Get Import Status","api":"GET /v2/imports/{import_id}/status","href":"/api-reference/imports/get-status"},{"title":"List Import Sessions","api":"GET /v2/imports/sessions","href":"/api-reference/imports/list"},{"title":"Get Provider Options","api":"GET /v2/imports/options/{source_key}","href":"/api-reference/imports/get-options-source"},{"title":"Get Import Template","api":"GET /v2/imports/templates/{template_id}","href":"/api-reference/imports/get-template"},{"title":"Own Workforce Import Templates","href":"/api-reference/imports/own-workforce-templates"},{"title":"Get Unique Values","api":"POST /v2/imports/{import_id}/unique-values","href":"/api-reference/imports/get-unique-values"},{"title":"Confirm Mapping","api":"POST /v2/imports/{import_id}/mapping","href":"/api-reference/imports/confirm-mapping"},{"title":"Create Import Session","api":"POST /v2/imports/sessions","href":"/api-reference/imports/create-session"},{"title":"Delete Import Rows","api":"POST /v2/imports/{import_id}/rows/delete","href":"/api-reference/imports/delete-rows"},{"title":"Submit Import","api":"POST /v2/imports/{import_id}/submit","href":"/api-reference/imports/submit"},{"title":"Suggest Mapping","api":"POST /v2/imports/{import_id}/mapping/suggest","href":"/api-reference/imports/suggest-mapping"},{"title":"Validate Import","api":"POST /v2/imports/{import_id}/validate","href":"/api-reference/imports/validate"},{"title":"Patch Import Rows","api":"PATCH /v2/imports/{import_id}/rows","href":"/api-reference/imports/patch-rows"},{"title":"Delete Import Session","api":"DELETE /v2/imports/sessions/{import_id}","href":"/api-reference/imports/delete-session"}]},{"group":"Ingest Jobs","pages":[{"title":"How Bulk Ingestion Works","tag":"BETA","href":"/api-reference/ingest-jobs/overview"},{"title":"List Ingest Job Items","api":"GET /v2/ingest-jobs/{job_id}/items","tag":"BETA","href":"/api-reference/ingest-jobs/list-items"},{"title":"List Ingest Jobs","api":"GET /v2/ingest-jobs","tag":"BETA","href":"/api-reference/ingest-jobs/list"},{"title":"Get Ingest Job","api":"GET /v2/ingest-jobs/{job_id}","tag":"BETA","href":"/api-reference/ingest-jobs/get"}]},{"group":"Invoices","pages":[{"title":"Invoices API","href":"/api-reference/invoices/overview"},{"title":"Get Invoice Totals","api":"GET /v1/invoices/totals","href":"/api-reference/invoices/totals"},{"title":"List Invoice Filter Options","api":"GET /v1/invoices/filter-options","href":"/api-reference/invoices/filter-options"},{"title":"List Invoices","api":"GET /v1/invoices","href":"/api-reference/invoices/list"},{"title":"List Refrigerant Gases","api":"GET /v1/recharge/gases","href":"/api-reference/invoices/refrigerant-gases-list"},{"title":"List Stationary Fuels","api":"GET /v1/stationary/fuels","href":"/api-reference/invoices/stationary-fuels-list"},{"title":"List Suppliers (v2)","api":"GET /v2/suppliers","href":"/api-reference/invoices/suppliers-list-v2"},{"title":"Get Invoice","api":"GET /v1/invoices/{invoice_id}","href":"/api-reference/invoices/get"},{"title":"Create District Cooling Invoices (v2)","api":"POST /v2/invoices/district-cooling","tag":"BETA","href":"/api-reference/invoices/district-cooling-create-v2"},{"title":"Create District Heating Invoices (v2)","api":"POST /v2/invoices/district-heating","tag":"BETA","href":"/api-reference/invoices/district-heating-create-v2"},{"title":"Create Electricity Invoices (v2)","api":"POST /v2/invoices/electricity","tag":"BETA","href":"/api-reference/invoices/electricity-create-v2"},{"title":"Create Fuel Invoices (v2)","api":"POST /v2/invoices/fuels","tag":"BETA","href":"/api-reference/invoices/fuels-create-v2"},{"title":"Create Invoice","api":"POST /v1/invoices","deprecated":true,"href":"/api-reference/invoices/create"},{"title":"Create Process Invoices (v2)","api":"POST /v2/invoices/process","tag":"BETA","href":"/api-reference/invoices/process-create-v2"},{"title":"Create Refrigerant Invoices (v2)","api":"POST /v2/invoices/refrigerants","tag":"BETA","href":"/api-reference/invoices/refrigerants-create-v2"},{"title":"Create Water Invoices (v2)","api":"POST /v2/invoices/water","tag":"BETA","href":"/api-reference/invoices/water-create-v2"},{"title":"Delete Invoices (v2)","api":"POST /v2/invoices/delete","tag":"BETA","href":"/api-reference/invoices/delete-v2"},{"title":"Update Invoice","api":"PATCH /v1/invoices/{invoice_id}","href":"/api-reference/invoices/update"},{"title":"Delete Invoice","api":"DELETE /v1/invoices/{invoice_id}","deprecated":true,"href":"/api-reference/invoices/delete"},{"title":"Bulk Delete Invoices","api":"POST /v1/invoices/bulk-delete","deprecated":true,"href":"/api-reference/invoices/bulk-delete"},{"title":"Bulk Delete Invoices by Filters","api":"POST /v1/invoices/bulk-delete-by-filters","href":"/api-reference/invoices/bulk-delete-by-filters"},{"title":"Bulk Update","api":"POST /v1/invoices/bulk-update","href":"/api-reference/invoices/bulk-update"},{"title":"Recalculate Invoices","api":"POST /v1/invoices/recalculate","href":"/api-reference/invoices/recalculate"},{"title":"Create Invoice with PDF Attachment","href":"/api-reference/invoices/invoice-with-pdf"},{"title":"Invoice Comments","href":"/api-reference/invoices/comments"}]},{"group":"Life Cycle Assessment (LCA)","pages":[{"title":"LCA API","href":"/api-reference/lca/overview"},{"title":"Get LCA Calculation Errors","api":"GET /lca/portfolio/{lca_id}/calculation-errors","href":"/api-reference/lca/calculation-errors"},{"title":"Get LCA Dashboard","api":"GET /lca/portfolio/{lca_id}/dashboard","href":"/api-reference/lca/dashboard"},{"title":"List LCA Portfolios","api":"GET /lca/portfolio","href":"/api-reference/lca/list"},{"title":"Get LCA Impacts","api":"GET /lca/impacts/{lca_id}","href":"/api-reference/lca/impacts"},{"title":"Get LCA Portfolio","api":"GET /lca/portfolio/{lca_id}","href":"/api-reference/lca/get"},{"title":"Validate LCA","api":"GET /lca/validate/{lca_id}","href":"/api-reference/lca/validate"},{"title":"Create LCA from Excel","api":"POST /lca/create-from-excel","href":"/api-reference/lca/create-from-excel"},{"title":"Create LCA from JSON","api":"POST /lca/create-from-json","href":"/api-reference/lca/create-from-json"},{"title":"Create LCA Portfolio","api":"POST /v1/lca/portfolio","href":"/api-reference/lca/create"},{"title":"Export LCA to Excel","api":"POST /lca/export-xlsx/{lca_id}","href":"/api-reference/lca/export-xlsx"},{"title":"Update LCA Portfolio","api":"PATCH /lca/portfolio/{lca_id}","href":"/api-reference/lca/update"},{"title":"Delete LCA Portfolio","api":"DELETE /lca/portfolio/{lca_id}","href":"/api-reference/lca/delete"}]},{"group":"Logistic Hubs","pages":[{"title":"Logistic Hubs API","href":"/api-reference/logistic-hubs/overview"},{"title":"List Logistic Hubs","api":"GET /v1/logistic-hubs","href":"/api-reference/logistic-hubs/list"},{"title":"Get Logistic Hub","api":"GET /v1/logistic-hubs/{hub_id}","href":"/api-reference/logistic-hubs/get"},{"title":"Create Logistic Hub","api":"POST /v1/logistic-hubs","href":"/api-reference/logistic-hubs/create"},{"title":"Create Logistic Hubs (v2)","api":"POST /v2/logistic-hubs","tag":"BETA","href":"/api-reference/logistic-hubs/create-v2"},{"title":"Update Logistic Hub","api":"PUT /v1/logistic-hubs/{hub_id}","href":"/api-reference/logistic-hubs/update"},{"title":"Delete Logistic Hub","api":"DELETE /v1/logistic-hubs/{hub_id}","href":"/api-reference/logistic-hubs/delete"}]},{"group":"Logistics","pages":[{"title":"Logistics API","href":"/api-reference/logistics/overview"},{"title":"Export Detailed Report","api":"GET /v1/logistics/report/export","href":"/api-reference/logistics/get-report-export"},{"title":"Generate Report","api":"GET /v1/logistics/report","href":"/api-reference/logistics/get-report"},{"title":"Get Logistics Summary","api":"GET /v1/logistics/summary","href":"/api-reference/logistics/get-summary"},{"title":"List Available Fuel Types","api":"GET /v1/logistics/fuels","href":"/api-reference/logistics/list-fuels"},{"title":"List Available Vehicle Types","api":"GET /v1/logistics/tocs","href":"/api-reference/logistics/list-tocs"},{"title":"List Clients","api":"GET /v1/logistics/clients","href":"/api-reference/logistics/list-clients"},{"title":"List HOCs","api":"GET /v1/logistics/hocs","href":"/api-reference/logistics/list-hocs"},{"title":"List Logistics Hubs","api":"GET /v1/logistics/hubs","href":"/api-reference/logistics/list-hubs"},{"title":"List Packages","api":"GET /v1/logistics/packages","href":"/api-reference/logistics/list-packages"},{"title":"Get Package by ID","api":"GET /v1/logistics/packages/{package_id}","href":"/api-reference/logistics/get-package"},{"title":"CSV Upload","api":"POST /v1/logistics/upload","href":"/api-reference/logistics/upload"},{"group":"Recharges","expanded":true,"pages":[{"title":"List Logistics Recharges","api":"GET /v1/logistics/recharges","href":"/api-reference/logistics/list-recharges"},{"title":"List Recharge Filter Values","api":"GET /v1/logistics/recharges/unique-values","href":"/api-reference/logistics/recharges-unique-values"},{"title":"Create Logistics Recharge","api":"POST /v1/logistics/recharges","href":"/api-reference/logistics/create-recharge"},{"title":"Delete Logistics Recharge","api":"DELETE /v1/logistics/recharges/{recharge_id}","href":"/api-reference/logistics/delete-recharge"},{"title":"Batch Delete Logistics Recharges","api":"POST /v1/logistics/recharges/batch-delete","href":"/api-reference/logistics/batch-delete-recharges"},{"title":"Bulk Delete Recharges by Filters","api":"POST /v1/logistics/recharges/bulk-delete-by-filters","href":"/api-reference/logistics/recharges-bulk-delete-by-filters"},{"title":"Create Logistics Recharges (Bulk)","api":"POST /v1/logistics/recharges/bulk","href":"/api-reference/logistics/create-recharges-bulk"}]},{"group":"Requests","expanded":true,"pages":[{"title":"List Logistics Requests","api":"GET /v1/logistics/requests","href":"/api-reference/logistics/list-requests"},{"title":"List Shipment Filter Values","api":"GET /v1/logistics/requests/unique-values","href":"/api-reference/logistics/requests-unique-values"},{"title":"Create Logistics Request","api":"POST /v1/logistics/requests","href":"/api-reference/logistics/create-request"},{"title":"Create Logistics Requests (v2)","api":"POST /v2/logistics/requests","tag":"BETA","href":"/api-reference/logistics/create-requests-v2"},{"title":"Delete Logistics Request","api":"DELETE /v1/logistics/requests/{request_id}","href":"/api-reference/logistics/delete-request"},{"title":"Batch Delete Logistics Requests","api":"POST /v1/logistics/requests/batch-delete","href":"/api-reference/logistics/batch-delete-requests"},{"title":"Bulk Delete Requests by Filters","api":"POST /v1/logistics/requests/bulk-delete-by-filters","href":"/api-reference/logistics/requests-bulk-delete-by-filters"},{"title":"Create Logistics Requests (Bulk)","api":"POST /v1/logistics/requests/bulk","href":"/api-reference/logistics/create-requests-bulk"}]}]},{"group":"Organizations","pages":[{"title":"Organizations API","href":"/api-reference/organizations/overview"},{"title":"Organization Metrics","api":"GET /v1/organizations/{organization_id}/metrics","href":"/api-reference/organizations/metrics"},{"title":"Organization Tree","api":"GET /v2/organizations/tree","href":"/api-reference/organizations/tree"}]},{"group":"Own Workforce","pages":[{"title":"Own Workforce API","href":"/api-reference/own-workforce/overview"},{"title":"Get Workforce Unique Values","api":"GET /v1/own_workforces/unique-values","href":"/api-reference/own-workforce/unique-values"},{"title":"Get Workforce Verification Data","api":"GET /v1/own_workforces/verification-data","href":"/api-reference/own-workforce/verification-data"},{"title":"List Workforce Countries","api":"GET /v1/own_workforces/countries","href":"/api-reference/own-workforce/countries"},{"title":"List Workforce Employees","api":"GET /v1/own_workforces","href":"/api-reference/own-workforce/list"},{"title":"List Workforce Employees With Contracts","api":"GET /v1/own_workforces/with-contracts-and-remunerations","href":"/api-reference/own-workforce/with-contracts"},{"title":"List Workforce Job Categories","api":"GET /v1/own_workforces/job-categories","href":"/api-reference/own-workforce/job-categories"},{"title":"Get Workforce Employee","api":"GET /v1/own_workforces/{own_workforce_id}","href":"/api-reference/own-workforce/get"},{"title":"Create Workforce Employees (v2)","api":"POST /v2/own-workforce/employees","tag":"BETA","href":"/api-reference/own-workforce/employees-create-v2"},{"title":"Delete Workforce Employees (v2)","api":"POST /v2/own-workforce/employees/delete","tag":"BETA","href":"/api-reference/own-workforce/employees-delete-v2"},{"title":"Delete Workforce Employee","api":"DELETE /v1/own_workforces/{own_workforce_id}","deprecated":true,"href":"/api-reference/own-workforce/delete"},{"title":"Bulk Delete Workforce Employees","api":"POST /v1/own_workforces/bulk-delete","deprecated":true,"href":"/api-reference/own-workforce/bulk-delete"},{"title":"Bulk Delete Workforce Employees by Filters","api":"POST /v1/own_workforces/bulk-delete-by-filters","href":"/api-reference/own-workforce/bulk-delete-by-filters"},{"title":"Upload Workforce Employees CSV","api":"POST /v1/own_workforces/bulk/csv","deprecated":true,"href":"/api-reference/own-workforce/csv-upload"},{"group":"Absenteeisms \u0026 Accidents","expanded":true,"pages":[{"title":"Get Workforce Absences Unique Values","api":"GET /v1/own_workforce_absenteeisms_accidents/unique-values","href":"/api-reference/own-workforce/unique-values-absences"},{"title":"List Workforce Absences","api":"GET /v1/own_workforce_absenteeisms_accidents","href":"/api-reference/own-workforce/list-absences"},{"title":"List Workforce Absences Paginated","api":"GET /v1/own_workforce_absenteeisms_accidents/paginated","href":"/api-reference/own-workforce/list-absences-paginated"},{"title":"List Workforce Absences by Employee","api":"GET /v1/own_workforce_absenteeisms_accidents/own_workforce/{own_workforce_id}","href":"/api-reference/own-workforce/list-absences-by-employee"},{"title":"Create Workforce Absences (v2)","api":"POST /v2/own-workforce/absences","tag":"BETA","href":"/api-reference/own-workforce/absences-create-v2"},{"title":"Delete Workforce Absences (v2)","api":"POST /v2/own-workforce/absences/delete","tag":"BETA","href":"/api-reference/own-workforce/absences-delete-v2"},{"title":"Delete Workforce Absence","api":"DELETE /v1/own_workforce_absenteeisms_accidents/{absenteeism_accident_id}","deprecated":true,"href":"/api-reference/own-workforce/delete-absence"},{"title":"Bulk Delete Workforce Absences","api":"POST /v1/own_workforce_absenteeisms_accidents/bulk-delete","deprecated":true,"href":"/api-reference/own-workforce/bulk-delete-absences"},{"title":"Bulk Delete Workforce Absences by Filters","api":"POST /v1/own_workforce_absenteeisms_accidents/bulk-delete-by-filters","href":"/api-reference/own-workforce/bulk-delete-absences-by-filters"},{"title":"Upload Workforce Absences CSV","api":"POST /v1/own_workforce_absenteeisms_accidents/bulk/csv","deprecated":true,"href":"/api-reference/own-workforce/csv-upload-absences"}]},{"group":"Contracts \u0026 Remuneration","expanded":true,"pages":[{"title":"List Workforce Contracts","api":"GET /v1/own_workforce_contracts","href":"/api-reference/own-workforce/list-contracts"},{"title":"List Workforce Remunerations","api":"GET /v1/own_workforce_remunerations","href":"/api-reference/own-workforce/list-remunerations"},{"title":"Get Workforce Contract","api":"GET /v1/own_workforce_contracts/{contract_id}","href":"/api-reference/own-workforce/get-contract"}]},{"group":"Trainings","expanded":true,"pages":[{"title":"Get Workforce Trainings Unique Values","api":"GET /v1/own_workforce_trainings/unique-values","href":"/api-reference/own-workforce/unique-values-trainings"},{"title":"List Workforce Trainings","api":"GET /v1/own_workforce_trainings","href":"/api-reference/own-workforce/list-trainings"},{"title":"List Workforce Trainings Paginated","api":"GET /v1/own_workforce_trainings/paginated","href":"/api-reference/own-workforce/list-trainings-paginated"},{"title":"List Workforce Trainings by Employee","api":"GET /v1/own_workforce_trainings/own_workforce/{own_workforce_id}","href":"/api-reference/own-workforce/list-trainings-by-employee"},{"title":"Create Workforce Trainings (v2)","api":"POST /v2/own-workforce/trainings","tag":"BETA","href":"/api-reference/own-workforce/trainings-create-v2"},{"title":"Delete Workforce Trainings (v2)","api":"POST /v2/own-workforce/trainings/delete","tag":"BETA","href":"/api-reference/own-workforce/trainings-delete-v2"},{"title":"Delete Workforce Training","api":"DELETE /v1/own_workforce_trainings/{training_id}","deprecated":true,"href":"/api-reference/own-workforce/delete-training"},{"title":"Bulk Delete Workforce Trainings","api":"POST /v1/own_workforce_trainings/bulk-delete","deprecated":true,"href":"/api-reference/own-workforce/bulk-delete-trainings"},{"title":"Bulk Delete Workforce Trainings by Filters","api":"POST /v1/own_workforce_trainings/bulk-delete-by-filters","href":"/api-reference/own-workforce/bulk-delete-trainings-by-filters"},{"title":"Upload Workforce Trainings CSV","api":"POST /v1/own_workforce_trainings/bulk/csv","deprecated":true,"href":"/api-reference/own-workforce/csv-upload-trainings"}]}]},{"group":"Projects","pages":[{"title":"Projects API","href":"/api-reference/projects/overview"},{"title":"Consolidated Emissions","api":"GET /v1/projects/{project_id}/consolidated","href":"/api-reference/projects/consolidated"},{"title":"List Projects","api":"GET /v1/projects/extended","href":"/api-reference/projects/list"},{"title":"Recent Activities","api":"GET /v1/projects/{project_id}/recent-activities","href":"/api-reference/projects/recent-activities"},{"title":"Get Project","api":"GET /v1/projects/{project_id}","href":"/api-reference/projects/get"},{"title":"Create Project","api":"POST /v1/projects","href":"/api-reference/projects/create"},{"title":"Link Entities by Filters","api":"POST /v1/projects/{project_id}/entities/link-by-filters","href":"/api-reference/projects/link-by-filters"},{"title":"Link Entities to Project","api":"POST /v1/projects/{project_id}/entities/link","href":"/api-reference/projects/link-entities"},{"title":"Unlink Entities from Project","api":"POST /v1/projects/{project_id}/entities/unlink","href":"/api-reference/projects/unlink-entities"},{"title":"Update Project","api":"PUT /v1/projects/{project_id}","href":"/api-reference/projects/update"},{"title":"Delete Project","api":"DELETE /v1/projects/{project_id}","href":"/api-reference/projects/delete"},{"group":"Tasks","expanded":true,"pages":[{"title":"Get Subtasks","api":"GET /v1/tasks/{task_id}/subtasks","href":"/api-reference/projects/subtasks"},{"title":"List All Tasks","api":"GET /v1/projects/tasks","href":"/api-reference/projects/list-tasks"},{"title":"List Project Tasks","api":"GET /v1/projects/{project_id}/tasks","href":"/api-reference/projects/project-tasks"},{"title":"Task Versions","api":"GET /v1/tasks/{task_id}/versions","href":"/api-reference/projects/task-versions"},{"title":"Get Task","api":"GET /v1/tasks/{task_id}","href":"/api-reference/projects/get-task"},{"title":"Create Task","api":"POST /v2/tasks","href":"/api-reference/projects/create-task"},{"title":"Update Task","api":"PATCH /v1/tasks/{task_id}","href":"/api-reference/projects/update-task"},{"title":"Delete Task","api":"DELETE /v1/tasks/{task_id}","href":"/api-reference/projects/delete-task"}]}]},{"group":"Purchases","pages":[{"title":"Purchases API","href":"/api-reference/purchases/overview"},{"title":"Get Purchase Totals","api":"GET /v1/purchases/totals","href":"/api-reference/purchases/totals"},{"title":"Get Purchase Version History","api":"GET /v1/purchases/{purchase_id}/versions","href":"/api-reference/purchases/versions"},{"title":"List Purchase Suppliers","api":"GET /v1/purchases/suppliers","href":"/api-reference/purchases/suppliers-list"},{"title":"List Purchases","api":"GET /v1/purchases","href":"/api-reference/purchases/list"},{"title":"Get Purchase","api":"GET /v1/purchases/{purchase_id}","href":"/api-reference/purchases/get"},{"title":"Create Purchase","api":"POST /v1/purchases","deprecated":true,"href":"/api-reference/purchases/create"},{"title":"Create Purchase Suppliers (v2)","api":"POST /v2/purchases/suppliers","tag":"BETA","href":"/api-reference/purchases/suppliers-create-v2"},{"title":"Create Purchases (v2)","api":"POST /v2/purchases","tag":"BETA","href":"/api-reference/purchases/create-v2"},{"title":"Delete Purchase Suppliers (v2)","api":"POST /v2/purchases/suppliers/delete","tag":"BETA","href":"/api-reference/purchases/suppliers-delete-v2"},{"title":"Delete Purchases (v2)","api":"POST /v2/purchases/delete","description":"Delete up to 5,000 purchases by id, asynchronously, as an ingest job","tag":"BETA","href":"/api-reference/purchases/delete-v2"},{"title":"Classify Purchase Suppliers (v2)","api":"PATCH /v2/purchases/suppliers","tag":"BETA","href":"/api-reference/purchases/suppliers-update-v2"},{"title":"Update Purchase","api":"PATCH /v1/purchases/{purchase_id}","description":"Modify an existing purchase's details","href":"/api-reference/purchases/update"},{"title":"Delete Purchase","api":"DELETE /v1/purchases/{purchase_id}","deprecated":true,"href":"/api-reference/purchases/delete"},{"title":"Bulk Delete Purchases","api":"POST /v1/purchases/bulk-delete","deprecated":true,"href":"/api-reference/purchases/bulk-delete"},{"title":"Bulk Delete Purchases by Filters","api":"POST /v1/purchases/bulk-delete-by-filters","href":"/api-reference/purchases/bulk-delete-by-filters"}]},{"group":"Reports \u0026 Dashboards (v1)","pages":[{"title":"Reports \u0026 Dashboards API","href":"/api-reference/reports/overview"},{"title":"Get Kpis","deprecated":null,"version":null,"openapi":"/openapi-kpi.json get /v1/report_builder/kpis","href":"/api-reference/reportbuilder/get-kpis"}]},{"group":"Sold Products","pages":[{"title":"Sold Products API","href":"/api-reference/sold-products/overview"},{"title":"Check Period Overlap","api":"GET /v1/sold-products/periods/check-overlap","href":"/api-reference/sold-products/check-overlap"},{"title":"List Existing Country Sales","api":"GET /v1/sold-products/existing-country-sales","href":"/api-reference/sold-products/existing-country-sales"},{"title":"List Periods","api":"GET /v1/sold-products/{sold_product_id}/periods","href":"/api-reference/sold-products/list-periods"},{"title":"List Sold Products","api":"GET /v1/sold-products/","href":"/api-reference/sold-products/list"},{"title":"Period Country Sales","api":"GET /v1/sold-products/{sold_product_id}/periods/{period_id}/country-sales","href":"/api-reference/sold-products/country-sales"},{"title":"Period Emissions","api":"GET /v1/sold-products/{sold_product_id}/periods/{period_id}/emissions","href":"/api-reference/sold-products/emissions"},{"title":"Create Sold Products (v2)","api":"POST /v2/sold-products","tag":"BETA","href":"/api-reference/sold-products/create-v2"},{"title":"Delete Sold Products (v2)","api":"POST /v2/sold-products/delete","tag":"BETA","href":"/api-reference/sold-products/delete-v2"},{"title":"Delete Period","api":"DELETE /v1/sold-products/{sold_product_id}/periods/{period_id}","href":"/api-reference/sold-products/delete-period"},{"title":"Delete Sold Product","api":"DELETE /v1/sold-products/{sold_product_id}","deprecated":true,"href":"/api-reference/sold-products/delete"},{"group":"Use of Sold Products","expanded":true,"pages":[{"title":"Create Use of Sold Products (v2)","api":"POST /v2/use-of-sold-products","tag":"BETA","href":"/api-reference/use-of-sold-products/create-v2"},{"title":"Delete Use of Sold Products (v2)","api":"POST /v2/use-of-sold-products/delete","tag":"BETA","href":"/api-reference/use-of-sold-products/delete-v2"}]}]},{"group":"Transport","pages":[{"title":"Transport API","href":"/api-reference/transport/overview"},{"title":"Get Route Counts","api":"GET /v1/transports/counts","href":"/api-reference/transport/counts"},{"title":"Get Transport Route Totals","api":"GET /v1/transports/totals","href":"/api-reference/transport/totals"},{"title":"Get Transport Route Version History","api":"GET /v1/transports/{transport_route_id}/versions","href":"/api-reference/transport/versions"},{"title":"List Transport Combinations","api":"GET /v1/transports/combinations","href":"/api-reference/transport/combinations"},{"title":"List Transport Routes","api":"GET /v1/transports","href":"/api-reference/transport/list"},{"title":"Get Transport Route","api":"GET /v1/transports/{transport_route_id}","href":"/api-reference/transport/get"},{"title":"Create Freight Transports (v2)","api":"POST /v2/transports","tag":"BETA","href":"/api-reference/transport/create-v2"},{"title":"Create Transport Route","api":"POST /v1/transports","deprecated":true,"href":"/api-reference/transport/create"},{"title":"Delete Freight Transports (v2)","api":"POST /v2/transports/delete","tag":"BETA","href":"/api-reference/transport/delete-v2"},{"title":"Update Transport Route","api":"PUT /v1/transports/{transport_route_id}","href":"/api-reference/transport/update"},{"title":"Delete Transport Route","api":"DELETE /v1/transports/{transport_route_id}","deprecated":true,"href":"/api-reference/transport/delete"},{"title":"Bulk Delete Transport Routes","api":"POST /v1/transports/bulk-delete","deprecated":true,"href":"/api-reference/transport/bulk-delete"},{"title":"Bulk Delete Transport Routes by Filters","api":"POST /v1/transports/bulk-delete-by-filters","href":"/api-reference/transport/bulk-delete-by-filters"},{"title":"Get Presigned Upload URL","api":"POST /v1/transports/upload/presigned-url","href":"/api-reference/transport/presigned-url"},{"title":"Upload Transport File","api":"POST /v1/transports/upload","href":"/api-reference/transport/upload"},{"title":"Transport Type Inference (do_not_know)","href":"/api-reference/transport/do-not-know-inference"}]},{"group":"Units","pages":[{"title":"List Units","api":"GET /v2/units","href":"/api-reference/units/list"}]},{"group":"Vehicles","pages":[{"title":"Vehicles API","href":"/api-reference/vehicles/overview"},{"title":"List Market Segments","api":"GET /v1/vehicles/market_segments","href":"/api-reference/vehicles/market-segments"},{"title":"List Vehicles","api":"GET /v1/vehicles","href":"/api-reference/vehicles/list"},{"title":"Vehicle Versions","api":"GET /v1/vehicles/{vehicle_id}/versions","href":"/api-reference/vehicles/versions"},{"title":"Get Vehicle","api":"GET /v1/vehicles/{vehicle_id}","href":"/api-reference/vehicles/get"},{"title":"Create Vehicle","api":"POST /v1/vehicles","deprecated":true,"href":"/api-reference/vehicles/create"},{"title":"Create Vehicles (v2)","api":"POST /v2/vehicles","tag":"BETA","href":"/api-reference/vehicles/create-v2"},{"title":"Delete Vehicles (v2)","api":"POST /v2/vehicles/delete","tag":"BETA","href":"/api-reference/vehicles/delete-v2"},{"title":"Update Vehicle","api":"PATCH /v1/vehicles/{vehicle_id}","href":"/api-reference/vehicles/update"},{"title":"Delete Vehicle","api":"DELETE /v1/vehicles/{vehicle_id}","deprecated":true,"href":"/api-reference/vehicles/delete"},{"title":"Bulk Delete Vehicles","api":"POST /v1/vehicles/bulk-delete","deprecated":true,"href":"/api-reference/vehicles/bulk-delete"},{"title":"Bulk Delete Vehicles by Filters","api":"POST /v1/vehicles/bulk-delete-by-filters","href":"/api-reference/vehicles/bulk-delete-by-filters"},{"title":"CSV Import","api":"POST /v1/vehicles/bulk/csv","deprecated":true,"href":"/api-reference/vehicles/csv-import"},{"group":"Unknown Vehicles","expanded":true,"pages":[{"title":"Unknown Vehicles API","href":"/api-reference/unknown-vehicles/overview"},{"title":"List Unknown Vehicles","api":"GET /v1/unknown-vehicles","href":"/api-reference/unknown-vehicles/list"}]},{"group":"Vehicle Consumptions","expanded":true,"pages":[{"title":"Consumption Calculation Steps","api":"GET /v1/vehicle_consumptions/{vehicle_consumption_id}/steps","href":"/api-reference/vehicles/consumptions-steps"},{"title":"Consumption Totals (Organization)","api":"GET /v2/vehicle_consumptions/totals","href":"/api-reference/vehicles/consumptions-org-totals"},{"title":"List All Vehicle Consumptions (Organization)","api":"GET /v2/vehicle_consumptions","href":"/api-reference/vehicles/consumptions-org-list"},{"title":"List Consumption Filter Values","api":"GET /v1/vehicles/{vehicle_id}/consumptions/unique-values","href":"/api-reference/vehicles/consumptions-unique-values"},{"title":"List Consumption Filter Values (Organization)","api":"GET /v2/vehicle_consumptions/unique-values","href":"/api-reference/vehicles/consumptions-org-unique-values"},{"title":"Vehicle Consumptions","api":"GET /v1/vehicles/{vehicle_id}/consumptions","href":"/api-reference/vehicles/consumptions"},{"title":"Get Consumption","api":"GET /v1/vehicle_consumptions/{vehicle_consumption_id}","href":"/api-reference/vehicles/consumptions-get"},{"title":"Create Vehicle Consumptions (v2)","api":"POST /v2/vehicle-consumptions","tag":"BETA","href":"/api-reference/vehicles/consumptions-create-v2"},{"title":"Delete Vehicle Consumptions (v2)","api":"POST /v2/vehicle-consumptions/delete","tag":"BETA","href":"/api-reference/vehicles/consumptions-delete-v2"},{"title":"Delete Vehicle Consumption","api":"DELETE /v1/vehicle_consumptions/{vehicle_consumption_id}","deprecated":true,"href":"/api-reference/vehicles/consumptions-delete"},{"title":"Delete Vehicle Consumptions by File","api":"DELETE /v1/vehicle_consumptions/by-file/{file_id}","href":"/api-reference/vehicles/consumptions-delete-by-file"},{"title":"Bulk Delete Vehicle Consumptions","api":"POST /v1/vehicles/{vehicle_id}/consumptions/bulk-delete","href":"/api-reference/vehicles/consumptions-bulk-delete"},{"title":"Bulk Delete Vehicle Consumptions (Organization)","api":"POST /v2/vehicle_consumptions/bulk-delete","href":"/api-reference/vehicles/consumptions-org-bulk-delete"},{"title":"Bulk Delete Vehicle Consumptions by Filters","api":"POST /v1/vehicles/{vehicle_id}/consumptions/bulk-delete-by-filters","href":"/api-reference/vehicles/consumptions-bulk-delete-by-filters"},{"title":"Bulk Delete Vehicle Consumptions by Filters (Organization)","api":"POST /v2/vehicle_consumptions/bulk-delete-by-filters","href":"/api-reference/vehicles/consumptions-org-bulk-delete-by-filters"},{"title":"Consumptions CSV Import","api":"POST /v1/vehicle_consumptions/bulk/csv","deprecated":true,"href":"/api-reference/vehicles/consumptions-csv-import"}]},{"group":"Vehicle Fuels","expanded":true,"pages":[{"title":"Vehicle Fuels API","href":"/api-reference/vehicle-fuels/overview"},{"title":"List Vehicle Fuels","api":"GET /v1/vehicle-fuels","href":"/api-reference/vehicle-fuels/list"}]}]},{"group":"Waste Water Treatments","pages":[{"title":"Get Waste Water Treatment by ID","api":"GET /v1/waste-water-treatments/{wwt_id}/detail","href":"/api-reference/waste-water-treatments/detail"},{"title":"Get Waste Water Treatment Version History","api":"GET /v1/waste-water-treatments/{waste_water_treatment_id}/versions","href":"/api-reference/waste-water-treatments/versions"},{"title":"List Waste Water Treatments","api":"GET /v1/waste-water-treatments","href":"/api-reference/waste-water-treatments/list"},{"title":"Create Waste Water Treatment","api":"POST /v1/waste-water-treatments","deprecated":true,"href":"/api-reference/waste-water-treatments/create"},{"title":"Create Waste Water Treatments (v2)","api":"POST /v2/waste-water-treatments","tag":"BETA","href":"/api-reference/waste-water-treatments/create-v2"},{"title":"Delete Waste Water Treatments (v2)","api":"POST /v2/waste-water-treatments/delete","tag":"BETA","href":"/api-reference/waste-water-treatments/delete-v2"},{"title":"Update Waste Water Treatment","api":"PATCH /v1/waste-water-treatments/{wwt_id}","href":"/api-reference/waste-water-treatments/update"}]},{"group":"Wastes","pages":[{"title":"Wastes API","href":"/api-reference/wastes/overview"},{"title":"Get Waste","api":"GET /v1/wastes/{waste_id}/detail","href":"/api-reference/wastes/get"},{"title":"Get Waste Version History","api":"GET /v1/wastes/{waste_id}/versions","href":"/api-reference/wastes/versions"},{"title":"List LER Codes","api":"GET /v1/wastes/ler-codes","href":"/api-reference/wastes/ler-codes"},{"title":"List R/D Codes","api":"GET /v1/wastes/rd-codes","href":"/api-reference/wastes/rd-codes"},{"title":"List Waste Emission Factors","api":"GET /v1/waste-efs","deprecated":true,"href":"/api-reference/wastes/emission-factors"},{"title":"List Waste Filter Values","api":"GET /v1/waste/unique-values","href":"/api-reference/wastes/unique-values"},{"title":"List Wastes","api":"GET /v1/wastes","href":"/api-reference/wastes/list"},{"title":"Create Waste","api":"POST /v1/wastes","deprecated":true,"href":"/api-reference/wastes/create"},{"title":"Create Wastes (v2)","api":"POST /v2/wastes","tag":"BETA","href":"/api-reference/wastes/create-v2"},{"title":"Delete Wastes (v2)","api":"POST /v2/wastes/delete","tag":"BETA","href":"/api-reference/wastes/delete-v2"},{"title":"Update Waste","api":"PATCH /v1/wastes/{waste_id}","href":"/api-reference/wastes/update"},{"title":"Bulk Delete Wastes","api":"POST /v1/waste/bulk-delete","deprecated":true,"href":"/api-reference/wastes/bulk-delete"},{"title":"Bulk Delete Wastes by Filters","api":"POST /v1/waste/bulk-delete-by-filters","href":"/api-reference/wastes/bulk-delete-by-filters"}]},{"group":"Webhooks","pages":[{"title":"Webhooks","tag":"BETA","href":"/api-reference/webhooks/overview"},{"title":"List Webhook Deliveries","api":"GET /v2/webhook-endpoints/{endpoint_id}/deliveries","tag":"BETA","href":"/api-reference/webhooks/list-deliveries"},{"title":"List Webhook Endpoints","api":"GET /v2/webhook-endpoints","tag":"BETA","href":"/api-reference/webhooks/list-endpoints"},{"title":"Get Webhook Endpoint","api":"GET /v2/webhook-endpoints/{endpoint_id}","tag":"BETA","href":"/api-reference/webhooks/get-endpoint"},{"title":"Create Webhook Endpoint","api":"POST /v2/webhook-endpoints","tag":"BETA","href":"/api-reference/webhooks/create-endpoint"},{"title":"Retry Webhook Delivery","api":"POST /v2/webhook-endpoints/{endpoint_id}/deliveries/{delivery_id}/retry","tag":"BETA","href":"/api-reference/webhooks/retry-delivery"},{"title":"Rotate Webhook Secret","api":"POST /v2/webhook-endpoints/{endpoint_id}/rotate-secret","tag":"BETA","href":"/api-reference/webhooks/rotate-secret"},{"title":"Send Test Event","api":"POST /v2/webhook-endpoints/{endpoint_id}/test","tag":"BETA","href":"/api-reference/webhooks/test-endpoint"},{"title":"Update Webhook Endpoint","api":"PATCH /v2/webhook-endpoints/{endpoint_id}","tag":"BETA","href":"/api-reference/webhooks/update-endpoint"},{"title":"Delete Webhook Endpoint","api":"DELETE /v2/webhook-endpoints/{endpoint_id}","tag":"BETA","href":"/api-reference/webhooks/delete-endpoint"}]}]},{"version":"Legacy API","pages":[{"title":"Legacy API","href":"/api-reference/legacy/purchases/list"}]}]},{"tab":"CLI","pages":[{"title":"CLI","href":"/cli/overview"}]},{"tab":"MCP","pages":[{"title":"MCP","href":"/mcp/overview"}]},{"tab":"Release Notes","pages":[{"title":"Release Notes","href":"/docs/release-notes"}]}]},"title":"Classify Purchase Suppliers (v2) - Dcycle Platform Docs","buildId":"dpl_2xiSHD9XEvLsPGPcfoMtkLTB3dy9","deploymentId":"dpl_2xiSHD9XEvLsPGPcfoMtkLTB3dy9","dynamics":["c2aa737661","2b790eda92","b0f84f53ff"],"chunks":["OpenApiReferenceProvider-DmVyH30O.js","utils-BHQqGGOd.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-CD-E4BIt.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-Bp5Lq9Ds.js","snippetPresets-C4xAVCFP.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-CgXVLxUC.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-BF8I5oUf.js","shallow-Byd0lWnC.js","getApiPlaygroundDisplay-BGOZG1OK.js","CodeSnippet-CpvQL0CY.js","CodeSnippets-B8wkBKXa.js","Page-CBCH2P7b.js","getPastedJson-Ry3scI3Y.js","icon-D7a9HcdD.js","MethodPill-CJ8pmHhz.js","DuplicateIcon-rh1HJF0t.js","createIcon-DvGznqYs.js","DynamicMarkdown-Cc6AuSHS.js","SectionHeading-B4A0S-ep.js","axios-vUo_bRtp.js"]}