All requests to the API must be authenticated. The authentication is done using OAuth2.0. Refer to the OAuth2.0 documentation for instructions on how to setup Oauth2 authentication.
POST - Create a new resource
GET - Read one or more resources
PUT - Replace a resource
PATCH - Partially update a resource
DELETE - Delete a resource
200 - OK. The request was successful.
201 - Created. The request was successful and a new resource was created.
400 - Bad request. The request was invalid. See the response body for details.
401 - Unauthorized. The request was not authenticated. See the response body for details.
404 - Not found. The requested resource was not found.
429 - Too many requests. The request was throttled. Investigate Retry-After header
500 - Internal server error. An error occurred in the server. See the response body for details.
If the API returns an error, the response body will contain an error object. The error object contains a message and a list of errors.
If a 4xx status code is returned, clients must take care not to retry the request without modification. The exception here is 429 too many requests that can be retried after a period given in Retry-After header.
If a 5xx status code is returned, clients may retry the request. It is preferable to use an exponential backoff strategy when retrying
Companies, business units and persons need to be mapped to their corresponding entities in Jakamo. To do this, Jakamo has a simple mapping table feature that can be used to map external identifiers to Jakamo entities. To setup a mapping table in Jakamo, see: Mapping Tables
To use a mapped identifier, send the identifier and set type of the identifier to MAPPING_TABLE_ENTRY:
"authorPerson": {
"identifier": "msierra",
"identifierType": "MAPPING_TABLE_ENTRY"
},
Follow these instructions to get started with development.
Setup Authentication Follow instructions at OAuth2.0 documentation and setup a new OAUTH2 application. Add credentials for any applications you intend to integrate. Make sure you have a Buyer API integration enabled in Jakamo and the OAUTH2 application connected to that integration
Setup Person and Company Mapping Follow instructions at Mapping Tables and create a mapping table for your suppliers and if necessary, business units. Mapping strings for persons can be entered directly on the integrations page, there is no mapping table support for them yet. After setting up the mapping table, make sure to connect it to the Buyer API Integration on the integrations page
Download this open api specification. You can open it for example using Postman or alternatively you can generate a client using some open api tooling. Setup Oauth2 authentication and you should be able to interact with the API. For development, use https://demo.thejakamo.com as the base url.
Create a new Request For Quotation. Key features:
| rfqNumber required | string [ 1 .. 100 ] characters Unique required identifier of the RFQ. |
| title required | string [ 1 .. 500 ] characters Display name of the RFQ |
| description | string or null General description of the RFQ |
| projectNumber | string or null Project number of the RFQ. |
| currency required | string = 3 characters ^[A-Z]{3}$ Desired currency for the RFQ. Use ISO 4217 currency codes |
| publish | boolean or null Should the RFQ be published. It will not be shared to recipients until published. If not published, users may publish it later in Jakamo UI |
| offerDueDate required | string <date> non-empty Due date for the suppliers to submit their quotations. |
required | object (Rfqs.Models.PersonModel) A person in Jakamo |
object (Rfqs.Models.BusinessUnitModel) A business unit in Jakamo | |
Array of objects or null (Rfqs.Models.CompanyModel) List of suppliers | |
Array of objects or null (Rfqs.Models.PersonModel) List of responsible persons from the buyer side | |
Array of objects or null (Rfqs.Models.RfqItem) Suppliers are requested to provide information for these fields for each requested item | |
Array of objects or null (Rfqs.Models.QuestionModel) List of questions that suppliers must answer when replying to the RFQ. Questions can be either general questions (applicable to the entire RFQ) or line questions (applicable to specific RFQ items). General questions (IsQuestionForLines = false):
Line questions (IsQuestionForLines = true):
Supported input types:
| |
| requestedProperties | Array of strings or null Suppliers are requested to provide information for these fields for each requested item. Leave empty to use default values Possible values: Description: item description SellersItemNumber: item number on supplier side PriceWithoutVat: price without VAT included PriceWithVat: price with VAT included EstimatedDeliveryDate: estimated date when the supplier can deliver the requested goods LeadTimeDays: lead time of the requested goods DiscountPercent: discount percent from supplier side MinimumBatchSize: minimum batch size the supplier can provide CountryOfOrigin: country of origin of the requested goods CustomsCode: customs code of the requested goods AdditionalInfo: any additional information |
{- "rfqNumber": "RFQ12345",
- "title": "RFQ12345",
- "description": "Request for quotation for new project",
- "projectNumber": "P55512345",
- "currency": "EUR",
- "publish": true,
- "offerDueDate": "2038-01-19",
- "authorPerson": {
- "identifier": "hank-silva",
- "identifierType": "MAPPING_TABLE_ENTRY"
}, - "authorBusinessUnit": {
- "identifier": "east-business",
- "identifierType": "MAPPING_TABLE_ENTRY"
}, - "suppliers": [
- {
- "identifier": "supplier-a",
- "identifierType": "MAPPING_TABLE_ENTRY"
}, - {
- "identifier": "supplier-b",
- "identifierType": "MAPPING_TABLE_ENTRY"
}
], - "responsiblePersons": [
- {
- "identifier": "tim-calahan",
- "identifierType": "MAPPING_TABLE_ENTRY"
}
], - "requestedItems": [
- {
- "itemIdentifier": "10",
- "description": "High-strength steel bolt M12x40mm, grade 8.8, zinc plated",
- "buyersItemNumber": "BYR-12345-A",
- "itemName": "M12 Hex Bolt",
- "requestedQuantities": [
- 100,
- 500,
- 1000
], - "quantityUnit": "PCS",
- "drawingNumber": "DWG-12345-03",
- "revision": "Rev C",
- "requestedDeliveryDate": "2038-03-15"
}, - {
- "itemIdentifier": "20",
- "description": "Stainless steel washer M12, DIN 125A",
- "buyersItemNumber": "BYR-12346-B",
- "itemName": "M12 Washer",
- "requestedQuantities": [
- 200,
- 1000,
- 2000
], - "quantityUnit": "PCS",
- "annualVolume": 10000,
- "minimumOrderQuantity": 100,
- "requestedDeliveryDate": "2038-03-15"
}, - {
- "itemIdentifier": "30",
- "description": "Hydraulic cylinder assembly",
- "buyersItemNumber": "BYR-78901-C",
- "itemName": "Hydraulic Cylinder HC-250",
- "requestedQuantities": [
- 5,
- 10
], - "quantityUnit": "PCS",
- "contractNumber": "CNT-2024-00123",
- "drawingNumber": "DWG-78901-05",
- "additionalInformation": "Requires pressure test certificate and 24-month warranty",
- "requestedDeliveryDate": "2038-04-30"
}
], - "questions": [
- {
- "questionId": "cert-001",
- "orderNumber": 1,
- "inputType": "Select",
- "questionText": "What quality certification does your company hold?",
- "isQuestionForLines": false,
- "isRequired": true,
- "isCancelled": false,
- "valueOptions": [
- "ISO 9001",
- "ISO 14001",
- "None",
- "Other"
]
}, - {
- "questionId": "lead-time-001",
- "orderNumber": 2,
- "inputType": "Number",
- "questionText": "Lead time in days for this item",
- "isQuestionForLines": true,
- "isRequired": true,
- "isCancelled": false,
- "valueOptions": null
}
], - "requestedProperties": [
- "PriceWithoutVat",
- "LeadTimeDays",
- "AdditionalInfo"
]
}Updates an existing RFQ.
| rfqNumber required | string [ 1 .. 100 ] characters Unique required identifier of the RFQ. |
| title required | string [ 1 .. 500 ] characters Display name of the RFQ |
| description | string or null General description of the RFQ |
| projectNumber | string or null Project number of the RFQ. |
| currency required | string = 3 characters ^[A-Z]{3}$ Desired currency for the RFQ. Use ISO 4217 currency codes |
| publish | boolean or null Should the RFQ be published. It will not be shared to recipients until published. If not published, users may publish it later in Jakamo UI |
| offerDueDate required | string <date> non-empty Due date for the suppliers to submit their quotations. |
required | object (Rfqs.Models.PersonModel) A person in Jakamo |
object (Rfqs.Models.BusinessUnitModel) A business unit in Jakamo | |
Array of objects or null (Rfqs.Models.CompanyModel) List of suppliers | |
Array of objects or null (Rfqs.Models.PersonModel) List of responsible persons from the buyer side | |
Array of objects or null (Rfqs.Models.RfqItem) Suppliers are requested to provide information for these fields for each requested item | |
Array of objects or null (Rfqs.Models.QuestionModel) List of questions that suppliers must answer when replying to the RFQ. Questions can be either general questions (applicable to the entire RFQ) or line questions (applicable to specific RFQ items). General questions (IsQuestionForLines = false):
Line questions (IsQuestionForLines = true):
Supported input types:
| |
| requestedProperties | Array of strings or null Suppliers are requested to provide information for these fields for each requested item. Leave empty to use default values Possible values: Description: item description SellersItemNumber: item number on supplier side PriceWithoutVat: price without VAT included PriceWithVat: price with VAT included EstimatedDeliveryDate: estimated date when the supplier can deliver the requested goods LeadTimeDays: lead time of the requested goods DiscountPercent: discount percent from supplier side MinimumBatchSize: minimum batch size the supplier can provide CountryOfOrigin: country of origin of the requested goods CustomsCode: customs code of the requested goods AdditionalInfo: any additional information |
{- "rfqNumber": "RFQ12345",
- "title": "RFQ12345",
- "description": "Request for quotation for new project",
- "projectNumber": "P55512345",
- "currency": "EUR",
- "publish": true,
- "offerDueDate": "2038-01-19",
- "authorPerson": {
- "identifier": "hank-silva",
- "identifierType": "MAPPING_TABLE_ENTRY"
}, - "authorBusinessUnit": {
- "identifier": "east-business",
- "identifierType": "MAPPING_TABLE_ENTRY"
}, - "suppliers": [
- {
- "identifier": "supplier-a",
- "identifierType": "MAPPING_TABLE_ENTRY"
}, - {
- "identifier": "supplier-b",
- "identifierType": "MAPPING_TABLE_ENTRY"
}
], - "responsiblePersons": [
- {
- "identifier": "tim-calahan",
- "identifierType": "MAPPING_TABLE_ENTRY"
}
], - "requestedItems": [
- {
- "itemIdentifier": "10",
- "description": "High-strength steel bolt M12x40mm, grade 8.8, zinc plated",
- "buyersItemNumber": "BYR-12345-A",
- "itemName": "M12 Hex Bolt",
- "requestedQuantities": [
- 100,
- 500,
- 1000
], - "quantityUnit": "PCS",
- "drawingNumber": "DWG-12345-03",
- "revision": "Rev C",
- "requestedDeliveryDate": "2038-03-15"
}, - {
- "itemIdentifier": "20",
- "description": "Stainless steel washer M12, DIN 125A",
- "buyersItemNumber": "BYR-12346-B",
- "itemName": "M12 Washer",
- "requestedQuantities": [
- 200,
- 1000,
- 2000
], - "quantityUnit": "PCS",
- "annualVolume": 10000,
- "minimumOrderQuantity": 100,
- "requestedDeliveryDate": "2038-03-15"
}, - {
- "itemIdentifier": "30",
- "description": "Hydraulic cylinder assembly",
- "buyersItemNumber": "BYR-78901-C",
- "itemName": "Hydraulic Cylinder HC-250",
- "requestedQuantities": [
- 5,
- 10
], - "quantityUnit": "PCS",
- "contractNumber": "CNT-2024-00123",
- "drawingNumber": "DWG-78901-05",
- "additionalInformation": "Requires pressure test certificate and 24-month warranty",
- "requestedDeliveryDate": "2038-04-30"
}
], - "questions": [
- {
- "questionId": "cert-001",
- "orderNumber": 1,
- "inputType": "Select",
- "questionText": "What quality certification does your company hold?",
- "isQuestionForLines": false,
- "isRequired": true,
- "isCancelled": false,
- "valueOptions": [
- "ISO 9001",
- "ISO 14001",
- "None",
- "Other"
]
}, - {
- "questionId": "lead-time-001",
- "orderNumber": 2,
- "inputType": "Number",
- "questionText": "Lead time in days for this item",
- "isQuestionForLines": true,
- "isRequired": true,
- "isCancelled": false,
- "valueOptions": null
}
], - "requestedProperties": [
- "PriceWithoutVat",
- "LeadTimeDays",
- "AdditionalInfo"
]
}nullUpload files to attach to an RFQ document. RFQ is identified by RFQ number. You must also set the author person for the attachment, use mapped person strings for this.
| rfqNumber required | string |
| authorPersonIdentifier required | string |
| files required | Array of strings <binary> [ items <binary > ] |
nullEndpoints for creating and managing suppliers in Jakamo SRM. The supplierNumber is the stable external key used in all operations. Lookups are case-insensitive.
Creates a new supplier in the buyer organization's SRM.
The supplierNumber must be unique within the organization (case-insensitive) — a 409 Conflict is returned if a supplier with that number already exists.
To set custom field values, configure apiIdentifier values on template fields in the SRM settings (Settings → API integration), then pass them as entries with fieldId in fieldValues. A 400 Bad Request is returned if an unknown fieldId is provided. Fields configured as "updated by supplier" cannot be set via the integration API.
| name required | string or null |
| supplierNumber required | string or null |
| dunsNumber | string or null |
Array of objects or null (Jakamo.Contracts.Srm.Suppliers.IntegrationFieldValueDto) | |
| createdByIntegrationId | integer or null <int64> |
{- "name": "string",
- "supplierNumber": "string",
- "dunsNumber": "string",
- "fieldValues": [
- {
- "fieldId": "string",
- "value": null
}
], - "createdByIntegrationId": 0
}{- "name": "string",
- "supplierNumber": "string",
- "dunsNumber": "string",
- "fieldValues": [
- {
- "fieldId": "string",
- "value": null
}
], - "updatedAt": "2019-08-24T14:15:22Z"
}Returns the supplier matching the given supplierNumber within the buyer organization.
The fieldValues list in the response contains all template fields that have an apiIdentifier configured in SRM settings, including those with no value set (value will be null).
| supplierNumber required | string The buyer-assigned supplier number. Lookup is case-insensitive. |
{- "name": "string",
- "supplierNumber": "string",
- "dunsNumber": "string",
- "fieldValues": [
- {
- "fieldId": "string",
- "value": null
}
], - "updatedAt": "2019-08-24T14:15:22Z"
}Partially updates the supplier matching the given supplierNumber.
Null means keep: omit a field (or pass null) to leave its current value unchanged.
Empty string means clear: pass "" for dunsNumber or supplierNumber to remove the value. Note: name cannot be set to empty — a 400 Bad Request is returned.
The fieldValues list is merged by fieldId — only the entries you include are updated; all other field values remain unchanged. A 409 Conflict is returned if the new supplierNumber is already taken by another supplier. Fields configured as "updated by supplier" cannot be edited via the integration API.
| supplierNumber required | string The buyer-assigned supplier number of the supplier to update. Lookup is case-insensitive. |
| name | string or null |
| dunsNumber | string or null |
| supplierNumber | string or null |
Array of objects or null (Jakamo.Contracts.Srm.Suppliers.IntegrationFieldValueDto) |
{- "name": "string",
- "dunsNumber": "string",
- "supplierNumber": "string",
- "fieldValues": [
- {
- "fieldId": "string",
- "value": null
}
]
}{- "name": "string",
- "supplierNumber": "string",
- "dunsNumber": "string",
- "fieldValues": [
- {
- "fieldId": "string",
- "value": null
}
], - "updatedAt": "2019-08-24T14:15:22Z"
}