Add Routing Group Sources
put
https://api.flxpoint.com/routing-groups/{id}/sourcesUse this when you want to replace routing data through the API.
🔑 X-API-TOKEN⏱ 2 req/sToken: Account · Source · Channel
This page explains the endpoint. To send a live test request, use the interactive tester in Stoplight or your own Postman / HTTP client.
Allows you to PUT `RoutingGroupSource`s into a `RoutingGroup`.
If the `sourceId` provided in the `PutRoutingGroupSource` already exists for a given `RoutingGroup`, that PUT entry will update the contents of that matching `RoutingGroupSource`.
Otherwise, this PUT entry will create a new `RoutingGroupSource` for any new `sourceId`s provided.
This requires Account-level Token privileges.
Request
Body
application/jsonarray[PutRoutingGroupSource]
array of routing group sources
sourceIdintegerThe `Source` ID for this `RoutingGroupSource`
eligiblebooleanIf this is set to `true` the Source will be eligible for receiving POs/FRs (meaning that source will be considered during the Order Routing process)
If this is set to `false` OR a Source does not have an RoutingGroupSource entry for this routing group - the source will not be eligible for receiving POs/FRs.
Default `true`.
default
truepriorityintegerWhen using the `Preferred Sources` `RoutingPriority` - this determines the "most preferred" Source.
`1` is the **most** important / preferred
`999` is the **least** important / preferred
default
999shippingAddressIdinteger(Optional) This allows you to overwrite the Shipping Address for any POs/FRs that are routing through this RoutingGroupSource.
Scenario : Perhaps an Order needs to be routed through your warehouse before it reaches the customer. You can create a RoutingGroup dedicated to this and use this shippingAddressId on all RoutingGroupSource entries to ship the Order to your warehouse first.
suppressTrackingbooleanIf you are leveraging the shippingAddressId, this flag will set the PurchaseOrder flag suppressTracking to true when it's generated through this RoutingGroupSource.
This will ensure that any Shipments that are added will not be synced back to the Channel.
The primary use case behind this is in conjunction with the shippingAddressId override : "don't send a tracking # to the end customer when it's for my warehouse"
default
falseExample request
put
/routing-groups/{id}/sourcescurl -X PUT "https://api.flxpoint.com/routing-groups/{id}/sources" \
-H "Accept: application/json" \
-H "X-API-TOKEN: YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '[
{
"sourceId": 0,
"eligible": true,
"priority": 0,
"shippingAddressId": 0,
"suppressTracking": true
}
]'Example body · application/json
[
{
"sourceId": 0,
"eligible": true,
"priority": 0,
"shippingAddressId": 0,
"suppressTracking": true
}
]Responses
200OKapplication/json
array[RoutingGroupSource]
array of routing group sources
idintegerThe `RoutingGroupSource` ID
routingGroupIdintegerThe `RoutingGroup` ID
sourceIdintegerThe `Source` ID
eligiblebooleanIf this is set to `true` the Source will be eligible for receiving POs/FRs (meaning that source will be considered during the Order Routing process)
If this is set to `false` OR a Source does not have an `RoutingGroupSource` entry for this routing group - the source will not be eligible for receiving POs/FRs.
priorityintegerWhen using the `Preferred Sources` `RoutingPriority` - this determines the "most preferred" Source.
`1` is the **most** important / preferred
`999` is the **least** important / preferred
default
999shippingAddressIdinteger(Optional) This allows you to overwrite the Shipping Address for any POs/FRs that are routing through this `RoutingGroupSource`.
Scenario : Perhaps an Order needs to be routed through your warehouse before it reaches the customer. You can create a `RoutingGroup` dedicated to this and use this `shippingAddressId` on all `RoutingGroupSource` entries to ship the Order to your warehouse first.
suppressTrackingbooleanIf you are leveraging the `shippingAddressId`, this flag will set the `PurchaseOrder` flag `suppressTracking` to true when it's generated through this `RoutingGroupSource`.
This will ensure that any `Shipment`s that are added will not be synced back to the Channel.
The primary use case behind this is in conjunction with the `shippingAddressId` override : "don't send a tracking # to the end customer when it's for my warehouse"
sourceobjectThis object represents the basic properties of a Source. To learn more about sources, visit https://docs.flxpoint.com/flxpoint/sources.
Note : Some of these properties (i.e. "address") may not be populated if the Source is being returned as a supporting property (i.e. the "/jobs" endpoint)
idintegerrequirednamestringdescriptionstringinsertedAtstring (date-time)addressIdintegerrateShoppingbooleanThe setting that determines if this Source attempts to use Rate Shopping (for all requirements of Rate Shopping, see https://docs.flxpoint.com/flxpoint/rate-shopping)
releaseCommittedStockOnShipmentAddedbooleandeprecated**(This setting is deprecated, please reach out to our team before using)** If `true`, committed stock will be released as soon as Shipments are added. If `false`, committed stock will be released after Shipments are added AND Inventory quantity changes.
releaseCommittedStockOnQuantityUpdatebooleandeprecated**(This setting is deprecated, please reach out to our team before using)** If `true`, committed stock will be released as soon as inventory variant quantity is changed. If `false`, committed stock will be released after Shipments are added AND Inventory quantity changes.
vendorIdintegerThe `Vendor` ID associated to a Source
typeobjectidintegernamestringallowed
Data SourceInternal WarehouseExternal WarehouseVendor Warehousehandlestringallowed
data_sourceinternal_warehouseexternal_warehousevendor_warehousecurrencyobjectidintegerrequiredcodestringrequirednamestringsymbolstringunicodeDecimalstringaddressobjectidintegernamestringField created real-time by concatenating "firstName" and "lastName"
addressLine1stringaddressLine2stringcitystringstatestringcountrystringstateCodestringcountryCodestringpostalstringPostal / Zip Code of address
emailstringphonestringFree form string field, format isn't enforced
companyNamestringfirstNamestringlastNamestringredactedbooleanRepresents if the address information was related to an Order with a PII (Personably Identifiable Information) retention policy attached. If the Order exceeds the PII retention period, this address will have information redacted.
hashstringRepresents a unique hash of this address.
commitStockbooleanWhen `true` purchase orders generated to this source will automatically have stock committed for the relevant inventory variants.
allowBackordersbooleanIt will allow the variants to be fulfilled/routed to during PO generation regardless of whether or not it is in stock.
vendorobjectA `Vendor` represents a fulfillment partner you interact with.
A `Vendor` can have multiple `Source`s associated to it. One way to think of "Vendors" and "Sources" is a Vendor with multiple fulfillment centers (i.e. East & West Warehouses are 2 Sources associated to a single Vendor).
Vendors can have a "Vendor Portal" enabled to allow the Vendor to perform manual interactions (like updating inventory or shipping POs sent to them).
For more information, visit our documentation : https://docs.flxpoint.com/flxpoint/vendor-management
idintegerThe ID of the Vendor
createdByUserIdintegerWhen a Vendor is created in-app, a `User` ID is tracked.
createdAtstring (date-time)Timestamp of when the Vendor was created.
deletedAtstring (date-time)Timestamp of when the Vendor was deleted/archived.
namestringdescriptionstringportalEnabledbooleanThis flag determines if the Vendor can access a Vendor Portal to manually interact with Inventory/PO flows.
If this flag is `true` - there is still a requirement to ensure you have a portal configured.
To configure a Vendor Portal, you have to setup a subdomain such as : `example.vendors.flxpoint.com`
You can either do this via the UI (feature launching in late 2021) or via a ticket to our Support Team.
containsFirearmsWorkflowEventIdintegercontainsFirearmsbooleanshippingCostWorkflowEventIdintegerdropshipFeeWorkflowEventIdintegerintegrationsarray[any]settingsarray[SourceSetting]idintegerrequiredThe `SourceSetting` ID
settingobjectrequiredidintegerthe `Setting` ID
namestringrequiredA friendly name or title for the Setting
handlestringrequiredThe `handle` represents a quick human-readable version of the `id` to understand what a setting relates to.
Some example handles can be found below. To retrieve a complete list of setting handles, retrieve back a list of Settings and leverage the retrieved handles.
- `source.send_po_from_vendor_portal`
- `source.cancel_unacknowledged_items`
- `source.upload_inventory_from_vendor_portal`
- `source.upload_shipment_from_vendor_portal`
- `source.upload_invoice_from_vendor_portal`
typestringrequiredThe type of setting. This determines how you may present the selection or setting to a user.
- `string` = a short text input
- `text` = a long text input
- `number` = a numeric input
- `img` = an image link input
- `email` = a valid email address input
- `boolean` = a true/false toggle choice
- `select` = some form of selection, select settings means the `options` field must be populated with possible selections
allowed
imgbooleantime_interval_thresholdemailstringtextselectnumberradiomultijsonvalueTypestringrequiredThe type of value the setting is expecting.
- `integer` = a whole number value
- `decimal` = a decimal number value
- `string` = a short text value
- `boolean` = a true/false value
allowed
integerbooleantime_interval_thresholdstringselectemaildecimalnumbermultijsonplaceholderstringAn optional "placeholder" that will be used for text or numeric based inputs. Note : a placeholder is different than "defaultValue". Placeholders simply suggest a value.
Often times placeholders might be used to suggest a value on an input that we cannot default for other reasons.
defaultValuestringThe `defaultValue` represents our recommended selection for a given Setting.
For example, the "Protect Against Duplicate Orders" setting has a `defaultValue : true` to promote all new users to leverage this functionality by default.
descriptionstringDescription of the setting - this will appear below the setting name in the UI when a user is configuring it.
optionsstringA field expecting a `JSON Array` in the format : `[{ "[value]" : "[descriptor]"}]` where :
- `[value]` = the value of the selection that will be stored in the `value` field when saved
- `[descriptor]` = a way to describe the selection to users so they know what they are choosing.
An example for this is :
- `payment_provider` setting
- `options` : `{"1" :"Stripe" ,"2" : "Square"}`
`Stripe` and `Square` appear in a dropdown. When a user chooses `Stripe` we store `1` in the `value` field.
parentSettingIdintegerIf the setting is associated to another setting, this field may be populated.
For example, you may choose to `Override PO Cancellations` notifications to go to a separate email address. To do this you may configure the `notification.purchase_order_canceled.override_email` setting. This override setting has a `parentSettingId` to the standard email notification `notification.purchase_order_canceled`
This field is primarily used for UI purposes to nest additional settings below a parent setting.
categoryobjectidintegerhandlestringallowed
supplier.settingsdealer.invoice.settingsaccount.settingsnotificationsaccount.b2bchannel.settingsfeature_flagsdealer.channel.settingssource.settingsvendor.settingsnamestringsourceIdintegerId of channel this channel setting belong to.
valuestringrequiredThe setting value that is configured
insertedAtstring (date-time)updatedAtstring (date-time)autoCreateListingsWorkflowEventIdintegerautoRebuildEnabledOnstring (date-time)autoRebuildConfirmedByUserstringautoListEnabledOnstring (date-time)autoListConfirmedByUserstringautoCreateListingsForAllInventoriesbooleanautoCreateListingsForSpecificInventoriesbooleanautoGenerateInvoiceWorkflowIdintegershippingAddressobjectidintegernamestringField created real-time by concatenating "firstName" and "lastName"
addressLine1stringaddressLine2stringcitystringstatestringcountrystringstateCodestringcountryCodestringpostalstringPostal / Zip Code of address
emailstringphonestringFree form string field, format isn't enforced
companyNamestringfirstNamestringlastNamestringredactedbooleanRepresents if the address information was related to an Order with a PII (Personably Identifiable Information) retention policy attached. If the Order exceeds the PII retention period, this address will have information redacted.
hashstringRepresents a unique hash of this address.
Example response
[
{
"id": 0,
"routingGroupId": 0,
"sourceId": 0,
"eligible": true,
"priority": 0,
"shippingAddressId": 0,
"suppressTracking": true,
"source": {
"id": 0,
"name": "string",
"description": "string",
"insertedAt": "2026-04-20T00:00:00Z",
"addressId": 0,
"rateShopping": true,
"releaseCommittedStockOnShipmentAdded": true,
"releaseCommittedStockOnQuantityUpdate": true,
"vendorId": 0,
"type": {
"id": 0,
"name": "Data Source",
"handle": "data_source"
},
"currency": {
"id": 0,
"code": "string",
"name": "string",
"symbol": "string",
"unicodeDecimal": "string"
},
"address": {
"id": 0,
"name": "Joe Smith",
"addressLine1": "120 1st Lane",
"addressLine2": "Suite 123",
"city": "Jacksonville",
"state": "Florida",
"country": "United States",
"stateCode": "FL",
"countryCode": "US",
"postal": "12345",
"email": "person@example.com",
"phone": "1-555-123-4567",
"companyName": "string",
"firstName": "Joe",
"lastName": "Smith",
"redacted": true,
"hash": "string"
},
"commitStock": true,
"allowBackorders": true,
"vendor": {
"id": 0,
"createdByUserId": 0,
"createdAt": "2026-04-20T00:00:00Z",
"deletedAt": "2026-04-20T00:00:00Z",
"name": "string",
"description": "string",
"portalEnabled": true
},
"containsFirearmsWorkflowEventId": 0,
"containsFirearms": true,
"shippingCostWorkflowEventId": 0,
"dropshipFeeWorkflowEventId": 0,
"integrations": [
null
],
"settings": [
{
"id": null,
"setting": null,
"sourceId": null,
"value": null,
"insertedAt": null,
"updatedAt": null
}
],
"autoCreateListingsWorkflowEventId": 0,
"autoRebuildEnabledOn": "2026-04-20T00:00:00Z",
"autoRebuildConfirmedByUser": "string",
"autoListEnabledOn": "2026-04-20T00:00:00Z",
"autoListConfirmedByUser": "string",
"autoCreateListingsForAllInventories": true,
"autoCreateListingsForSpecificInventories": true,
"autoGenerateInvoiceWorkflowId": 0
},
"shippingAddress": {
"id": 0,
"name": "Joe Smith",
"addressLine1": "120 1st Lane",
"addressLine2": "Suite 123",
"city": "Jacksonville",
"state": "Florida",
"country": "United States",
"stateCode": "FL",
"countryCode": "US",
"postal": "12345",
"email": "person@example.com",
"phone": "1-555-123-4567",
"companyName": "string",
"firstName": "Joe",
"lastName": "Smith",
"redacted": true,
"hash": "string"
}
}
]400Bad Request
No schema documented for this status.
401Unauthorized
No schema documented for this status.
OpenAPI fragment
{
"put": {
"summary": "Add Routing Group Sources",
"description": "Allows you to PUT `RoutingGroupSource`s into a `RoutingGroup`. \n\nIf the `sourceId` provided in the `PutRoutingGroupSource` already exists for a given `RoutingGroup`, that PUT entry will update the contents of that matching `RoutingGroupSource`. \n\nOtherwise, this PUT entry will create a new `RoutingGroupSource` for any new `sourceId`s provided. \n\nThis requires Account-level Token privileges. ",
"parameters": [],
"requestBody": {
"description": "",
"content": {
"application/json": {
"schema": {
"type": "array",
"description": "array of routing group sources",
"items": {
"$ref": "#/components/schemas/PutRoutingGroupSource"
}
},
"examples": {
"example-1": {
"value": [
{
"sourceId": 0,
"eligible": true,
"priority": 999,
"shippingAddressId": 0,
"suppressTracking": true
}
]
}
}
}
}
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "array",
"description": "array of routing group sources",
"items": {
"$ref": "#/components/schemas/RoutingGroupSource"
}
},
"examples": {
"example-1": {
"value": [
{
"id": 0,
"routingGroupId": 0,
"sourceId": 0,
"eligible": true,
"shippingAddressId": 0,
"suppressTracking": true
}
]
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
}
}
}
}Ready to run it? Send the curl from your terminal or Postman, or use the interactive tester in Stoplight.Open in Stoplight