# Partially update contract Endpoint: PATCH /enrichment/contracts/{externalId} Version: 2.51.0 Security: OAuth2 ## Path parameters: - `externalId` (string, required) Previously sent externalId ## Request fields (application/merge-patch+json): - `externalId` (string, required) External id of the contract that is globally unique across the provided contract data Example: "CONTRACT-2025-0001" - `externalClientId` (string) Identifier of the client entity in the source system which can be used to separate data Example: "CONTRACT-2025-0001" - `documentId` (string) Document id that was assigned during upload to Hypatos Example: "67c02594d4aa80eecbd39bbe" - `documents` (array) - `documents.id` (string) Document id that was assigned during upload to Hypatos Example: "63cac12c37bb02accb396cae" - `documents.type` (string) Document type that was assigned during upload to Hypatos Example: "invoice" - `contractNumber` (string) Contract number assigned in the source system Example: "CN-2025-001" - `status` (string,null) Indicates the current lifecycle state of the contract Enum: "draft", "active", "pending", "suspended", "cancelled", "expired", "terminated", null - `businessPartnerContractNumber` (string) Contract number assigned by the business partner Example: "K9120-12" - `externalCompanyId` (string) External unique identifier of the company in the source system Example: "DE01" - `salesOrganizationInfo` (array) - `salesOrganizationInfo.externalSalesOrganizationId` (string) External identifier for the sales organization Example: "1000" - `salesOrganizationInfo.distributionChannel` (string) Distribution channel for sales Example: "2000" - `salesOrganizationInfo.division` (string) Division under which the sales organization operates Example: "3000" - `salesOrganizationInfo.salesGroup` (string) Sales group associated with the contract Example: "4000" - `salesOrganizationInfo.salesOffice` (string) Sales office responsible for the contract Example: "5000" - `salesOrganizationInfo.blockedForOrdering` (boolean) Indicator if the customer is blocked for ordering in a sales organization Example: true - `salesOrganizationInfo.blockedForDelivery` (boolean) Indicator if the subsidiary is blocked for delivery - `salesOrganizationInfo.shippingAddresses` (array) List of external id of the related shipping addresses Example: ["ADDR001","ADDR002"] - `salesOrganizationInfo.billingAddresses` (array) List of external id of the related billing addresses Example: ["ADDR003"] - `salesOrganizationInfo.salesOrganizationCode` (string) Code of the sales organization in the source system (not unique across clients) Example: "SO001" - `salesOrganizationInfo.salesUnit` (object) - `salesOrganizationInfo.salesUnit.unitOfMeasure` (string) Unit in which the product is sold, different from base unit Example: "PK" - `salesOrganizationInfo.salesUnit.conversionFactorToBaseUnit` (number) Number of base units per sales unit (e.g., 10 means 1 PK = 10 PC) Example: 1000 - `salesOrganizationInfo.salesUnit.description` (string) Description of the sales unit packaging Example: "Package of 10 units" - `businessPartner` (object) Details of the business partner associated with the contract - `businessPartner.externalId` (string) External id of the business partner that is globally unique across the provided business partner data Example: "0000100000" - `businessPartner.type` (string,null) Type of business partner (e.g., Supplier, Customer) Enum: "supplier", "customer", null - `title` (string) Title or name of the contract Example: "Software Maintenance Agreement" - `description` (string) Description of the contract and its purpose Example: "Annual software maintenance contract for Acme Corp" - `createdDate` (string) Date when the contract was created (YYYY-MM-DD) Example: "2025-01-15" - `startDate` (string) Date when the contract becomes effective (YYYY-MM-DD) Example: "2025-02-01" - `endDate` (string) Date when the contract expires (YYYY-MM-DD) Example: "2026-01-31" - `fiscalYearLabel` (string) Fiscal year label associated with the contract Example: "2023" - `type` (string) Type of contract Example: "Service Agreement" - `subType` (string) Subtype of contract Example: "Quantity" - `currency` (string) Currency in which the contract amounts are denominated Example: "EUR" - `totalNetAmount` (number) Total net amount of the contract Example: 50000 - `totalTaxAmount` (number) Total tax amount applicable to the contract Example: 9500 - `totalGrossAmount` (number) Total gross amount of the contract (net amount + tax) Example: 59500 - `paymentTerms` (object) - `paymentTerms.paymentTermKey` (string) Key of the payment term as defined in the source system Example: "T10" - `paymentTerms.descriptions` (array) Descriptions of the payment terms in different languages Example: [{"text":"Please pay us","language":"en"}] - `paymentTerms.descriptions.text` (string) Text content Example: "Fish & Chips" - `paymentTerms.descriptions.language` (string,null) Two letter language code as defined in ISO 639-1 Enum: "aa", "ab", "ae", "af", "ak", "am", "an", "ar", "as", "av", "ay", "az", "ba", "be", "bg", "bh", "bi", "bm", "bn", "bo", "br", "bs", "ca", "ce", "ch", "co", "cr", "cs", "cu", "cv", "cy", "da", "de", "dv", "dz", "ee", "el", "en", "eo", "es", "et", "eu", "fa", "ff", "fi", "fj", "fo", "fr", "fy", "ga", "gd", "gl", "gn", "gu", "gv", "ha", "he", "hi", "ho", "hr", "ht", "hu", "hy", "hz", "ia", "id", "ie", "ig", "ii", "ik", "io", "is", "it", "iu", "ja", "jv", "ka", "kg", "ki", "kj", "kk", "kl", "km", "kn", "ko", "kr", "ks", "ku", "kv", "kw", "ky", "la", "lb", "lg", "li", "ln", "lo", "lt", "lu", "lv", "mg", "mh", "mi", "mk", "ml", "mn", "mr", "ms", "mt", "my", "na", "nb", "nd", "ne", "ng", "nl", "nn", "no", "nr", "nv", "ny", "oc", "oj", "om", "or", "os", "pa", "pi", "pl", "ps", "pt", "qu", "rm", "rn", "ro", "ru", "rw", "sa", "sc", "sd", "se", "sg", "si", "sk", "sl", "sm", "sn", "so", "sq", "sr", "ss", "st", "su", "sv", "sw", "ta", "te", "tg", "th", "ti", "tk", "tl", "tn", "to", "tr", "ts", "tt", "tw", "ty", "ug", "uk", "ur", "uz", "ve", "vi", "vo", "wa", "wo", "xh", "yi", "yo", "za", "zh", "zu", null - `parentContract` (object) Details of the business partner associated with the contract - `parentContract.externalId` (string) External id of the parent contract that is globally unique across the provided parent contract data Example: "PARENT-2024-0005" - `parentContract.contractNumber` (string) Contract number of the parent contract Example: "CN-2024-005" - `targetQuantity` (number) Target quantity specified in the contract Example: 1000 - `targetValue` (number) Target value of the contract in the specified currency Example: 200000 - `contractItems` (array) List of items included in the contract - `contractItems.itemNumber` (string) Unique identifier for the contract item Example: "001" - `contractItems.category` (string) Category of the contract item (e.g., Service, Product) Example: "Service" - `contractItems.description` (string) Description of the contract item Example: "Annual software maintenance" - `contractItems.netAmount` (number) Net amount of the contract item Example: 25000 - `contractItems.taxAmount` (number) Tax amount applicable to the contract item Example: 4750 - `contractItems.grossAmount` (number) Gross amount of the contract item (net + tax) Example: 29750 - `contractItems.unitPrice` (number) Price per unit of the contract item Example: 25000 - `contractItems.quantity` (number) Quantity of the contract item Example: 1 - `contractItems.unitOfMeasure` (string) Unit of measure for the contract item Example: "EA" - `contractItems.billingCycle` (string) Purchase order related to the invoice line item Example: "Billing cycle for the contract item" - `contractItems.durationMonths` (number) Duration of the contract item in months Example: 12 - `contractItems.taxCode` (object) - `contractItems.taxCode.code` (string) Unique code of the type of tax in the source system Example: "DEU_Standard" - `contractItems.taxCode.description` (string) Description of the type of tax in the source system Example: "DEU - Standard (19%)" - `additionalAgreements` (array) List of additional agreements linked to the contract - `additionalAgreements.externalId` (string) External id of the agreement that is globally unique across the provided agreement data Example: "AGREEMENT-001" - `additionalAgreements.type` (string) Type of agreement Example: "downPaymentAllowed" - `additionalAgreements.value` (boolean) Value of the agreement condition Example: true - `obligations` (array) List of obligations specified in the contract - `obligations.party` (string) Party responsible for the obligation Example: "Company A" - `obligations.description` (string) Description of the obligation Example: "Company A will deliver 1000 units of Product X per quarter" - `contacts` (array) List of contact persons associated with the contract - `contacts.firstName` (string) First name of the contact person Example: "Koala" - `contacts.lastName` (string) Last name of the contact person Example: "Hinze" - `contacts.email` (string) Email address of the contact person Example: "accountant@sap.com" - `contacts.phoneNumber` (number) Phone number of the contact person Example: 491001234567891 - `customFields` (object) List of key value pairs containing custom fields from the source system - `customMetadata` (object) Any nested structure with metadata that source system needs to send Example: {"someTopLevelProperty":"value1","someNestedProperty":{"nestedProperty":"value2"},"someArrayProperty":["value3","value4"]} ## Response 200 fields (application/json): - `externalId` (string, required) External id of the contract that is globally unique across the provided contract data Example: "CONTRACT-2025-0001" - `externalClientId` (string) Identifier of the client entity in the source system which can be used to separate data Example: "CONTRACT-2025-0001" - `documentId` (string) Document id that was assigned during upload to Hypatos Example: "67c02594d4aa80eecbd39bbe" - `documents` (array) - `documents.id` (string) Document id that was assigned during upload to Hypatos Example: "63cac12c37bb02accb396cae" - `documents.type` (string) Document type that was assigned during upload to Hypatos Example: "invoice" - `contractNumber` (string) Contract number assigned in the source system Example: "CN-2025-001" - `status` (string,null) Indicates the current lifecycle state of the contract Enum: "draft", "active", "pending", "suspended", "cancelled", "expired", "terminated", null - `businessPartnerContractNumber` (string) Contract number assigned by the business partner Example: "K9120-12" - `externalCompanyId` (string) External unique identifier of the company in the source system Example: "DE01" - `salesOrganizationInfo` (array) - `salesOrganizationInfo.externalSalesOrganizationId` (string) External identifier for the sales organization Example: "1000" - `salesOrganizationInfo.distributionChannel` (string) Distribution channel for sales Example: "2000" - `salesOrganizationInfo.division` (string) Division under which the sales organization operates Example: "3000" - `salesOrganizationInfo.salesGroup` (string) Sales group associated with the contract Example: "4000" - `salesOrganizationInfo.salesOffice` (string) Sales office responsible for the contract Example: "5000" - `salesOrganizationInfo.blockedForOrdering` (boolean) Indicator if the customer is blocked for ordering in a sales organization Example: true - `salesOrganizationInfo.blockedForDelivery` (boolean) Indicator if the subsidiary is blocked for delivery - `salesOrganizationInfo.shippingAddresses` (array) List of external id of the related shipping addresses Example: ["ADDR001","ADDR002"] - `salesOrganizationInfo.billingAddresses` (array) List of external id of the related billing addresses Example: ["ADDR003"] - `salesOrganizationInfo.salesOrganizationCode` (string) Code of the sales organization in the source system (not unique across clients) Example: "SO001" - `salesOrganizationInfo.salesUnit` (object) - `salesOrganizationInfo.salesUnit.unitOfMeasure` (string) Unit in which the product is sold, different from base unit Example: "PK" - `salesOrganizationInfo.salesUnit.conversionFactorToBaseUnit` (number) Number of base units per sales unit (e.g., 10 means 1 PK = 10 PC) Example: 1000 - `salesOrganizationInfo.salesUnit.description` (string) Description of the sales unit packaging Example: "Package of 10 units" - `businessPartner` (object) Details of the business partner associated with the contract - `businessPartner.externalId` (string) External id of the business partner that is globally unique across the provided business partner data Example: "0000100000" - `businessPartner.type` (string,null) Type of business partner (e.g., Supplier, Customer) Enum: "supplier", "customer", null - `title` (string) Title or name of the contract Example: "Software Maintenance Agreement" - `description` (string) Description of the contract and its purpose Example: "Annual software maintenance contract for Acme Corp" - `createdDate` (string) Date when the contract was created (YYYY-MM-DD) Example: "2025-01-15" - `startDate` (string) Date when the contract becomes effective (YYYY-MM-DD) Example: "2025-02-01" - `endDate` (string) Date when the contract expires (YYYY-MM-DD) Example: "2026-01-31" - `fiscalYearLabel` (string) Fiscal year label associated with the contract Example: "2023" - `type` (string) Type of contract Example: "Service Agreement" - `subType` (string) Subtype of contract Example: "Quantity" - `currency` (string) Currency in which the contract amounts are denominated Example: "EUR" - `totalNetAmount` (number) Total net amount of the contract Example: 50000 - `totalTaxAmount` (number) Total tax amount applicable to the contract Example: 9500 - `totalGrossAmount` (number) Total gross amount of the contract (net amount + tax) Example: 59500 - `paymentTerms` (object) - `paymentTerms.paymentTermKey` (string) Key of the payment term as defined in the source system Example: "T10" - `paymentTerms.descriptions` (array) Descriptions of the payment terms in different languages Example: [{"text":"Please pay us","language":"en"}] - `paymentTerms.descriptions.text` (string) Text content Example: "Fish & Chips" - `paymentTerms.descriptions.language` (string,null) Two letter language code as defined in ISO 639-1 Enum: "aa", "ab", "ae", "af", "ak", "am", "an", "ar", "as", "av", "ay", "az", "ba", "be", "bg", "bh", "bi", "bm", "bn", "bo", "br", "bs", "ca", "ce", "ch", "co", "cr", "cs", "cu", "cv", "cy", "da", "de", "dv", "dz", "ee", "el", "en", "eo", "es", "et", "eu", "fa", "ff", "fi", "fj", "fo", "fr", "fy", "ga", "gd", "gl", "gn", "gu", "gv", "ha", "he", "hi", "ho", "hr", "ht", "hu", "hy", "hz", "ia", "id", "ie", "ig", "ii", "ik", "io", "is", "it", "iu", "ja", "jv", "ka", "kg", "ki", "kj", "kk", "kl", "km", "kn", "ko", "kr", "ks", "ku", "kv", "kw", "ky", "la", "lb", "lg", "li", "ln", "lo", "lt", "lu", "lv", "mg", "mh", "mi", "mk", "ml", "mn", "mr", "ms", "mt", "my", "na", "nb", "nd", "ne", "ng", "nl", "nn", "no", "nr", "nv", "ny", "oc", "oj", "om", "or", "os", "pa", "pi", "pl", "ps", "pt", "qu", "rm", "rn", "ro", "ru", "rw", "sa", "sc", "sd", "se", "sg", "si", "sk", "sl", "sm", "sn", "so", "sq", "sr", "ss", "st", "su", "sv", "sw", "ta", "te", "tg", "th", "ti", "tk", "tl", "tn", "to", "tr", "ts", "tt", "tw", "ty", "ug", "uk", "ur", "uz", "ve", "vi", "vo", "wa", "wo", "xh", "yi", "yo", "za", "zh", "zu", null - `parentContract` (object) Details of the business partner associated with the contract - `parentContract.externalId` (string) External id of the parent contract that is globally unique across the provided parent contract data Example: "PARENT-2024-0005" - `parentContract.contractNumber` (string) Contract number of the parent contract Example: "CN-2024-005" - `targetQuantity` (number) Target quantity specified in the contract Example: 1000 - `targetValue` (number) Target value of the contract in the specified currency Example: 200000 - `contractItems` (array) List of items included in the contract - `contractItems.itemNumber` (string) Unique identifier for the contract item Example: "001" - `contractItems.category` (string) Category of the contract item (e.g., Service, Product) Example: "Service" - `contractItems.description` (string) Description of the contract item Example: "Annual software maintenance" - `contractItems.netAmount` (number) Net amount of the contract item Example: 25000 - `contractItems.taxAmount` (number) Tax amount applicable to the contract item Example: 4750 - `contractItems.grossAmount` (number) Gross amount of the contract item (net + tax) Example: 29750 - `contractItems.unitPrice` (number) Price per unit of the contract item Example: 25000 - `contractItems.quantity` (number) Quantity of the contract item Example: 1 - `contractItems.unitOfMeasure` (string) Unit of measure for the contract item Example: "EA" - `contractItems.billingCycle` (string) Purchase order related to the invoice line item Example: "Billing cycle for the contract item" - `contractItems.durationMonths` (number) Duration of the contract item in months Example: 12 - `contractItems.taxCode` (object) - `contractItems.taxCode.code` (string) Unique code of the type of tax in the source system Example: "DEU_Standard" - `contractItems.taxCode.description` (string) Description of the type of tax in the source system Example: "DEU - Standard (19%)" - `additionalAgreements` (array) List of additional agreements linked to the contract - `additionalAgreements.externalId` (string) External id of the agreement that is globally unique across the provided agreement data Example: "AGREEMENT-001" - `additionalAgreements.type` (string) Type of agreement Example: "downPaymentAllowed" - `additionalAgreements.value` (boolean) Value of the agreement condition Example: true - `obligations` (array) List of obligations specified in the contract - `obligations.party` (string) Party responsible for the obligation Example: "Company A" - `obligations.description` (string) Description of the obligation Example: "Company A will deliver 1000 units of Product X per quarter" - `contacts` (array) List of contact persons associated with the contract - `contacts.firstName` (string) First name of the contact person Example: "Koala" - `contacts.lastName` (string) Last name of the contact person Example: "Hinze" - `contacts.email` (string) Email address of the contact person Example: "accountant@sap.com" - `contacts.phoneNumber` (number) Phone number of the contact person Example: 491001234567891 - `customFields` (object) List of key value pairs containing custom fields from the source system - `customMetadata` (object) Any nested structure with metadata that source system needs to send Example: {"someTopLevelProperty":"value1","someNestedProperty":{"nestedProperty":"value2"},"someArrayProperty":["value3","value4"]} ## Response 400 fields (application/json): - `detail` (array) - `detail.loc` (array, required) - `detail.msg` (string, required) - `detail.type` (string, required) ## Response 404 fields (application/json): - `type` (string) A URI reference that uniquely identifies the problem type only in the context of the provided API. Opposed to the specification in RFC-7807, it is neither recommended to be dereferenceable and point to a human-readable documentation nor globally unique for the problem type. Example: "/some/uri-reference" - `title` (string) A short summary of the problem type. Written in English and readable for engineers, usually not suited for non technical stakeholders and not localized. Example: "some title for the error situation" - `status` (integer) The HTTP status code generated by the origin server for this occurrence of the problem. - `detail` (string) A human readable explanation specific to this occurrence of the problem that is helpful to locate the problem and give advice on how to proceed. Written in English and readable for engineers, usually not suited for non technical stakeholders and not localized. Example: "some description for the error situation" - `instance` (string) A URI reference that identifies the specific occurrence of the problem, e.g. by adding a fragment identifier or sub-path to the problem type. May be used to locate the root of this problem in the source code. Example: "/some/uri-reference#specific-occurrence-context" ## Response 415 fields (application/json): - `detail` (array) - `detail.loc` (array, required) - `detail.msg` (string, required) - `detail.type` (string, required) ## Response 429 fields