| Status | |
|---|---|
| Owner | |
| Stakeholders | The business stakeholders involved in making, reviewing, and endorsing this decision. Type @ to mention people by name |
| Jira Request ID | |
| Jira Development ID |
| Parameter | Value |
|---|---|
| Application System (Source) | Keelvar |
| Application System ( Target) | Ariba Guided Sourcing |
| Business Process Reference | 03.03.03.01. Manage Sourcing Projects |
Ariba Guided Sourcing is used as the single entry point for all Sourcing Events. If the users can select the Keelvar template to create an Event in Ariba Guided Sourcing, the details of the Event are replicated to Keelvar and any change in Keelvar reflects the status of the Event in Ariba Guided Sourcing. When the user awards one or multiple Bidders or Suppliers in Keelvar, the awarded Bid(s) and Keelvar Bid Sheet must be sent back to Ariba Guided Sourcing.
The scope of this Functional Specification is to describe the interface between Keelvar and Ariba Guided Sourcing. When an award scenario and awarded bid sheet(s) are created in Keelvar and the event is closed in Keelvar, a Webhook in Keelvar will notify SCPI about the award. After that, SCPI will send the award scenario and awarded bid sheet(s) back to the event in Ariba Guided Sourcing. If any new Bidder is added in Keelvar, the new Bidder and Bidder Contact must also be created in Ariba Guided Sourcing.

