Web Services Test site
This guide will go over conceptually all 19 of the web services in the current fcB2B specification, and then will describe how to interact each of them. All endpoints mentioned in this guide are relative to the base site at https://fcb2b.evedi.io. At the current time we only support requests with the parameters passed in the query string, but support for xml requests will be added in the future. Regardless of the method used for the requests all responses will be in xml. This guide does not go over the server side implementation of these services.
fcB2B would like to thank Ethervision for the creation and support of this test environment.
The Signature and Examples can be found in a zip file here.
Security
All requests sent to the Ethervision implementation of the fcB2B web services require an api key and must be signed with our signing algorithm. While the FcB2B web services specifications allow for some services to be accessed anonymously, we chose to not implement any anonymous access to reduce the surface area for exploits. A sample implementation of the signing algorithm in Python is provided in the zip file referenced above, along with the development credentials that can be used to test any of the available services. All services are also required to be protected with https, if http is used then an InvalidTransport error will be returned.
Service Discovery
Example URL – https://fcb2b.evedi.io/services?TimeStamp=2024-12-21T10:57:23.141466&apiKey=BHm06vRD7l7HDFFE4bfbp7&signature=904523d2d5432cbf32ce95dcc799efaa3c550a1a183b9320c83e10d827ce44ff
Service Discovery is implemented at the /services endpoint. With no modifications, dosign.py will generate a signed link to this service. Service Discovery gives some basic information about every web service currently supported by the producer. The only request parameters needed for this service are TimeStamp and apiKey, which are also required for every other service in this guide. All other request parameters are ignored. The output of this service will only change if the request is not approved by the server or if the FcB2B specification changes. The current output of this service can be found in the zip file referenced above.
Stock Check
Example URL – https://fcb2b.evedi.io/stockcheck?ClientIdentifier=100059&RequestedQuantity=10&SupplierItemSKU=VV01701002&TimeStamp=2024-12-21T07:53:23.186983&apiKey=BHm06vRD7l7HDFFE4bfbp7&signature=b7d02ff5cc9efca10f6d8e1e425695919532696d83e53a421b3cf624d6466a66
The Stock Check service is implemented at the /stockcheck endpoint and is described by Service Discovery as a basic unconstrained single item request. This service returns the first availability of the requested item, and requires the ClientIdentifier and the SupplierItemSKU parameters on top of the universally required parameters. The response will always include the requested SupplierItemSKU, the available quantity, and the unit of measure of the available quantity. A producer may optionally report the available roll numbers(for roll products), whether the product is a roll or a cut, the available FOB point, the shade or dye lot, and if the item will no longer be available in the future. If the item is not available, the producer may either respond with a SKUNotFound error, or with a future available date and future available quantity for the item.
Inventory Inquiry
Example URL – https://fcb2b.evedi.io/inventoryinquiry?ClientIdentifier=100059&SupplierItemSKU=VV01701002&TimeStamp=2024-12-21T07:41:44.464906&apiKey=BHm06vRD7l7HDFFE4bfbp7&signature=57674e86611a11d48c007421a2cc443d0db51347c0e44620e27ee23afffceb39
The Inventory Inquiry is implemented at /inventoryinquiry and is described by the discovery service as a basic unconstrained multiple item request. It is essentially the same as the Stock Check service, except it can report multiple availabilities of the same item.
Related Items
Example URL – https://fcb2b.evedi.io/relateditems?ClientIdentifier=100059&SupplierItemSKU=VV01701002&TimeStamp=2024-12-21T06:22:42.458047&apiKey=BHm06vRD7l7HDFFE4bfbp7&signature=1f0c4ebdfeecfaecfa90ac4f43b9ae25805d0d80490c2ee3dfa7694429eb6e8c
The Related Items Service is accessible from the /relateditems endpoint and it requires only the ClientIdentifier and SupplierItemSKU as additional parameters. When this service is called, the producer provides a list of SKUs related to the provided SupplierItemSKU along with several pieces of information about the SKU.
Solution Check
Example URL – https://fcb2b.evedi.io/solutioncheck?ClientIdentifier=100059&ReqQuantityMinimum=5&ReqUnitOfMeasure=BX&RequestedQuantity=5&SupplierItemSKU=VV01701002&TimeStamp=2025-01-08T01:28:52.958034&apiKey=BHm06vRD7l7HDFFE4bfbp7&signature=ccd1a790cc2bf7b49acefe50d5341ba5a51e0b18345fafca38b233a98e5f7388
The Solution Check service operates at the /solutioncheck endpoint and is described by the discovery service as a constrained single item request. It serves mostly the same function as Stock Check except it supports requests with constraining factors, such as requesting a certain shade/dye lot or a specific minimum quantity. To request this service, at least the ClientIdentifier, SupplierItemSKU, RequestedQuantity, ReqQuantityMinimum, and ReqUnitOfMeasure parameters must be provided. Optionally, the request may also contain the latest date the reported products may become available(ReqNeedByDate), a specific FOB point(ReqFOBPoint), if a certain shade/dye lot is needed(ReqShadeOrDyeLot), if the items must all be from the same shade/dye lot(ReqSameShadeOrDyeLot), and if the item is sold as a roll or a cut(ReqRollOrCut). The output of this service is in the same format as the Stock Check service.
Solution Inquiry
Example URL – https://fcb2b.evedi.io/solutioninquiry?ClientIdentifier=100059&ReqQuantityMinimum=5&ReqUnitOfMeasure=BX&RequestedQuantity=5&SupplierItemSKU=VV01701002&TimeStamp=2025-01-08T01:33:06.110760&apiKey=BHm06vRD7l7HDFFE4bfbp7&signature=7ada653b406fd9ac641d68a53721c5bf7acaa70f328bba8a84b8fd829784d93a
Solution Inquiry is implemented at /solutioninquiry. This service is the same as Solution Check except it can report multiple availabilities of the same item.
Price Inquiry
Example URL – https://fcb2b.evedi.io/priceinquiry?ClientIdentifier=cl0000002&SupplierItemSKU=VV01701002&TimeStamp=2024-12-15T17:54:21.615026&apiKey=BHm06vRD7l7HDFFE4bfbp7&signature=50e717056dee7289ba1726abedd3e765379b813a89ec784f658ec7258c4ae86a
The Price Inquiry service is located at the /priceinquiry endpoint and is described by the discovery service as a request for an item’s price with optional constraining parameters. Requesting this service requires only the ClientIdentifier and SupplierItemSKU on top of the universal parameters. Currently the output of Ethervision’s implementation of this service is the same as /solutioninquiry, but it also gives pricing information. In the future this service will also support bulk and promotional pricing, along with job quote references.
Document Service
Example URL – https://fcb2b.evedi.io/documentservice?ClientIdentifier=100059&SupplierItemSKU=5E65800110&TimeStamp=2024-10-25T13:16:56.401958&apiKey=BHm06vRD7l7HDFFE4bfbp7&signature=52877a41f17b880073ad006bcee47bbbb99e7ca4a5d4e00e3b6573f3cb99f502
The Document Service is implemented at the /documentservice endpoint. This service provides documents related to a given sku, such as specification sheets, images and manuals. For parameters, this service requires ClientIdentifier and SupplierItemSKU.
Price Catalog Services
Example URL – https://fcb2b.evedi.io/getpricecatalogtypes?ClientIdentifier=100059&TimeStamp=2024-11-01T07:48:25.124055&apiKey=BHm06vRD7l7HDFFE4bfbp7&signature=3315fa564efc0859e2790c0c2f078007f37e21127b4ae9408d1c63b2f6a5ae5a
Example URL – https://fcb2b.evedi.io/pricecatalogrequest?CatalogIdentifier=FULL&ClientIdentifier=cl0000002&TimeStamp=2024-12-15T15:18:57.916553&apiKey=BHm06vRD7l7HDFFE4bfbp7&signature=76b34283d294d78bfdd41e00dcc91a7e57c86514f273557011c1db506c8798f0
The Price Catalog Services have two endpoints, those being /getpricecatalogtypes and /pricecatalogrequest. Before sending a request to the /pricecatalogrequest endpoint, the supported price catalog types must be obtained from the /getpricecatalogtypes endpoint. /getpricecatalogtypes only requires ClientIdentifier and TimeStamp as parameters and will return a list of catalog types that can be requested from the producer. An example response can be found in the zip file referenced above. All producers must support a catalog type of FULL, but they may support additional types of catalogs and subcatalogs. After receiving the supported catalogs from /getpricecatalogtypes, /pricecatalogrequest can be called. /pricecatalogrequest requires ClientIdentifier, TimeStamp, and CatalogIdentifier as parameters. If the producer supports subcatalogs, then it also supports the optional parameter of SubCatalogIdentifier. The Price Catalog Services do not actually return the catalog itself, however they request the producer to generate the catalog. If the producer can generate the catalog, /pricecatalogrequest will respond with that information. The price catalog will be provided to the requester outside of the web services. An example response for /pricecatalogrequest can be found in the zip file referenced above.
Reserve Services
There are two reserve services, getreserves and createreserve and they are available at the /getreserves and /createreserve endpoints, respectively. Before going over these requests, please take note that the createreserve service can easily cause issues for the producer if the same request is mistakenly sent repeatedly or if used erroneously.
getreserves
Example URL – https://fcb2b.evedi.io/getreserves?ClientIdentifier=100059&TimeStamp=2024-12-15T09:25:08.097488&apiKey=BHm06vRD7l7HDFFE4bfbp7&signature=fcb870b5b9a754f0980a0d01376a8ab6ecc7c3337df91262ea83a3427fa47754
The getreserves service provides the consumer with a list of all currently active reserves that match the request parameters. The only required request parameter for this service other than the universal parameters is ClientIdentifier. The SupplierItemSKU and ReserveNumber parameters may be optionally provided to get a more constrained list of reserves. For every matching reserve the service must provide at least the ReserveNumber and a list of ReservationLines which describe the reserved items. Optionally, the service may also report CreationDate, ExpirationDate, and FOBPoint for each reserve. Every ReservationLine element minimally contains the LineNumber, SupplierItemSKU, Quantity, and UnitOfMeasure, and the element may optionally include the ShadeOrDyeLot, Price, PriceUnitOfMeasure, and Sidemarks. All optional response parameters are supported by Ethervision’s implementation.
createreserve
Example URL – https://fcb2b.evedi.io/createreserve?ClientIdentifier=cl0000002&Quantity=5&SameShadeOrDyeLot=false&SupplierItemSKU=VV01701002&TimeStamp=2024-12-15T10:26:18.205139&UnitOfMeasure=BX&apiKey=BHm06vRD7l7HDFFE4bfbp7&signature=7e5b025a4a447acc0af4c996d1c84f24aac3e69bb46611cc68cfec3b75283c2e
The createreserve service reserves specified quantities of particular SKUs in a producer’s inventory and subtracts those quantities from the available quantities reported by other services. Since only parameters sent in the query string are currently supported, only one SupplierItemSKU can be reserved at a time. It will be possible to reserve multiple SupplierItemSKUs at a time when support is added for XML requests. Calling this service minimally requires the ClientIdentifier, SupplierItemSKU, Quantity, and UnitOfMeasure as parameters. The parameters Minimum, Maximum, FOBPoint, RollNumber, RequestedPrice, RequestedPriceUnitOfMeasure, ShadeOrDyeLot, SameShadeOrDyeLot, RollOrCut, and Sidemark are also supported to further constrain the reservation. If their is not enough inventory to satisfy the reservation, a 409 OperationAborted error will be returned. If the reservation is created successfully, the service will respond with the Reservation element in the same format as getreserves.
Order Status Services
The Order Status services includes the /orders, /orderstatus, and /orderstatusdetail endpoints. All of these services report information about a requested order or set of orders, though in varying levels of detail.
orders
Example URL – https://fcb2b.evedi.io/orders?ClientIdentifier=100059&OrderNumber=3132305&ResultsLimit=3&SupplierItemSKU=VV01701002&TimeStamp=2025-01-08T18:45:19.692811&apiKey=BHm06vRD7l7HDFFE4bfbp7&signature=8cfabf4c909fb71dfd6227a179f4647fdf0de63d72d6d7c00c1f4310a108f7e3
The orders service reports summaries of the most recent orders for a given client, up to a specified maximum number of orders(3 in the example). Mandatory parameters for this service are the ClientIdentifier and ResultsLimit. The only optional parameter is the OrderNumber, but providing this parameter will limit the response to only one order regardless of ResultsLimit. The response must include an Order element with at least the OrderNumber, PurchaseOrderNumber, OrderDate, StatusDescription, and ShippingAddress. Optionally the Order element may also contain the ShipDate, ShipVia, ShipViaDescription, SpecialInstructions, AdditionalMessage, OrderContact, JobName, and InternationalFlag parameters.
orderstatus
Example URL – https://fcb2b.evedi.io/orderstatus?ClientIdentifier=100059&OrderNumber=3132305&SupplierItemSKU=VV01701002&TimeStamp=2025-01-08T18:39:28.670170&apiKey=BHm06vRD7l7HDFFE4bfbp7&signature=d95d385be92fff2673e4d5cb8b030806b92f56b4115dcbcf8eb874c0445b395a
This service is the same as orders except it only reports the summary of one order, the ResultsLimit request parameter is removed, and the OrderNumber parameter is now mandatory.
orderstatusdetail
Example URL – https://fcb2b.evedi.io/orderstatusdetail?ClientIdentifier=100059&OrderNumber=3132305&SupplierItemSKU=VV01701002&TimeStamp=2025-01-08T22:37:18.859628&apiKey=BHm06vRD7l7HDFFE4bfbp7&signature=9d002475f5bf6f1b47a5ff4b572fcfa2a908665463deb9e9ed67f81cbe0ff542
The orderstatusdetail service is essentially the orderstatus service but with excruciating detail. In fact, this service endpoint has more response parameters than any other FcB2B web service in the current specification. The request parameters are relatively simple though, and are exactly the same as in the orderstatus service. In this service, however, the response additionally contains a list of Line elements that describe in detail the SupplierItemSKUs in the order. Every line element must at minimum report the LineNumber, SupplierItemSKU, ItemNumber, and ItemStatus parameters. If available the line element may also contain the TextDescription, UnitOfMeasure, Price, ExtendedPrice, QuantityOrdered, QuantityShipped, QuantityBackordered, ShadeOrDyeLot, Size, RollNumber, Warehouse, Sidemarks, Invoice, BackOrderedDate, ShipmentExpectedDate, ShipmentStatus, ShipmentCarrier, ShipmentCode, DeliveryExpectedDate, and BillOfLading parameters.