# Features

You connect your salon app to Beauty Router once, then choose how to use each feature. Some features come only as Beauty
Router's embedded interface, some only through the API, and some both ways. You can mix them, and move a feature from one
to the other later.

Every integration needs the [login call](/authentication/) on your server and a [webhook endpoint](/webhooks/) for
order updates.

| Feature                                                                  | Embedded interface                             | API                                                         |
| ------------------------------------------------------------------------ | ---------------------------------------------- | ----------------------------------------------------------- |
| [Login and logout](/authentication/#log-in-a-user)                       | Not available                                  | `POST /v1/login`, from your server, and `POST /v1/logout`   |
| [Catalog](/catalog/)                                                     | Not available                                  | Catalog files and search                                    |
| [Product matching](/product-matching/)                                   | Not available                                  | `/v1/product-matches`                                       |
| [Company verification](/companies/)                                      | `showVerification`                             | Company, license, and certificate endpoints                 |
| [Payment cards](/companies/#payment-card)                                | `showVerification`, `showPaymentCards`         | `GET /v1/company/payment-cards`, read only                  |
| [Service selection](/companies/#services)                                | `showServiceSelector`                          | `GET /v1/services`, `/v1/company/services`, and `/v1/user/services` |
| [Marketplace](/embedded-marketplace/): browse, favorites, cart           | `showMarketplace`, `showFavorites`, `showCart` | Not available                                               |
| [Order creation](/create-orders/)                                        | `showCart`, `showCheckout`                     | `POST /v1/products/offers`, `/v1/orders/quote`, `/v1/orders/batch` |
| [Drafts](/create-orders/#drafts)                                         | `showCheckout`, `showOrders`                   | `saveAsDraft` on batch, `GET /v1/orders?status=draft`, `DELETE /v1/orders/{orderId}` |
| [Product details](/catalog/#product-details)                             | `showProductDetails`                           | `GET /v1/catalog/products/{productId}`                      |
| [Supplier list](/suppliers/#list-suppliers)                              | Not available                                  | `GET /v1/company/suppliers`, archive and restore            |
| [Supplier profile](/suppliers/#supplier-details)                         | `showSupplier`                                 | `GET /v1/company/suppliers` with `supplierIds`              |
| [Delivery estimates](/suppliers/#delivery-estimates)                     | Not available                                  | `GET /v1/company/delivery-estimates`                        |
| [Order list](/orders/#list-orders)                                       | `showOrders`                                   | `GET /v1/orders`                                            |
| [Order details](/orders/#get-an-order)                                   | `showOrder`                                    | `GET /v1/orders/{orderId}`                                  |
| [Order changes](/orders/#change-an-order)                                | `showOrder`                                    | Cancel, and change the delivery address                     |
| [Order tracking](/orders/#order-tracking)                                | `showOrderTracking`                            | `trackingNumbers` on the order                              |
| [Order rating](/orders/#order-rating)                                    | `showOrderRating`, `showOrder`                 | Not available                                               |
| [Order updates](/webhooks/)                                              | `onOrderCreated` callback                      | Webhooks                                                    |

Beauty Router sends the [emails](/emails/) for you. You set your app's details in the salon app admin area and build the
pages their links open.

## Embedded interface

You place Beauty Router's interface in your salon app with the [JavaScript library](/embedded-marketplace/), and you
choose where each part opens. Beauty Router runs the catalog, payments, sales tax, and order routing behind it. This is
the fastest way to start.

### Customize the interface

The embedded interface can follow your own design:

1. You share your design guide with the Beauty Router team, with any other materials that help.
2. The team creates a new design, specifically for your salon app.
3. You select that design in the salon app admin area.

Once you select it, the design applies automatically to all embedded interface sessions, so your code does not change.
Each environment has its own selection, so you can check the design in the sandbox first.

## API

You build your own screens and server code for the features the API covers. A step with no API, such as browsing the
marketplace or entering a payment card, still uses the embedded interface.