Step | Description | Comment |
|---|---|---|
1 | User awards one or more suppliers or bidders in Keelvar and closes the Event in Keelvar. | |
2 | A webhook is triggered from Keelvar to SCPI notifying the change along with the Ariba Event ID | |
3 | SCPI extracts Sourcing Event Feed and Award Feed details from Keelvar Export API | |
4 | SCPI extracts Keelvar bid sheet and converts it into a CSV file | |
5 | SCPI sets Ariba event status to Draft | |
6 | If an awarded Bidder has been added directly in Keelvar, SCPI adds the new bidder is added to the Ariba event. | |
7 | SCPI adds the Keelvar Bid Sheet Item to the Ariba Event | |
8 | SCPI sets the Ariba Guided Souring Event status to Publish |
|
9 | SCPI posts surrogate bid(s) for awarded bidder(s) to Ariba Guided Sourcing Event along with the Bid Sheet as attachment |
|
10 | SCPI sets the Ariba Guided Sourcing Event status to Pending Selection |
|
11 | SCPI creates an Award Scenario with the above sent Bid(s) in Ariba Guided Sourcing Event |
|
12 | User logs into Ariba, awards the bid and creates a contract. |
|
The following are the Security and Authorization considerations for this interface:
In order to activate the SAP Ariba API for Event Management, following steps need to be completed:
In order to activate Keelvar API, following steps need to be completed:
Ariba Guided Sourcing configuration details are described as under:
Supplementary | Test | Production | |
Ariba Technical User | R_BTP_ARB_ADMIN | ||
Ariba Realm ID | 745255310-SS-T | 745255310-T | 745255310 |
OAuth URL | |||
Request URL | Surrogate Bidding API - https://eu.openapi.ariba.com/api/sourcing-event-bid/v1/prod Event Management API - https://eu.openapi.ariba.com/api/sourcing-event/v2/prod/ | Surrogate Bidding API - https://eu.openapi.ariba.com/api/sourcing-event-bid/v1/prod Event Management API - https://eu.openapi.ariba.com/api/sourcing-event/v2/prod/ | Surrogate Bidding API - https://eu.openapi.ariba.com/api/sourcing-event-bid/v1/prod Event Management API - https://eu.openapi.ariba.com/api/sourcing-event/v2/prod/ |
Keelvar configuration is described below:
Request URL |
A webhook for Sourcing Event Feed must be created in Keelvar to receive of the following changes in Sourcing Event:
A request must be sent to support@keelvar.com and make a whitelist request for the domain of the SCPI system to which the HTTP notifications will be sent.
Creation of Webhook in Keelvar for Sourcing Event Feed requires sending a request as under:
curl -X POST https://my.keelvar.app/api/webhooks \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <YOUR_API_KEY>' \
-d '{
"name": "Sourcing Event Feed Webhook",
"description": "Keelvar Sourcing Event Feed Webhook",
"signing_alg": "HMAC_SHA256",
"signing_key": "(Signing Key)",
"triggers": "[SOURCING_EVENTS_FEED_UPDATED]",
"url": (SCPI webhook listener URL),
}'
Keelvar will send the response with the Webhook UUID as under:
'description':'Keelvar Sourcing Event Feed Webhook',
'name':'Sourcing Event Feed Webhook',
'signing_alg':'HMAC_SHA256',
'signing_key': '(Signing Key)',
'triggers':'[SOURCING_EVENTS_FEED_UPDATED]',
'url':(SCPI webhook listener URL),
'uuid':'4a55a230-307b-4bab-ac53-e95186b88968'
Not applicable
Since Sourcing Events are originally initiated in SAP Ariba Guided Sourcing and integrated to Keelvar, when the award scenario is completed and awarded bid sheet are created in Keelvar, they must be automatically sent back in SAP Ariba Guided Sourcing.
Creation of API Applications in Ariba API is executed in the EU tenant.
Source Structure
The following Keelvar fields will be used to provide the required information for this interface:
| Field | Description |
| tags/{name=Ariba Event ID}/value | The Ariba Event ID |
| suppliers/external_id | The System ID of the Bidder or Supplier |
| awards/share_awarded | The decimal value of the share awarded to the Bidder or the supplier. The range is between 0 and 1. |
| sourcing_event | The UUID of the Keelvar Sourcing Event |
| fields/Contact ID | The Contact ID of the Bidder or Supplier Contact |
Target Structure
The following Keelvar fields will be used to provide the required information for this interface:
| Field | Description |
| eventId or supplierBids/eventId | The Ariba Event ID |
| supplierBids/winningSplitValue | The decimal value of the share awarded to the Bidder or the supplier. The range is between 0 and 1. |
| actionName | The name of the operation to change the state of the Ariba Event. |
| organization/systemID | The System ID of the Bidder or Supplier |
| contacts/uniqueName or supplierId or supplierBids/invitationId | The Contact ID of the Bidder or Supplier Contact |
| supplierBids/itemId | The Item ID of the Bid sheet from Keelvar item |
Mapping and Calculation
The following Mapping Table is used to update the status of the Ariba Event. The Ariba Event Management API is used for all requests:
| API or Portlet Name | Source Field | Required (Y/N) | Description | API or Portlet Name | Target Field | Required (Y/N) | Description | Rule Type | Rule Instruction |
|---|---|---|---|---|---|---|---|---|---|
| Static Value | Static Value = Ariba Technical User | Y | Technical User Name | /jobs | user | Y | Technical User Name | ||
| Static Value | Static Value = ThirdPartyUser | Y | Technical User PasswordAdapter | /jobs | PasswordAdapter | Y | Technical User PasswordAdapter | ||
| Static Value | Static Value = Realm ID | Y | The Ariba Guided Sourcing Realm ID | /jobs | realm | Y | The Ariba Guided Sourcing Realm ID | ||
| Static Value | Static Value = EVENT | Y | The type of object for which the status has to be updated | /jobs | resourceType | Y | The type of object for which the status has to be updated | ||
| Static Value | Static Value = Supported options:
| Y | The name of the operation | /jobs | actionName | Y | The name of the operation | ||
| /feeds/sourcing-events | tags/{name=Ariba Event ID}/value | Y | The Ariba Event ID | /jobs | ids/eventId | Y | The Ariba Event ID |
The following Mapping Table is used to add a new supplier invitation (new bidder) to the Ariba Event. The Ariba Event Management API is used for all requests:
| API or Portlet Name | Source Field | Required (Y/N) | Description | API or Portlet Name | Target Field | Required (Y/N) | Description | Rule Type | Rule Instruction |
|---|---|---|---|---|---|---|---|---|---|
| /feeds/sourcing-events | tags/{name=Ariba Event ID}/value | Y | The Ariba Event ID | events/{eventID}/items/supplierInvitations | eventID | Y | The Ariba Event ID | ||
| Static Value | Static Value = Ariba Technical User | Y | Technical User Name | events/{eventID}/items/supplierInvitations | user | Y | Technical User Name | ||
| Static Value | Static Value = ThirdPartyUser | Y | Technical User PasswordAdapter | events/{eventID}/items/supplierInvitations | PasswordAdapter | Y | Technical User PasswordAdapter | ||
| Static Value | Static Value = Realm ID | Y | The Ariba Guided Sourcing Realm ID | events/{eventID}/items/supplierInvitations | realm | Y | The Ariba Guided Sourcing Realm ID | ||
| /feeds/sourcing-events | suppliers/external_id | Y | The System ID of the Bidder or Supplier | events/{eventID}/items/supplierInvitations | organization/systemID | Y | The System ID of the Bidder or Supplier | ||
| /feeds/sourcing-events | fields/Contact ID | Y | The Contact ID of the Bidder or Supplier Contact | events/{eventID}/items/supplierInvitations | contacts/uniqueName | Y | The Contact ID of the Bidder or Supplier Contact | ||
| Static Value | Static Value = SourcingSupplierUser | Y | Supplier User PasswordAdapter | events/{eventID}/items/supplierInvitations | contacts/PasswordAdapter | Y | Supplier User PasswordAdapter |
The following Mapping Table is applicable to add Keelvar Bid Sheet Item to Ariba Guided Sourcing Event. The Ariba Event Management API is used for all requests:
| API or Portlet Name | Source Field | Required (Y/N) | Description | API or Portlet Name | Target Field | Required (Y/N) | Description | Rule Type | Rule Instruction |
|---|---|---|---|---|---|---|---|---|---|
| /feeds/sourcing-events | tags/{name=Ariba Event ID}/value | Y | The Ariba Event ID | events/{eventID}/items | eventID | Y | The Ariba Event ID | connection | |
| Static Value | Static Value = Ariba Technical User | Y | Technical User Name | events/{eventID}/items | user | Y | Technical User Name | connection | |
| Static Value | Static Value = ThirdPartyUser | Y | Technical User PasswordAdapter | events/{eventID}/items | PasswordAdapter | Y | Technical User PasswordAdapter | connection | |
| Static Value | Static Value = Realm ID | Y | The Ariba Guided Sourcing Realm ID | events/{eventID}/items | realm | Y | The Ariba Guided Sourcing Realm ID | connection | |
| Static Value | Static Value = Keelvar Bid Sheet | Y | The Name of the Bid Sheet item | events/{eventID}/items | title | Y | The Name of the Bid Sheet item | payload | |
| Static Value | Static Value = 4 | Y | The Type of the Bid Sheet item (Line Item Type) | events/{eventID}/items | itemType | Y | The Type of the Bid Sheet item (Line Item Type) | payload | |
| Static Value | Static Value =Award Percentage | Y | The Term name for Award Percentage | events/{eventID}/items | terms/title | Y | The Term name for Award Percentage | payload | |
| Static Value | Static Value = Bid | Y | The Term name for Bid | events/{eventID}/items | terms/title | Y | The Term name for Bid | payload | |
| Static Value | Static Value = 100 | Y | The initial value for quantity | events/{eventID}/items | terms/value/quantityValue/amount | Y | The initial value for quantity | payload | |
| Static Value | Static Value = P1 | Y | the unit of measure of quantity (Percentage) | events/{eventID}/items | terms/value/quantityValue/unitofMeasure | Y | the unit of measure of quantity (Percentage) | payload | |
| Static Value | Static Value = Keelvar Bid Sheet Attachment | Y | The Term Name for Bid Sheet attachment | events/{eventID}/items | terms/title | Y | The Term Name for Bid Sheet attachment | payload |
The following Mapping Table is applicable to trigger a Job required to send a Surrogate Bid to Ariba Guided Sourcing Event. The Surrogate Bidding API is used for all requests:
| API or Portlet Name | Source Field | Required (Y/N) | Description | API or Portlet Name | Target Field | Required (Y/N) | Description | Rule Type | Rule Instruction |
|---|---|---|---|---|---|---|---|---|---|
| Static Value | Static Value = Ariba Technical User | Y | Technical User Name | jobs | user | Y | Technical User Name | connection | |
| Static Value | Static Value = ThirdPartyUser | Y | Technical User PasswordAdapter | jobs | PasswordAdapter | Y | Technical User PasswordAdapter | connection | |
| Static Value | Static Value = Realm ID | Y | The Ariba Guided Sourcing Realm ID | jobs | realm | Y | The Ariba Guided Sourcing Realm ID | connection | |
| Static Value | Static Value = Allowed Operation are:
| Y | The Operation which has to be done for the Surrogate Bidding | jobs | operation | Y | The Operation which has to be done for the Surrogate Bidding | connection | |
| /feeds/awards | tags/{name=Ariba Event ID}/value | Y | The Ariba Event ID | jobs | eventId | Y | The Ariba Event ID | connection -URL | |
| manage/suppliers | fields/Contact ID | Y | Ariba Bidder Contact ID | jobs | supplierId | Y | Ariba Bidder Contact ID | payload | |
| Previous Request | Base64 encoded file | Y | The Exported Bid Sheet from Keelvar which has been converted into a CSV file | jobs | file | Y | The Exported Bid Sheet from Keelvar which has been converted into a CSV file | payload | |
| Static Value | Static Value = "1" | Y | The Item Number for the Keelvar Bid Sheet Item | jobs | itemNumber | Y | The Item Number for the Keelvar Bid Sheet Item | payload |
The following Mapping Table is applicable to get the status of the Job required to send a Surrogate Bid to Ariba Guided Sourcing Event. The Ariba Event Management API is used for all requests:
| API or Portlet Name | Source Field | Required (Y/N) | Description | API or Portlet Name | Target Field | Required (Y/N) | Description | Rule Type | Rule Instruction |
|---|---|---|---|---|---|---|---|---|---|
| Previous Request | jobId | Y | The Job ID retrieved from the previous request | jobs/{jobId} | jobId | Y | The Job ID retrieved from the previous request | ||
| Static Value | Static Value = Ariba Technical User | Y | Technical User Name | jobs/{jobId} | user | Y | Technical User Name | ||
| Static Value | Static Value = ThirdPartyUser | Y | Technical User PasswordAdapter | jobs/{jobId} | PasswordAdapter | Y | Technical User PasswordAdapter | ||
| Static Value | Static Value = Realm ID | Y | The Ariba Guided Sourcing Realm ID | jobs/{jobId} | realm | Y | The Ariba Guided Sourcing Realm ID |
The following Mapping Table is applicable to export the Surrogate Bid response file:
| API or Portlet Name | Source Field | Required (Y/N) | Description | API or Portlet Name | Target Field | Required (Y/N) | Description | Rule Type | Rule Instruction |
|---|---|---|---|---|---|---|---|---|---|
| Previous Request | jobId | Y | The Job ID retrieved from the previous request | jobs/{jobId} | jobId | Y | The Job ID retrieved from the previous request | ||
| Previous Request | fileId | Y | The File ID retrieved from the previous request | jobs/{jobId} | fileId | Y | The File ID retrieved from the previous request | ||
| Static Value | Static Value = Ariba Technical User | Y | Technical User Name | jobs/{jobId} | user | Y | Technical User Name | ||
| Static Value | Static Value = ThirdPartyUser | Y | Technical User PasswordAdapter | jobs/{jobId} | PasswordAdapter | Y | Technical User PasswordAdapter | ||
| Static Value | Static Value = Realm ID | Y | The Ariba Guided Sourcing Realm ID | jobs/{jobId} | realm | Y | The Ariba Guided Sourcing Realm ID |
The following Mapping Table is applicable to create a manual Award Scenario in Ariba Guided Sourcing Event. The Ariba Event Management API is used for all requests:
| API or Portlet Name | Source Field | Required (Y/N) | Description | API or Portlet Name | Target Field | Required (Y/N) | Description | Rule Type | Rule Instruction |
|---|---|---|---|---|---|---|---|---|---|
| /feeds/awards | tags(name="Ariba Document ID")/value | Y | The Ariba Event ID | /events/{eventId}/scenarios | eventId | Y | The Ariba Event ID | ||
| /feed/awards | Concatenation of Static value = "Keelvar Scenario" and rounds/name | Y | Name of the Manual Scenario | /events/{eventId}/scenarios | title | Y | Name of the Manual Scenario | ||
| Static Value | Static value = "0" | Y | Scenario Type i.e Manual | /events/{eventId}/scenarios | scenarioType | Y | Scenario Type i.e Manual | ||
| Static Value | Static value = "Primary" | Y | Bid Type | /events/{eventId}/scenarios | supplierBids/bidType | Y | Bid Type | Loop | Loop for each awarded bidder in case of split bid |
| event={EventID} | itemID{title="Bid sheet from Keelvar"} | Y | The Item ID of the Bid sheet from Keelvar item | /events/{eventId}/scenarios | supplierBids/itemId | Y | The Item ID of the Bid sheet from Keelvar item | Loop | Loop for each awarded bidder in case of split bid |
| /feeds/awards | tags(name="Ariba Document ID")/value | Y | The Ariba Event ID | /events/{eventId}/scenarios | supplierBids/eventId | Y | The Ariba Event ID | Loop | Loop for each awarded bidder in case of split bid |
| manage/suppliers | fields/Contact ID | Y | Contact ID of the Bidder | /events/{eventId}/scenarios | supplierBids/invitationId | Y | Contact ID of the Bidder | Loop | Loop for each awarded bidder in case of split bid |
| Static Value | Static value = "2" | Y | Award By Quantity | /events/{eventId}/scenarios | supplierBids/winningSplitType | Y | Award By Quantity | Loop | Loop for each awarded bidder in case of split bid |
| /feeds/awards | awards/share_awarded | Y | Percentage Award | /events/{eventId}/scenarios | supplierBids/winningSplitValue | Y | Percentage Award | Loop; Multiple | Loop for each awarded bidder in case of split bid; Multiply Keelvar value with 100 |
A webhook should be triggered to complete Event closure activities which are described as under:
Trigger for Sourcing Event Feed Webhook in Keelvar
Once webhook is triggered in Keelvar, the SCPI should receive a notification as under:
{"trigger": "AWARD_FEED_UPDATED",
"timestamp": "2024-11-04T11:13:56.619494Z",
"payload": {
"sourcing_event": "19e44441-81c1-11f0-b2f5-f884135dd221",
"status": "CLOSED",
"name": "My Event",
"sourcing_requests": ["c819a007-bac7-4172-eb1d-272a9933f1a2"],
"tags":[
{
"name": "Commodity",
"value": "0005 OFFICE FURNITURE"
},
{
"name": "GBU",
"value": "TS & MATERIALS"
},
{
"name": "Ariba Event ID",
"value": "Doc123456789"
}
]
}}
Then, a request has to be made to Keelvar to fetch Sourcing Event Details using the Sourcing Event UUID from the above notification as under:
curl --location 'https://test.keelvar.dev/api/feeds/sourcing-events?id= request UUID from above>' \
--header 'Authorization: Bearer YOUR_API_TOKEN';
The response from Keelvar should contain the Sourcing Event Details which will be used as source in the subsequent process.
Sample JSON for Payload is available here:
Edit Event Status in Ariba Guided Sourcing
SCPI must create a payload based on the Mapping Table above to update the status of the Ariba Guided Sourcing Event.
Sample JSON for Payload is available here:
Then, a sample request to update the Job Status in Ariba Guided Sourcing is as below:
curl --location 'https://eu.openapi.ariba.com/api/sourcing-event/v2/prod//jobs?realm=$realmId&user=$aribaTechnicalUser&passwordAdapter=ThirdPartyUser' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'apiKey: <API KEPY>' \
--header 'Authorization: Bearer 514cfd69-907a-4765-b240-8a4b07489c8d' \
--data 'based on JSON above'
Add Supplier Invitation to Event in Ariba Guided Sourcing
SCPI must create a payload based on the Mapping Table above to add the Supplier Invitation to the Ariba Guided Sourcing Event. This needs to be done only if the Bidder has been added to the Keelvar Event directly in Keelvar.
Sample JSON for Payload is available here:
Then, a sample request to add the supplier Invitation in Ariba Guided Sourcing is as below:
curl --location 'https://eu.openapi.ariba.com/api/sourcing-event/v2/prod/events/$eventID/items/supplierInvitations?realm=$realmId&user=$aribaTechnicalUser&passwordAdapter=ThirdPartyUser' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'apiKey: <API KEPY>' \
--header 'Authorization: Bearer 514cfd69-907a-4765-b240-8a4b07489c8d' \
--data 'based on JSON above'
Add Keelvar Bid Sheet to Event in Ariba Guided Sourcing
SCPI must create a payload based on the Mapping Table above to add the Bid Sheet Item to the Ariba Guided Sourcing Event.
Sample JSON for Payload is available here:
Then, a request to add Bid Sheet Item to Ariba Guided Sourcing must be made as under:
curl --location 'https://eu.openapi.ariba.com/api/sourcing-event/v2/prod//events/Doc2698789795/items?showTotal=true&inheritTerms=false&inheritCommodityAndRegion=true&removeEmptyOwnerTerms=false&realm=$realmId&user=$aribaTechnicalUser&passwordAdapter=ThirdPartyUser \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'apiKey: ARIBA_API_KEY';
--header 'Authorization: Bearer ARIBA_TOKEN';
--data ' As per Payload above'
Download the Keelvar Bid Sheet and Convert it into csv file
A request is made to retrieve Award feed from Keelvar for the Sourcing Event from the Webhook Trigger Notification as under:
curl --location 'https://test.keelvar.dev/api/feeds/awards?sourcing_event=$event_uuid' \
--header 'Authorization: Bearer Bearer API_TOKEN';
The response from Keelvar is similar to this:
This response must be converted into a csv file. For each object in the award feed a row-entry should be added in the csv file. The CSV file should have following columns:
Submit a Surrogate Bid to the Event in Ariba Guided Sourcing
Surrogate Bids must be submitted for each of the Bidders that have been awarded in Keelver. The processing of a Surrogate Bid to Ariba is described below. The Ariba Event ID is needed for each of the following steps:
#1
The request for Export, Import, Add Attachment and Submit Jobs must be sent in a form format. The form details for each of the above steps are provided here:
The request for Jobs to be sent as under:
curl --location 'https://eu.openapi.ariba.com/api/sourcing-event-bid/v1/prod/jobs?realm=$realmId&user=$aribaTechnicalUser&passwordAdapter=ThirdPartyUser' \
--header 'Content-Type: multipart/form-data' \
--header 'Accept: application/json' \
--header 'apiKey: ARIBA_API_KEY';
--header 'Authorization: Bearer ARIBA_TOKEN';
--form 'form Data as described above';
In response, Ariba sends back the Id of the Job.
#2
The request for Job status can be sent as under:
curl --location 'https://eu.openapi.ariba.com/api/sourcing-event-bid/v1/prod/jobs/$jobId?realm=$realmId&user=$aribaTechnicalUser&passwordAdapter=ThirdPartyUser' \
--header 'Content-Type: multipart/form-data' \
--header 'Accept: application/json' \
--header 'apiKey: ARIBA_API_KEY';
--header 'Authorization: Bearer ARIBA_TOKEN';
In response, Ariba send back the Id of the Job. It also includes the FileId if the operation of the Job request was Export.
#3
The request to download the Ariba Bid response sheet can be sent as under:
curl --location 'https://eu.openapi.ariba.com/api/sourcing-event-bid/v1/prod/jobs/$jobId/files/$fileId?realm=$realmId&user=$aribaTechnicalUser&passwordAdapter=ThirdPartyUser' \
--header 'Content-Type: multipart/form-data' \
--header 'Accept: application/json' \
--header 'apiKey: ARIBA_API_KEY';
--header 'Authorization: Bearer ARIBA_TOKEN';
#4
The request to Import Ariba Bid Response Sheet must be sent in a form format. The form details for each of the above steps are provided here:
The request for Jobs to be sent as under:
curl --location 'https://eu.openapi.ariba.com/api/sourcing-event-bid/v1/prod/jobs?realm=$realmId&user=$aribaTechnicalUser&passwordAdapter=ThirdPartyUser' \
--header 'Content-Type: multipart/form-data' \
--header 'Accept: application/json' \
--header 'apiKey: ARIBA_API_KEY';
--header 'Authorization: Bearer ARIBA_TOKEN';
--form 'form Data as described above';
#5
The request for Job status can be sent as under:
curl --location 'https://eu.openapi.ariba.com/api/sourcing-event-bid/v1/prod/jobs/$jobId?realm=$realmId&user=$aribaTechnicalUser&passwordAdapter=ThirdPartyUser' \
--header 'Content-Type: multipart/form-data' \
--header 'Accept: application/json' \
--header 'apiKey: ARIBA_API_KEY';
--header 'Authorization: Bearer ARIBA_TOKEN';
In response, Ariba send back the status of the Job. If the Import is successful, move on to the next step.
#6
The request to Add Attachment (Keelvar Bid Sheet) to Ariba Bid must be sent in a form format. The form details for each of the above steps are provided here:
The request for Jobs to be sent as under:
curl --location 'https://eu.openapi.ariba.com/api/sourcing-event-bid/v1/prod/jobs?realm=$realmId&user=$aribaTechnicalUser&passwordAdapter=ThirdPartyUser' \
--header 'Content-Type: multipart/form-data' \
--header 'Accept: application/json' \
--header 'apiKey: ARIBA_API_KEY';
--header 'Authorization: Bearer ARIBA_TOKEN';
--form 'form Data as described above';
In response, Ariba sends back the Id of the Job.
#7
The request for Job status can be sent as under:
curl --location 'https://eu.openapi.ariba.com/api/sourcing-event-bid/v1/prod/jobs/$jobId?realm=$realmId&user=$aribaTechnicalUser&passwordAdapter=ThirdPartyUser' \
--header 'Content-Type: multipart/form-data' \
--header 'Accept: application/json' \
--header 'apiKey: ARIBA_API_KEY';
--header 'Authorization: Bearer ARIBA_TOKEN';
In response, Ariba send back the status of the Job. If the Import is successful, move on to the next step.
#8
The request to Submit Bid must be sent in a form format. The form details for each of the above steps are provided here:
The request for Jobs to be sent as under:
curl --location 'https://eu.openapi.ariba.com/api/sourcing-event-bid/v1/prod/jobs?realm=$realmId&user=$aribaTechnicalUser&passwordAdapter=ThirdPartyUser' \
--header 'Content-Type: multipart/form-data' \
--header 'Accept: application/json' \
--header 'apiKey: ARIBA_API_KEY';
--header 'Authorization: Bearer ARIBA_TOKEN';
--form 'form Data as described above';
In response, Ariba sends back the Id of the Job.
#9
The request for Job status can be sent as under:
curl --location 'https://eu.openapi.ariba.com/api/sourcing-event-bid/v1/prod/jobs/$jobId?realm=$realmId&user=$aribaTechnicalUser&passwordAdapter=ThirdPartyUser' \
--header 'Content-Type: multipart/form-data' \
--header 'Accept: application/json' \
--header 'apiKey: ARIBA_API_KEY';
--header 'Authorization: Bearer ARIBA_TOKEN';
In response, Ariba send back the status of the Job. If the status is successful, the surrogate bid has been submitted
Create award scenario in Ariba Guided Sourcing
Then, the payload for Award Scenario creation must be done based on the Mapping Table above. The payload should be similar to this one:
In order to create an award scenario, a request must be sent to Ariba Event Management API as under:
curl --location 'https://eu.openapi.ariba.com/api/sourcing-event-bid/v1/prod/events/$eventId/scenarios?realm=$realmId&user=$aribaTechnicalUser&passwordAdapter=ThirdPartyUser' \
--header 'Content-Type: multipart/form-data' \
--header 'Accept: application/json' \
--header 'apiKey: ARIBA_API_KEY';
--header 'Authorization: Bearer ARIBA_TOKEN';
--data 'as per payload described above';
Not Applicable
Rate Limit for Ariba Surrogate Bid API - No specific API limits in place for this API but dynamic run time throttling is in effect.
Rate Limit for Ariba Event Management API - (Requests): 5/second, 80/minute, 3500/hour
Rate Limit for Keelvar api/feeds/awards - Burst (60/min), sustained (43,200/day)
Rate Limit for Keelvar api/feeds/sourcing-events - Burst (60/min), sustained (43,200/day)
Not Applicable
All requests for creation and update of sourcing events are done via delta load since last run.
The following should be monitored:
Not Applicable
Not Applicable
Not Applicable
10 events per day
Not Applicable
Error Messages Returned by the Event Management API
| ID | Condition | Expected Results |
|---|---|---|
| 1 | Create a RFP in Ariba Guided Sourcing includes populating all required header fields and inviting suppliers/bidders into the event | Header fields of RFP are populated and suppliers/bidders are added into event |
| 2 | Publish RFP in Ariba Guided Sourcing | RFP is published in Ariba Guided Sourcing with “Published” state and open for editing RFP is integrated to Keelvar via API |
3 | Open the event linked to RFP created in Ariba | The event is opened |
4 | Create Bid sheet and Cost Calculation in Keelvar | Bid sheet and Cost Calculation are created in Keelvar |
5 | Add new bidders directly in the event in Keelvar | New bidders are added into event in Keelvar |
6 | Publish event in Keelvar | Event status is “Published” in Keelvar RFP state in Ariba Guided Sourcing is “Published”, but locked for editing |
7 | Bidders submit bid in Keelvar | Receive bid for the event in Keelvar |
8 | Create Award Scenario in Keelvar | Award Scenario is created in Keelvar |
9 | Select Award Scenario in Keelvar and award bidders (includes new added bidders in Keelvar) | Award Scenario is selected in Keelvar |
10 | Close event in Keelvar | Event status is changed to “Closed” in Keelvar |
11 | New awarded Bidder Organization and Organization User are automatically created in Ariba Guided Sourcing via API | New Bidder Organization and Organization User are created in Ariba Guided Sourcing |
12 | Awarded Bid sheet in Keelvar is automatically sent to event in Ariba Guided Sourcing as Surrogate Bid via API | Awarded Bid sheet is added for awarded suppliers/bidder in Ariba Guided Sourcing |
13 | Event status is changed to “Stop” in Ariba Guided Sourcing via API | Event is automatically stopped in Ariba Guided Sourcing |
14 | Award Scenario in Keelvar is integrated to the event in Ariba Guided Sourcing via API | Award Scenario is automatically created in Ariba Guided Sourcing |
15 | Award Supplier/Bidder in Ariba Guided Sourcing | Supplier/Bidder is awarded in Ariba Guided Sourcing |
16 | Event status is changed to “Completed” in Ariba Guided Sourcing | Event is completed in Ariba Guided Sourcing |
Not Applicable
| Package Name | Parent Package |
|---|---|
Other Development Objects
| Object Type | Object Name | Purpose/High Level Logic | Design Rationale Reference |
|---|---|---|---|
Insert links and references to other documents which are relevant when trying to understand this decision and its implications. Other decisions are often impacted, so it's good to list them here with links. Attachments are also possible but dangerous as they are static documents and not updated by their authors.
