Sourcing Event Creation Examples
The following examples provide JSON data which may be used with the jobs endpoints as described in Usage.
These examples are specific to the sourcing event creation API, to be used with the /jobs/sourcing-events
endpoint which is fully described
in the OpenAPI Specification.
Create a Basic Sourcing Event
The below example creates a very basic Sourcing Event. It has a few bid-sheet columns and lots, but does not add supplier(s), formula(e) nor a custom schedule. A member of the event team can add suppliers later and publish the event from the Sourcing Optimizer app.
The roles
key enables access to the Sourcing Event for users within your organisation. All three available role types
have been shown here: Administrator, Editor and Viewer. The email addresses provided must be unique and must correspond
to existing Sourcing Optimiser users in your organisation.
{
"name": "Basic Event",
"description": "A very simple example event",
"business_contact": {
"name": "John Keelvary",
"email": "john@example.com"
},
"created_by": "bob@example.com",
"timezone": "Europe/Dublin",
"bid_sheet": {
"column_roles": { "lot_identifier": "Lot Name" },
"columns": [
{
"name": "Lot Name",
"column_type": "INPUT",
"input_by": "BUYER_INPUT",
"input_type": "TEXT"
},
{
"name": "Quantity",
"column_type": "INPUT",
"input_by": "BUYER_INPUT",
"input_type": "NUMBER",
"precision": 0
},
{
"name": "Unit Price",
"column_type": "INPUT",
"input_by": "SUPPLIER_INPUT",
"input_type": "CURRENCY",
"precision": 2
}
],
"lots": [
{
"name": "Lot 1",
"values": [
{ "column": "Lot Name", "value": "Lot 1" },
{ "column": "Quantity", "value": "100" }
]
},
{
"name": "Lot 2",
"values": [
{ "column": "Lot Name", "value": "Lot 2" },
{ "column": "Quantity", "value": "200" }
]
}
]
},
"primary_cost_calculation": "Unit Price * Quantity",
"roles": [
{ "email": "administrator@example.buyer.com", "role_type": "ADMIN" },
{ "email": "editor@example.buyer.com", "role_type": "EDITOR" },
{ "email": "viewer@example.buyer.com", "role_type": "VIEWER" }
],
"settings": { "is_test": true }
}
Note on bid sheet structure
Before we dive into more advanced examples, we should examine how the bid-sheet structure is defined in a little more detail.
As can be seen in the previous example, a lot_identifier
field is defined in the column_roles
top-level attribute on the bid_sheet
definition. This is a required attribute that contains the
name of the column containing identifying values for the lot.
Because the lot identifier column has such a critical role in the bid-sheet definition, it's name
must be specified in the column_roles
as well as being defined as a column in columns
.
A lot identifier column must always contain buyer-input text values, and by default will always
be included in reports. The attributes column_type
, input_by
, and input_type
must be set as in
all of the examples here.
Similarly, when specifying buyer-defined bid sheet values, the lot identifier value must be
specified at the top level of the lots
element as name
. It may also be defined as a standalone value
for the related column, however the lot name
will take precedence.
There is one other column_role
available currently, namely the volume
role. If specified on a
column definition, this indicates that the related column is the "volume" or "demand" column for
the bid-sheet. An example of this is shown in the more advanced sample below.
Optional Column with Default Value
A default value may be added to an optional column. The field will be blank on the bidsheet but will still be included in formula evaluations.
"bid_sheet": {
"column_roles": {
"lot_identifier": "Lot Name"
},
"columns": [
{
"name": "Lot Name",
"column_type": "INPUT",
"input_by": "BUYER_INPUT",
"input_type": "TEXT"
},
{
"name": "Delivery Note",
"column_type": "INPUT",
"input_by": "BUYER_INPUT",
"input_type": "TEXT",
"is_mandatory": false,
"default_value": "Standard delivery terms, example default value"
}
],
"lots": [
{
"name": "Lot 1",
"values": [
{
"column": "Lot Name",
"value": "Lot 1"
}
]
}
]
}
Create a more advanced Sourcing Event
The example below creates a Sourcing Event with a little more detail than the previous example, using more of the features
available in Sourcing Optimizer. It will create a bid-sheet with a formula column, some suppliers,
uses global bid inputs and sets initial bid values for suppliers. See that the column_type
value for the "Total Price" column
is set to formula
to specify that it is a formula column. It also sets the "volume" / "demand" column to be "Quantity".
A list of tags have been supplied in the tags
key. Note that these are distinct from the normal Event tags which may
be input in the Sourcing Optimizer application. The tag names must be configured at an organisation level before they
may be used here. Tags that do not match a configured label or option will be ignored.
Note: The use of the description
field on the bid-sheet lot columns adds a tool-tip in the Sourcing Optimizer app.
{
"name": "Event Name",
"description": "Event Description",
"business_contact": {
"name": "John Keelvary",
"email": "john@example.com"
},
"created_by": "bob@example.com",
"bid_sheet": {
"column_roles": {
"lot_identifier": "Lot Name",
"volume": "Quantity"
},
"columns": [
{
"name": "Lot Name",
"column_type": "INPUT",
"input_by": "BUYER_INPUT",
"input_type": "TEXT"
},
{
"name": "Quantity",
"column_type": "INPUT",
"input_by": "BUYER_INPUT",
"input_type": "NUMBER",
"precision": 0
},
{
"name": "Unit Price",
"column_type": "INPUT",
"description": "Price per unit",
"input_by": "SUPPLIER_INPUT",
"input_type": "CURRENCY",
"currency_code": "EUR"
},
{
"name": "Total Price",
"column_type": "FORMULA",
"description": "Total price of the lot",
"input_type": "CURRENCY",
"precision": 2,
"formula": "Unit Price * Quantity"
}
],
"global_inputs": [
{
"name": "Supplier Onboarding Cost",
"input_by": "BUYER_INPUT_SUPPLIER_SPECIFIC",
"input_type": "CURRENCY",
"currency_code": "EUR",
"precision": 2
}
],
"lots": [
{
"name": "Lot 1",
"values": [
{ "column": "Lot Name", "value": "Lot 1" },
{ "column": "Quantity", "value": "100" }
]
},
{
"name": "Lot 2",
"values": [
{ "column": "Lot Name", "value": "Lot 2" },
{ "column": "Quantity", "value": "200" }
]
}
]
},
"primary_cost_calculation": "Total Price + Supplier Onboarding Cost",
"suppliers": [
{
"name": "Supplier 1",
"external_id": "SUPP_1",
"contacts": [
{ "name": "Mary Jones", "email": "contact2.supplier.1@example.com" },
{ "name": "Joe Bloggs", "email": "contact1.supplier.1@example.com" }
]
},
{
"name": "Supplier 2",
"external_id": "SUPP_2",
"contacts": [
{ "name": "Max Mustermann", "email": "contact1.supplier.2@example.com" }
]
}
],
"starting_bids": {
"global_bid_values": [
{
"supplier": "Supplier 1",
"values": [
{ "column": "Supplier Onboarding Cost", "value": "250" }
]
},
{
"supplier": "Supplier 2",
"values": [
{ "column": "Supplier Onboarding Cost", "value": "300" }
]
}
],
"lot_bid_values": [
{
"lot": "Lot 1",
"supplier": "Supplier 1",
"values": [
{ "column": "Unit Price", "value": "123.12" }
]
},
{
"lot": "Lot 1",
"supplier": "Supplier 2",
"values": [
{ "column": "Unit Price", "value": "100.12" }
]
},
{
"lot": "Lot 2",
"supplier": "Supplier 1",
"values": [
{ "column": "Unit Price", "value": "234.56" }
]
},
{
"lot": "Lot 2",
"supplier": "Supplier 2",
"values": [
{ "column": "Unit Price", "value": "200.56" }
]
}
]
},
"primary_currency": "EUR",
"roles": [
{ "email": "administrator@example.buyer.com", "role_type": "ADMIN" },
{ "email": "editor@example.buyer.com", "role_type": "EDITOR" },
{ "email": "viewer@example.buyer.com", "role_type": "VIEWER" }
],
"tags": [
{ "name": "Category", "value": "Logistics" },
{ "name": "Project", "value": "PROJECT_123" }
],
"settings": { "is_test": true }
}
Create a Sourcing RFQ Event with a custom schedule
The example below creates a minimal bid-sheet, however we provide a custom schedule under the schedule
key of the request payload.
Three bidding rounds are added to the event, with the start and end times specified.
The bidding rounds must be listed in the order they will run, invalid schedules will be rejected. The final round in the example below shows adding an unscheduled round, where there is no start and end time. All rounds may be added in this fashion if required, and the schedule can be configured in Sourcing Optimizer at a later time.
If no schedule is added Sourcing Optimizer will automatically add a single round, start the event immediately when it is published, and set it to close after 7 days. If no start date is provided for the first round, or if it is set in the past, Sourcing Optimizer will start the event immediately when it is published.
Optional notifications may be added to any scheduled round. These are used to remind or prompt suppliers during the round lifecycle. Each round can contain one or more notifications, configured either relative to the round start or end time, or using an absolute delay. The supported reminder_type values are:
PENDING_INVITE
– remind bidders who have not accepted the inviteBID_NOT_SUBMITTED
– remind bidders who have not bidBID_ACTIVITY_REPORT
– update team members with a bidder activity report
Notifications use either:
notify_after_seconds
- a delay in seconds from the event start, orrelative_config
withdelta_seconds
andrelative_to
- for fine-grained control relative to the round's start or end
Notifications are optional; if omitted, no reminders will be sent.
Scheduling of Auction type events is discussed below in Create a Sourcing Auction Event with a custom schedule.
Note also that the timezone has been set here as Europe/Dublin
. This affects the round schedule time zone shown in Sourcing Optimizer and to
suppliers when bidding. If this is not provided, the default organisation timezone will be used.
The starts
and ends
values are expected in ISO8601 timestamp format, and are timezone-aware. The first round
is created with UTC timestamps, and the second is UTC-0500 (US East). This does not affect the timezone displayed in Sourcing Optimizer,
but can be used for consistency if your application is already working in a particular timezone.
{
"name": "Basic event with scheduling",
"description": "An example event using scheduled bidding rounds",
"timezone": "Europe/Dublin",
"schedule": [
{
"starts": "2030-01-01T17:00:00Z",
"ends": "2030-01-30T17:00:00Z",
"notifications": [
{
"reminder_type": "PENDING_INVITE",
"notify_after_seconds": 86400
}
]
},
{
"starts": "2030-02-01T09:00:00-0500",
"ends": "2030-02-07T17:00:00-0500"
},
{
"starts": null,
"ends": null
}
],
"bid_sheet": {
"column_roles": { "lot_identifier": "Lot Name" },
"columns": [
{
"name": "Lot Name",
"column_type": "INPUT",
"input_by": "BUYER_INPUT",
"input_type": "TEXT"
},
{
"name": "Unit Price",
"column_type": "INPUT",
"input_by": "SUPPLIER_INPUT",
"input_type": "CURRENCY",
"precision": 2
}
],
"lots": [
{
"name": "Lot 1",
"values": [
{ "column": "Lot Name", "value": "Lot 1" }
]
},
{
"name": "Lot 2",
"values": [
{ "column": "Lot Name", "value": "Lot 2" }
]
}
]
},
"primary_cost_calculation": "Unit Price",
"settings": { "is_test": true }
}
Create a Sourcing Auction Event with a custom schedule
The below example creates a minimal bid-sheet for an auction event type with custom schedule in the schedule
key of the request.
The approach is similar to the RFQ example above, however we only support
a single schedule entry for "auction" event types. The default bidding extension rule of 3 minutes will apply.
As with RFQ events, the input times are timezone-aware, and if no schedule is provided, Sourcing Optimizer will automatically start the event immediately on publish and set it to close after 1 hour.
{
"name": "Basic auction event with scheduling",
"event_type": "AUCTION",
"schedule": [
{
"starts": "2030-01-01T09:00:00Z",
"ends": "2030-01-01T12:00:00Z"
}
],
"bid_sheet": {
"column_roles": { "lot_identifier": "Lot Name" },
"columns": [
{
"name": "Lot Name",
"column_type": "INPUT",
"input_by": "BUYER_INPUT",
"input_type": "TEXT"
},
{
"name": "Unit Price",
"column_type": "INPUT",
"input_by": "SUPPLIER_INPUT",
"input_type": "CURRENCY",
"precision": 2
}
],
"lots": [
{
"name": "Lot 1",
"values": [
{ "column": "Lot Name", "value": "Lot 1" }
]
},
{
"name": "Lot 2",
"values": [
{ "column": "Lot Name", "value": "Lot 2" }
]
}
]
},
"primary_cost_calculation": "Unit Price",
"settings": { "is_test": true }
}
Create a Sourcing Event with multiple currencies
The below example creates a minimal bid-sheet for an event with a primary currency and more than one secondary currency.
The primary currency is set by the primary_currency
field, secondary currencies and their exchange rates are set by the
secondary_currencies
field. If the primary_currency
is not specified, it will revert to the organisation's default currency.
The Unit Price
column has been configured with a currency of GBP
.
{
"name": "Basic sourcing event with currencies",
"bid_sheet": {
"column_roles": { "lot_identifier": "Lot Name" },
"columns": [
{
"name": "Lot Name",
"column_type": "INPUT",
"input_by": "BUYER_INPUT",
"input_type": "TEXT"
},
{
"name": "Unit Price",
"column_type": "INPUT",
"input_by": "SUPPLIER_INPUT",
"input_type": "CURRENCY",
"currency_code": "GBP",
"precision": 2
}
],
"lots": [
{
"name": "Lot 1",
"values": [
{ "column": "Lot Name", "value": "Lot 1" }
]
},
{
"name": "Lot 2",
"values": [
{ "column": "Lot Name", "value": "Lot 2" }
]
}
]
},
"primary_cost_calculation": "Unit Price",
"primary_currency": "EUR",
"secondary_currencies": [
{
"code": "GBP",
"exchange_rate": "0.85"
},
{
"code": "USD",
"exchange_rate": "1.05"
}
],
"settings": { "is_test": true }
}
Create a Sourcing Event with floating currency columns
The example below creates a Sourcing Event which uses the floating currency column feature of Sourcing Optimizer, that allows event organizers to link multiple price components collected from a supplier to a single bid-sheet column defining the currency of pricing for this group of columns.
A floating currency bid-sheet column is defined by setting the column_type
to CURRENCY
. While floating currencies can
be set by the buyer or selected by the supplier (optionally from a pre-defined list), this example shows one that is selected by
the buyer for each lot. This can be seen in bid_sheet.lots
, where the currencies are provided as buyer input values for each
lot. The input_type
for floating currency columns does not need to be set as it can only be TEXT
.
If the input_by
was set to SUPPLIER_INPUT
, the suppliers would be able to select which currency they wished to use
for pricing information for the linked pricing components on each lot. The list of available currencies can be the full list of
currencies defined on the event, or can be limited using the options
field.
Note: values for currency columns must always be the ISO-4217 currency "code" text - e.g. "USD".
{
"name": "Basic sourcing event with floating currency column",
"bid_sheet": {
"column_roles": { "lot_identifier": "Lot Name" },
"columns": [
{
"name": "Lot Name",
"column_type": "INPUT",
"input_by": "BUYER_INPUT",
"input_type": "TEXT"
},
{
"name": "Currency Selection Column",
"column_type": "CURRENCY",
"input_by": "BUYER_INPUT"
},
{
"name": "Linked Input Column 1",
"column_type": "INPUT",
"input_by": "SUPPLIER_INPUT",
"input_type": "CURRENCY",
"currency_column": "Currency Selection Column"
},
{
"name": "Linked Input Column 2",
"column_type": "INPUT",
"input_by": "SUPPLIER_INPUT",
"input_type": "CURRENCY",
"currency_column": "Currency Selection Column"
}
],
"lots": [
{
"name": "Lot 1",
"values": [
{ "column": "Lot Name", "value": "Lot 1" },
{ "column": "Currency Selection Column", "value": "USD" }
]
},
{
"name": "Lot 2",
"values": [
{ "column": "Lot Name", "value": "Lot 1" },
{ "column": "Currency Selection Column", "value": "USD" }
]
}
]
},
"primary_cost_calculation": "Linked Input Column 1 + Linked Input Column 2",
"primary_currency": "EUR",
"secondary_currencies": [
{ "code": "GBP", "exchange_rate": "0.85" },
{ "code": "USD", "exchange_rate": "1.05" }
],
"settings": { "is_test": true }
}
Create a Sourcing Event with RFI
The example below creates a Sourcing Event which uses the RFI feature of Sourcing Optimizer, that allows event organizers to capture information about suppliers and the goods and services they provide.
One or more RFI questions may be added under the questions
key of the rfi
section. Each question has a mandatory text
field
which defines the question along with an optional description
field. The input_type
is used to define the type of input for
the question.
The question_type
attribute is used to define gating level for the suppliers to access event information and documents. The various gating levels are explained below:
- OPTIONAL: Suppliers are not required to provide a response to access the bid sheet
- MANDATORY: Suppliers are expected to provide a response but access the bid sheet without providing one
- GATING: Suppliers are required to provide a response to access the bid sheet
- EVENT_GATING: Suppliers are required to provide a response to access event information and documents
Note: The options
field for a question
is only available for input types SINGLE_CHOICE
and MULTIPLE_CHOICE
.
The field satisfies_gating
denotes whether the option will satisfy gating or not.
The value
field is the 'value' of the option for the question that will be displayed to the supplier
Note: It is possible to optionally supply a template_rfi_event_id
allowing RFI content from existing
Sourcing Events to act as a basis for new jobs. Any questions
submitted in the payload will be supplemented by
any already present in the template_rfi_event_id
.
{
"name": "Basic RFI",
"description": "A very simple example for RFI",
"timezone": "Europe/Dublin",
"bid_sheet": {
"column_roles": { "lot_identifier": "Lot Name" },
"columns": [
{
"name": "Lot Name",
"column_type": "INPUT",
"input_by": "BUYER_INPUT",
"input_type": "TEXT"
},
{
"name": "Quantity",
"column_type": "INPUT",
"input_by": "BUYER_INPUT",
"input_type": "NUMBER",
"precision": 0
},
{
"name": "Unit Price",
"column_type": "INPUT",
"input_by": "SUPPLIER_INPUT",
"input_type": "CURRENCY",
"precision": 2
}
],
"lots": [
{
"name": "Lot 1",
"values": [
{ "column": "Lot Name", "value": "Lot 1" },
{ "column": "Quantity", "value": "100" }
]
},
{
"name": "Lot 2",
"values": [
{ "column": "Lot Name", "value": "Lot 2" },
{ "column": "Quantity", "value": "200" }
]
}
]
},
"primary_cost_calculation": "Unit Price * Quantity",
"rfi": {
"questions": [
{
"text": "What is your company’s annual revenue?",
"description": "This is just to understand the size of your company",
"input_type": "NUMBER",
"question_type": "OPTIONAL"
},
{
"text": "What is your preferred currency for payment?",
"description": "This will help us understand your preferred currency for payment",
"input_type": "CURRENCY",
"question_type": "OPTIONAL"
},
{
"text": "When was you company established?",
"input_type": "DATE",
"question_type": "MANDATORY"
},
{
"text": "Are there any pending legal issues or complaints against your company? If yes, please explain.",
"description": "This will be reviewed strictly in order to maintain compliance",
"input_type": "TEXT",
"question_type": "GATING"
},
{
"text": "Please provide a signed copy of our Mutual Non Disclosure Agreement",
"description": "This is required for legal purposes",
"input_type": "FILE",
"question_type": "GATING"
},
{
"text": "Does your company agree to our Terms and Conditions?",
"description": "This means that you agree to the Terms and Conditions of our company",
"input_type": "SINGLE_CHOICE",
"question_type": "EVENT_GATING",
"options": [
{
"satisfies_gating": true,
"value": "Yes"
},
{
"satisfies_gating": false,
"value": "No"
}
]
},
{
"text": "What certifications are held by your company?",
"input_type": "MULTIPLE_CHOICE",
"question_type": "EVENT_GATING",
"options": [
{
"satisfies_gating": true,
"value": "ISO9001:5000"
},
{
"satisfies_gating": false,
"value": "ISO9001:6000"
},
{
"satisfies_gating": true,
"value": "ISO9001:7000"
},
{
"satisfies_gating": false,
"value": "ISO9001:8000"
}
]
}
]
},
"settings": { "is_test": true }
}
Create a more advanced RFI
The example below creates a Sourcing Event with a more involved RFI than the previous example, using more of the features
available in Sourcing Optimizer. Categories can be assigned to questions which can be used for grouping related
questions. For this, you need to first define the categories under categories
key under rfi
as seen below and then
one or more categories can be assigned to questions
. Also, a unique identifier can be used identify a question which can be
specified under the identifier
key. The example below depicts various questions being categorized and assigned unique
identifiers.
Note: identifier
for the question will be displayed to the bidder and included in error messages.
{
"name": "Advanced RFI",
"description": "An advanced example for RFI",
"timezone": "Europe/Dublin",
"bid_sheet": {
"column_roles": { "lot_identifier": "Lot Name" },
"columns": [
{
"name": "Lot Name",
"column_type": "INPUT",
"input_by": "BUYER_INPUT",
"input_type": "TEXT"
},
{
"name": "Quantity",
"column_type": "INPUT",
"input_by": "BUYER_INPUT",
"input_type": "NUMBER",
"precision": 0
},
{
"name": "Unit Price",
"column_type": "INPUT",
"input_by": "SUPPLIER_INPUT",
"input_type": "CURRENCY",
"precision": 2
}
],
"lots": [
{
"name": "Lot 1",
"values": [
{ "column": "Lot Name", "value": "Lot 1" },
{ "column": "Quantity", "value": "100" }
]
},
{
"name": "Lot 2",
"values": [
{ "column": "Lot Name", "value": "Lot 2" },
{ "column": "Quantity", "value": "200" }
]
}
]
},
"primary_cost_calculation": "Unit Price * Quantity",
"rfi": {
"categories": [
{
"name": "Legal",
"description": "Needed for legal purposes"
},
{
"name": "General",
"description": "General Information"
}
],
"questions": [
{
"text": "What is your company’s annual revenue?",
"description": "This is just to understand the size of your company",
"input_type": "NUMBER",
"question_type": "OPTIONAL",
"categories" : ["General"],
"identifier": "REVENUE"
},
{
"text": "What is your preferred currency for payment?",
"description": "This will help us understand your preferred currency for payment",
"input_type": "CURRENCY",
"question_type": "OPTIONAL",
"categories" : ["General"],
"identifier": "CURRENCY"
},
{
"text": "When was you company established?",
"input_type": "DATE",
"question_type": "MANDATORY",
"categories" : ["General"],
"identifier": "ESTABLISHED"
},
{
"text": "Are there any pending legal issues or complaints against your company? If yes, please explain.",
"description": "This will be reviewed strictly in order to maintain compliance",
"input_type": "TEXT",
"question_type": "GATING",
"categories" : ["General","Legal"],
"identifier": "COMPLAINTS"
},
{
"text": "Please provide a signed copy of our Mutual Non Disclosure Agreement(NDA)",
"description": "This is required for legal purposes",
"input_type": "FILE",
"question_type": "GATING",
"categories" : ["General","Legal"],
"identifier": "NDA"
},
{
"text": "Does your company agree to our Terms and Conditions?",
"description": "This means that you agree to the Terms and Conditions of our company",
"input_type": "SINGLE_CHOICE",
"question_type": "EVENT_GATING",
"categories" : ["General","LEGAL"],
"identifier": "T&C",
"options": [
{
"satisfies_gating": true,
"value": "Yes"
},
{
"satisfies_gating": false,
"value": "No"
}
]
},
{
"text": "What certifications are held by your company?",
"input_type": "MULTIPLE_CHOICE",
"question_type": "EVENT_GATING",
"categories" : ["General"],
"identifier": "CERTIFICATIONS",
"options": [
{
"satisfies_gating": true,
"value": "ISO9001:5000"
},
{
"satisfies_gating": false,
"value": "ISO9001:6000"
},
{
"satisfies_gating": true,
"value": "ISO9001:7000"
},
{
"satisfies_gating": false,
"value": "ISO9001:8000"
}
]
}
]
},
"settings": { "is_test": true }
}
Auto-provision new users
The example below creates a Sourcing Event and also creates and associates the users which do not yet exist. It does this by
auto-provisioning the user accounts with the specified details. It is possible to do this for both the created_by
user:
{
"name": "Auto-provision created_by",
"created_by": {
"email": "john.doe@example.com",
"full_name": "John Doe"
},
"bid_sheet": {
"column_roles": {
"lot_identifier": "Lot Name"
},
"columns": [
{
"name": "Lot Name",
"column_type": "INPUT",
"input_by": "BUYER_INPUT",
"input_type": "TEXT"
},
{
"name": "Unit Price",
"column_type": "INPUT",
"input_by": "SUPPLIER_INPUT",
"input_type": "CURRENCY",
"precision": 2
}
],
"lots": [
{
"name": "Lot 1",
"values": [
{
"column": "Lot Name",
"value": "Lot 1"
},
{
"column": "Quantity",
"value": "100"
}
]
},
{
"name": "Lot 2",
"values": [
{
"column": "Lot Name",
"value": "Lot 2"
},
{
"column": "Quantity",
"value": "200"
}
]
}
]
},
"primary_cost_calculation": "Unit Price",
"settings": {
"is_test": true
}
}
as well as any user specified in the roles
:
{
"name": "Auto-provision new users",
"bid_sheet": {
"column_roles": { "lot_identifier": "Lot Name" },
"columns": [
{
"name": "Lot Name",
"column_type": "INPUT",
"input_by": "BUYER_INPUT",
"input_type": "TEXT"
},
{
"name": "Unit Price",
"column_type": "INPUT",
"input_by": "SUPPLIER_INPUT",
"input_type": "CURRENCY",
"precision": 2
}
],
"lots": [
{
"name": "Lot 1",
"values": [
{ "column": "Lot Name", "value": "Lot 1" },
{ "column": "Quantity", "value": "100" }
]
},
{
"name": "Lot 2",
"values": [
{ "column": "Lot Name", "value": "Lot 2" },
{ "column": "Quantity", "value": "200" }
]
}
]
},
"primary_cost_calculation": "Unit Price",
"roles": [
{ "email": "john.doe@example.buyer.com", "full_name": "John Doe", "role_type": "EDITOR" },
{ "email": "jane.doe@example.buyer.com", "full_name": "Jane Doe", "role_type": "VIEWER" }
],
"settings": { "is_test": true }
}
Note: That for a successful user auto-provision, it is necessary to supply both an email
and a full_name
at a minimum. If your
organisation makes use of SSO for authentication, an sso_id
for each user may also be required:
{
"name": "Auto-provision with SSO",
"created_by": {
"email": "john.doe@example.com",
"full_name": "John Doe",
"sso_id": "john_doe"
},
"bid_sheet": {
"column_roles": {
"lot_identifier": "Lot Name"
},
"columns": [
{
"name": "Lot Name",
"column_type": "INPUT",
"input_by": "BUYER_INPUT",
"input_type": "TEXT"
},
{
"name": "Unit Price",
"column_type": "INPUT",
"input_by": "SUPPLIER_INPUT",
"input_type": "CURRENCY",
"precision": 2
}
],
"lots": [
{
"name": "Lot 1",
"values": [
{
"column": "Lot Name",
"value": "Lot 1"
},
{
"column": "Quantity",
"value": "100"
}
]
},
{
"name": "Lot 2",
"values": [
{
"column": "Lot Name",
"value": "Lot 2"
},
{
"column": "Quantity",
"value": "200"
}
]
}
]
},
"primary_cost_calculation": "Unit Price",
"roles": [
{
"email": "john.doe@example.buyer.com",
"full_name": "John Doe",
"sso_id": "john_doe",
"role_type": "EDITOR"
},
{
"email": "jane.doe@example.buyer.com",
"full_name": "Jane Doe",
"sso_id": "jane_doe",
"role_type": "VIEWER"
}
],
"settings": {
"is_test": true
}
}