openapi: 3.0.0 info: title: Customers description: >- The fabric **Customers** API is used to create and manage details of storefront customers, also referred to as shoppers. The `Customers` or `Customer Address` APIs provide features for store admins to manage their customers' details and addresses. The `Customer Self' API provide features for customers or shoppers to independently manage their own details. version: 3.0.0 x-audience: external-public contact: name: fabric Support email: support@fabric.inc license: name: fabric API License url: https://fabric.inc/api-license termsOfService: https://fabric.inc/terms-of-use servers: - url: https://api.fabric.inc/v3 description: Production tags: - name: Customer Profile description: >- These endpoints provide the features for store admins to create and manage customers' details. - name: Customer Address description: >- These endpoints provide the features for store admins to create and manage customers' addresses. - name: Customer Self description: >- These endpoints provide the feature for customers or shoppers to independently manage their details in the storefront. paths: /Customers: post: tags: - Customer Profile summary: Add a New Customer description: >- Using this endpoint, you can add a new customer to the system. The response includes an `id` which is required in subsequent calls, such as `GET /customers/{customerId}`, `PUT /customers/{customerId}`, `PATCH /customers/{customerId}`, and more.
When `externalId` is specified, the customers have the ability to manage their own details through the storefront UI. operationId: createCustomer parameters: - $ref: '#/components/parameters/xFabricTenantId' - $ref: '#/components/parameters/xFabricRequestId' requestBody: description: A sample request to add a new customer. content: application/json: schema: $ref: '#/components/schemas/createCustomerRequest' required: true responses: '201': description: OK headers: x-fabric-request-id: $ref: '#/components/responses/forbidden/headers/x-fabric-request-id' content: application/json: schema: $ref: '#/components/schemas/createCustomerResponse' '400': $ref: '#/components/responses/badRequest' '403': $ref: '#/components/responses/forbidden' '500': $ref: '#/components/responses/internalServerError' get: tags: - Customer Profile summary: Get Customers description: >- Use this endpoint to get a paginated list of customers.
By specifying the query parameters `offset` and `limit`, you can narrow down the search results. You can also `sort` the results in an ascending or descending order. Additionally, with the `isDeleted` query parameter, you can filter for either deleted or non-deleted customers. When no query parameter is specified, by default, you get up to 10 records. operationId: listCustomers parameters: - $ref: '#/components/parameters/xFabricTenantId' - $ref: '#/components/parameters/xFabricRequestId' - name: offset in: query description: >- The number of records to skip before returning records. For example, when offset is 20 and limit's 10, this endpoint returns records from 21 to 30. style: form explode: true schema: type: integer format: int32 example: 0 default: 0 - name: limit in: query required: false description: The maximum number of records in a single page. style: form explode: true schema: type: integer format: int32 example: 2 default: 10 - name: sort in: query description: >- The criteria to sort results, where `-` indicates a descending order and `+` indicates an ascending order. You can apply sorting to the following fields - `createdAt`, `updatedAt`, `firstName`, `lastName`, `emailAddress` and `status`. required: false style: form explode: true schema: type: string example: '-updatedAt' - name: isDeleted in: query required: false description: >- A flag indicating whether only the deleted customers need to be included. Set to `true` to include only the deleted customers and `false` to exclude deleted customers. style: form explode: true schema: type: boolean example: false enum: - false - true responses: '200': description: OK headers: x-fabric-request-id: $ref: '#/components/responses/forbidden/headers/x-fabric-request-id' content: application/json: schema: $ref: '#/components/schemas/listCustomerResponse' '400': $ref: '#/components/responses/badRequest' '403': $ref: '#/components/responses/forbidden' '500': $ref: '#/components/responses/internalServerError' /customers/{customerId}: parameters: - $ref: '#/components/parameters/xFabricTenantId' - $ref: '#/components/parameters/xFabricRequestId' - $ref: '#/components/parameters/customerIdPathParam' get: tags: - Customer Profile summary: Get Customer Details description: >- Using this endpoint, you can get details of a single customer by `customerId`. operationId: getCustomer responses: '200': description: OK headers: x-fabric-request-id: $ref: '#/components/responses/forbidden/headers/x-fabric-request-id' content: application/json: schema: $ref: '#/components/schemas/customer' '400': $ref: '#/components/responses/badRequest' '403': $ref: '#/components/responses/forbidden' '404': $ref: '#/components/responses/customerNotFound' '500': $ref: '#/components/responses/internalServerError' put: tags: - Customer Profile summary: Update Customer Details description: >- Using this endpoint, you can update details of an existing customer by `customerId`.
This endpoint replaces the existing details of the customer. If you want to make only a partial update, without replacing the entire details, use the `PATCH /customers/{customerId}` endpoint. operationId: updateCustomer requestBody: description: body request content: application/json: schema: $ref: '#/components/schemas/updateCustomerRequest' required: true responses: '200': description: OK headers: x-fabric-request-id: $ref: '#/components/responses/forbidden/headers/x-fabric-request-id' content: application/json: schema: $ref: '#/components/schemas/customer' '400': $ref: '#/components/responses/badRequest' '403': $ref: '#/components/responses/forbidden' '404': $ref: '#/components/responses/customerNotFound' '500': $ref: '#/components/responses/internalServerError' patch: tags: - Customer Profile summary: Partially Update Customer Details description: >- Using this endpoint, you can partially update details of a customer by `customerId`. To fully replace the details of an existing customer, use the `PUT /customers/{customerId}` endpoint. operationId: updateSpecifcDetailsOfCustomer requestBody: description: A sample request to partially update customer details. content: application/json: schema: $ref: '#/components/schemas/updateCustomerRequest' required: true responses: '200': description: OK headers: x-fabric-request-id: $ref: '#/components/responses/forbidden/headers/x-fabric-request-id' content: application/json: schema: $ref: '#/components/schemas/customer' '400': $ref: '#/components/responses/badRequest' '403': $ref: '#/components/responses/forbidden' '404': $ref: '#/components/responses/customerNotFound' '500': $ref: '#/components/responses/internalServerError' delete: tags: - Customer Profile summary: Delete Customer description: >- With this endpoint, you can delete an existing customer data by `customerId`. operationId: deleteCustomer responses: '200': $ref: '#/components/responses/deleteCustomerResponse' '400': $ref: '#/components/responses/badRequest' '403': $ref: '#/components/responses/forbidden' '404': $ref: '#/components/responses/customerNotFound' '500': $ref: '#/components/responses/internalServerError' /customers/{customerId}/actions/update-status: parameters: - $ref: '#/components/parameters/xFabricTenantId' - $ref: '#/components/parameters/xFabricRequestId' - $ref: '#/components/parameters/customerIdPathParam' post: tags: - Customer Profile summary: Update Customer Status description: >- With this endpoint, you can update the account status of an existing customer by `customerId`. operationId: updateCustomerStatus requestBody: description: A sample request to update customer's account status. content: application/json: schema: $ref: '#/components/schemas/updateCustomerStatusRequest' responses: '200': $ref: '#/components/responses/customerStatusUpdateResponse' '400': $ref: '#/components/responses/badRequest' '403': $ref: '#/components/responses/forbidden' '404': $ref: '#/components/responses/customerNotFound' '500': $ref: '#/components/responses/internalServerError' /customers/search: parameters: - $ref: '#/components/parameters/xFabricTenantId' - $ref: '#/components/parameters/xFabricRequestId' post: tags: - Customer Profile summary: Search for Customer description: >- Using this endpoint, you can search for customers based on filter conditions. By specifying `offset` and `limit`, you can narrow down your search results. In addition, using the `isDelete` property in the request body, you can filter for either deleted or non-deleted customers. operationId: searchCustomer requestBody: description: A sample request to search for customers. content: application/json: schema: $ref: '#/components/schemas/customerSearchRequest' required: true responses: '200': description: OK headers: x-fabric-request-id: $ref: '#/components/responses/forbidden/headers/x-fabric-request-id' content: application/json: schema: $ref: '#/components/schemas/listCustomerResponse' '400': $ref: '#/components/responses/searchBadRequest' '403': $ref: '#/components/responses/forbidden' '500': $ref: '#/components/responses/internalServerError' /customers/{customerId}/customer-address: parameters: - $ref: '#/components/parameters/xFabricTenantId' - $ref: '#/components/parameters/xFabricRequestId' - $ref: '#/components/parameters/customerIdPathParam' post: tags: - Customer Address summary: Add a New Address description: >- Using this endpoint, you can add a new address for the customer by `customerId`. operationId: createCustomerAddress requestBody: description: A sample request to add customer's address. content: application/json: schema: $ref: '#/components/schemas/customerAddressRequest' responses: '201': description: Created headers: x-fabric-request-id: $ref: '#/components/responses/forbidden/headers/x-fabric-request-id' content: application/json: schema: $ref: '#/components/schemas/customerAddressResponse' '400': $ref: '#/components/responses/badRequest' '403': $ref: '#/components/responses/forbidden' '404': $ref: '#/components/responses/customerNotFound' '500': $ref: '#/components/responses/internalServerError' get: tags: - Customer Address summary: Get Customer's Addresses description: >- Using this endpoint, you can get all addresses of a customer.
By specifying the query parameters `offset` and `limit`, you can narrow down the search results. You can also `sort` the results in an ascending or descending order. Additionally, with the `isDeleted` query parameter, you can filter for either deleted or non-deleted customers. When no query parameter is specified, by default, you get up to 10 records. operationId: listCustomersAddresses parameters: - name: offset in: query description: >- The number of records to skip before returning records. For example, when offset is 20 and limit's 10, this endpoint returns records from 21 to 30. required: false style: form explode: true schema: type: integer format: int32 example: 0 default: 0 - name: limit in: query description: The maximum number of records per page. required: false style: form explode: true schema: type: integer format: int32 example: 10 default: 10 - name: sort in: query description: >- The criteria to sort results, where `-` indicates a descending order and `+` indicates an ascending order. You can sort the following fields - `updatedAt`, `country`, `city`, and `region`. required: false style: form explode: true schema: type: string example: '-updatedAt' - name: isDeleted in: query description: >- A flag indicating whether only the deleted addresses must be included in the response. Set to `true` to include only the deleted addresses of the customers and `false` to exclude the deleted addresses. style: form explode: true schema: type: boolean example: false enum: - false - true responses: '200': description: OK headers: x-fabric-request-id: $ref: '#/components/responses/forbidden/headers/x-fabric-request-id' content: application/json: schema: $ref: '#/components/schemas/listCustomerAddressResponse' '400': $ref: '#/components/responses/badRequest' '403': $ref: '#/components/responses/forbidden' '404': $ref: '#/components/responses/customerNotFound' '500': $ref: '#/components/responses/internalServerError' /customers/{customerId}/customer-address/{addressId}: parameters: - $ref: '#/components/parameters/xFabricTenantId' - $ref: '#/components/parameters/xFabricRequestId' - $ref: '#/components/parameters/customerIdPathParam' - $ref: '#/components/parameters/addressIdPathParam' get: tags: - Customer Address summary: Get Customer's Address description: >- Using this endpoint, you can get a single address of a customer based on the `customerId` and `addressId`. operationId: getCustomersAddress responses: '200': description: OK headers: x-fabric-request-id: $ref: '#/components/responses/forbidden/headers/x-fabric-request-id' content: application/json: schema: $ref: '#/components/schemas/customerAddressResponse' '400': $ref: '#/components/responses/badRequest' '403': $ref: '#/components/responses/forbidden' '404': $ref: '#/components/responses/customerAddressNotFound' '500': $ref: '#/components/responses/internalServerError' put: tags: - Customer Address summary: Update Customer's Address description: >- Using this endpoint, you can update a customer's address based on the `customerId` and `addressId`. This replaces the existing address with the new one. If you want to make only a partial update, use the `PATCH /customers/{customerId}/customer-address/{addressId}` endpoint. operationId: updateAddressForCustomer requestBody: description: A sample request to update an address of a customer. content: application/json: schema: $ref: '#/components/schemas/updateCustomerAddressRequest' responses: '200': description: OK headers: x-fabric-request-id: $ref: '#/components/responses/forbidden/headers/x-fabric-request-id' content: application/json: schema: $ref: '#/components/schemas/customerAddressResponse' '400': $ref: '#/components/responses/badRequest' '403': $ref: '#/components/responses/forbidden' '404': $ref: '#/components/responses/customerAddressNotFound' '500': $ref: '#/components/responses/internalServerError' patch: tags: - Customer Address summary: Partially Update Customer's Address description: >- Using this endpoint, you can partially update a customer's address based on the `customerId` and `addressId`. To fully replace an existing address, use the `PUT /customers/{customerId}/customer-address/{addressId}` endpoint. operationId: updateSpecificDetailsOfAddressForCustomer requestBody: description: A sample request to partially update the customer's address. content: application/json: schema: $ref: '#/components/schemas/updateCustomerAddressRequest' responses: '200': description: OK headers: x-fabric-request-id: $ref: '#/components/responses/forbidden/headers/x-fabric-request-id' content: application/json: schema: $ref: '#/components/schemas/customerAddressResponse' '400': $ref: '#/components/responses/badRequest' '403': $ref: '#/components/responses/forbidden' '404': $ref: '#/components/responses/customerAddressNotFound' '500': $ref: '#/components/responses/internalServerError' delete: tags: - Customer Address summary: Delete Customer's Address description: >- Using this endpoint, you can delete an existing address of a customer based on the `customerId` and `addressId`. operationId: deleteCustomersAddress responses: '200': $ref: '#/components/responses/deleteCustomerAddressResponse' '400': $ref: '#/components/responses/badRequest' '403': $ref: '#/components/responses/forbidden' '404': $ref: '#/components/responses/customerAddressNotFound' '500': $ref: '#/components/responses/internalServerError' /customers/{customerId}/customer-address/search: parameters: - $ref: '#/components/parameters/xFabricTenantId' - $ref: '#/components/parameters/xFabricRequestId' - $ref: '#/components/parameters/customerIdPathParam' post: tags: - Customer Address summary: Search for Customer's Addresses description: >- With this endpoint, you can search for customer's addresses based on the specified filter conditions. In addition, you can tailor the search results by including or excluding the deleted addresses and the default addresses.
**Note**:A customer can have a default address for both billing and shipping. operationId: searchCustomerAddress requestBody: description: A sample request to search for the customer's addresses. content: application/json: schema: $ref: '#/components/schemas/customerAddressSearchRequest' required: true responses: '200': description: OK headers: x-fabric-request-id: $ref: '#/components/responses/forbidden/headers/x-fabric-request-id' content: application/json: schema: $ref: '#/components/schemas/listCustomerAddressResponse' '400': $ref: '#/components/responses/searchBadRequest' '403': $ref: '#/components/responses/forbidden' '500': $ref: '#/components/responses/internalServerError' /customers/self: parameters: - name: x-fabric-tenant-id in: header description: >- A header used by fabric to identify the tenant making the request. You must include tenant id in the authentication header for an API request to access any of fabric’s endpoints. You can retrieve the tenant id , which is also called account id, from [Copilot](/v3/platform/settings/account-details/getting-the-account-id). This header is required. schema: type: string example: 517fa9dfd42d8b00g1o3k312 - name: x-fabric-request-id in: header description: Unique request ID schema: type: string example: 263e731c-45c8-11ed-b878-0242ac120002 required: false get: tags: - Customer Self summary: Get Customer Details - Customer Context description: >- Using this endpoint, a customer can view their details through the storefront UI. operationId: getCustomerSelf responses: '200': description: OK headers: x-fabric-request-id: $ref: '#/components/responses/forbidden/headers/x-fabric-request-id' content: application/json: schema: $ref: '#/components/schemas/customer' '400': $ref: '#/components/responses/badRequest' '403': $ref: '#/components/responses/forbidden' '404': $ref: '#/components/responses/customerNotFound' '500': $ref: '#/components/responses/internalServerError' put: tags: - Customer Self summary: Update Customer Details - Customer Context description: >- Using this endpoint, customers can update their own details through the storefront UI. operationId: updateCustomerSelf requestBody: description: A sample request to update customer's details. content: application/json: schema: $ref: '#/components/schemas/updateCustomerSelfRequest' required: true responses: '200': description: OK headers: x-fabric-request-id: $ref: '#/components/responses/forbidden/headers/x-fabric-request-id' content: application/json: schema: $ref: '#/components/schemas/customer' '400': $ref: '#/components/responses/badRequest' '403': $ref: '#/components/responses/forbidden' '404': $ref: '#/components/responses/customerNotFound' '500': $ref: '#/components/responses/internalServerError' /customers/self/customer-address: parameters: - $ref: '#/components/parameters/xFabricTenantId' - $ref: '#/components/parameters/xFabricRequestId' get: tags: - Customer Self summary: View Addresses - Customer Context description: >- Using this endpoint, a customer can view their own addresses through the storefront UI. operationId: listCustomersAddressSelf parameters: - name: offset in: query description: >- The number of records to skip before returning records. For example, when offset is 20 and limit's 10, this endpoint returns records from 21 to 30. required: false style: form explode: true schema: type: integer format: int32 example: 0 - name: limit in: query description: The maximum number of records in a single page. required: false style: form explode: true schema: type: integer format: int32 example: 10 - name: sort in: query description: >- The criteria to sort results, where `-` indicates a descending order and `+` indicates an ascending order. You can sort the following fields - `updatedAt`, `country`, `city`, and `region`. required: false style: form explode: true schema: type: string example: '-updatedAt' default: '-updatedAt' - name: isDeleted in: query description: >- A flag indicating whether only the deleted addresses are returned in the response. Specify `true` to get only the deleted addresses and `false` to get only the non-deleted ones. style: form explode: true schema: type: boolean default: false example: false enum: - false - true responses: '200': description: OK headers: x-fabric-request-id: $ref: '#/components/responses/forbidden/headers/x-fabric-request-id' content: application/json: schema: $ref: '#/components/schemas/listCustomerAddressResponse' '400': $ref: '#/components/responses/badRequest' '403': $ref: '#/components/responses/forbidden' '404': $ref: '#/components/responses/customerNotFound' '500': $ref: '#/components/responses/internalServerError' post: tags: - Customer Self summary: Add Address - Customer Context. description: >- Using this endpoint, a customer can add their address through a storefront UI. operationId: createCustomerAddressSelf requestBody: description: A sample request body to add address. content: application/json: schema: $ref: '#/components/schemas/customerAddressRequest' required: true responses: '201': description: OK headers: x-fabric-request-id: $ref: '#/components/responses/forbidden/headers/x-fabric-request-id' content: application/json: schema: $ref: '#/components/schemas/customerAddressResponse' '400': $ref: '#/components/responses/badRequest' '403': $ref: '#/components/responses/forbidden' '404': $ref: '#/components/responses/customerNotFound' '500': $ref: '#/components/responses/internalServerError' /customers/self/customer-address/{addressId}: parameters: - $ref: '#/components/parameters/xFabricTenantId' - $ref: '#/components/parameters/xFabricRequestId' - $ref: '#/components/parameters/addressIdPathParam' get: tags: - Customer Self summary: View Address - Customer Context description: >- Using this endpoint, a customer can view their own address through the storefront UI based on the `addressId`. operationId: getAddressForCustomerSelf responses: '200': description: OK headers: x-fabric-request-id: $ref: '#/components/responses/forbidden/headers/x-fabric-request-id' content: application/json: schema: $ref: '#/components/schemas/customerAddressResponse' '400': $ref: '#/components/responses/badRequest' '403': $ref: '#/components/responses/forbidden' '404': $ref: '#/components/responses/customerAddressNotFound' '500': $ref: '#/components/responses/internalServerError' put: tags: - Customer Self summary: Update Address - Customer Context description: >- Using this endpoint, a customer can update their own address through the storefront UI based on `addressId`. operationId: updateAddressForCustomerSelf requestBody: description: A sample request for update address. content: application/json: schema: $ref: '#/components/schemas/customerAddressRequest' required: true responses: '200': description: OK headers: x-fabric-request-id: $ref: '#/components/responses/forbidden/headers/x-fabric-request-id' content: application/json: schema: $ref: '#/components/schemas/customerAddressResponse' '400': $ref: '#/components/responses/badRequest' '403': $ref: '#/components/responses/forbidden' '404': $ref: '#/components/responses/customerAddressNotFound' '500': $ref: '#/components/responses/internalServerError' delete: tags: - Customer Self summary: Delete Address - Customer Context description: >- Using this endpoint, a customer can delete their own address through the storefront UI based on `addressId`. operationId: deleteCustomersAddressSelf responses: '200': $ref: '#/components/responses/deleteCustomerAddressResponse' '400': $ref: '#/components/responses/badRequest' '403': $ref: '#/components/responses/forbidden' '404': $ref: '#/components/responses/customerAddressNotFound' '500': $ref: '#/components/responses/internalServerError' components: securitySchemes: bearerAuth: description: The access token. type: http scheme: bearer bearerFormat: JWT parameters: xFabricTenantId: name: x-fabric-tenant-id in: header description: >- A header used by fabric to identify the tenant making the request. You must include tenant id in the authentication header for an API request to access any of fabric’s endpoints. You can retrieve the tenant id , which is also called account id, from [Copilot](/v3/platform/settings/account-details/getting-the-account-id). This header is required. schema: type: string example: 517fa9dfd42d8b00g1o3k312 xFabricRequestId: name: x-fabric-request-id in: header description: A UUID of the request. schema: type: string example: 263e731c-45c8-11ed-b878-0242ac120002 required: false customerIdPathParam: in: path name: customerId description: >- A 24-character system-generated ID of the customer. This is returned in the response of the `POST /customers` endpoint. required: true style: simple schema: type: string example: 61a558b1b155125f02be7fb1 addressIdPathParam: in: path name: addressId description: A 24-character system-generated ID of the customer's address. required: true style: simple schema: type: string example: 61a558b1b155125f02be7fb2 headers: xFabricRequestId: description: A unique request ID. schema: type: string example: 263e731c-45c8-11ed-b878-0242ac120002 schemas: message: description: The response message. type: object properties: type: description: A machine-readable code. type: string example: SUCCESS message: description: A human-friendly message corresponding to the `type`. type: string example: Success message required: - type - message customerAddressRequest: required: - address type: object properties: address: $ref: '#/components/schemas/commonAddress' isDefault: description: >- A flag indicating whether the address is the default one. `true` indicates the address is the default address and `false` indicates otherwise. type: boolean example: false additionalAttributes: description: A placeholder for additional info, in key-value pairs. type: object example: landmark: Beach commonAddress: type: object description: The address details. required: - type properties: addressLine1: description: The first line of the address. type: string example: 123 Main St. addressLine2: description: The second line of the address. type: string example: Suite 100 addressLine3: description: The third line of the address. type: string example: Seventh floor addressLine4: description: The fourth line of the address. type: string example: 'Attention: Pat E. Doe' city: description: The city name in the address. type: string example: Seattle region: description: The region or state name in the address. type: string example: WA postalCode: description: The postal or ZIP code of the address. type: string example: 98121 county: description: The administrative division or county within a country or state. type: string example: King County country: description: >- The country code, which can be a full name, or an ISO 3166-1 alpha-2 or alpha-3 code. type: string example: US type: description: The address type. type: string enum: - BILLING - SHIPPING example: BILLING latitude: description: >- The geographical `latitude` used with `longitude` to locate the exact address. The coordinates are provided in decimal degrees format, with negative values indicating locations to the west. type: number format: double example: 47.6205 longitude: description: >- The geographical `longitude` used with `latitude` to locate the exact address. The coordinates are provided in decimal degrees format, with negative values indicating locations to the west. type: number format: double example: -122.3493 updateCommonAddressRequest: type: object description: The address details. properties: addressLine1: description: The first line of the address. type: string example: 123 Main St. addressLine2: description: The second line of the address. type: string example: Suite 100 addressLine3: description: The third line of the address. type: string example: Seventh floor addressLine4: description: The fourth line of the address, for additional information. type: string example: 'Attention: Pat E. Doe' city: description: The city name in the address. type: string example: Seattle region: description: The region or state name in the address. type: string example: WA postalCode: description: The postal or ZIP code of the address. type: string example: 98121 country: description: >- The country code, which can be a full name, an ISO 3166-1 alpha-2, or alpha-3 code. type: string example: US latitude: description: >- The geographical `latitude` used with `longitude` to locate an exact address. The coordinates are provided in decimal degrees format, with negative values indicating locations to the west. type: number format: double example: 47.6205 longitude: description: >- The geographical `longitude` used with `latitude` to locate an address. The coordinates are provided in decimal degrees format, with negative values indicating locations to the west. type: number format: double example: -122.3493 customerAddressResponse: required: - id - address - isDeleted - createdAt - updatedAt type: object properties: id: type: string description: A 24-character system-generated ID of the address. example: 61604a30fdfacd0009816e44 uniqueItems: true address: $ref: '#/components/schemas/commonAddress' additionalAttributes: description: A placeholder for additional info, in key-value pairs. type: object example: landmark: Beach isDeleted: type: boolean description: >- A flag indicating whether the address is deleted. `true` indicates the address is deleted and `false` indicates otherwise. example: false isDefault: description: >- A flag indicating whether the address is the default one.`true` indicates the given address is the default address and `false` indicates otherwise. type: boolean example: false deletedAt: description: The time when the address was deleted, in UTC format. type: string format: date-time example: '2023-08-30T23:20:42.822Z' nullable: true createdAt: description: The time when the address was created, in UTC format. type: string format: date-time example: '2023-08-30T23:20:42.822Z' updatedAt: description: The time when the address was the last updated, in UTC format. type: string format: date-time example: '2023-08-30T23:20:42.822Z' nullable: true createCustomerRequest: type: object required: - name - emailAddress properties: name: $ref: '#/components/schemas/commonName' emailAddress: type: string description: The customer's email. format: email example: test@example.com phone: $ref: '#/components/schemas/phone' externalId: type: string description: A UUID of the customer. example: 1231012312-312-31231asda additionalAttributes: description: A placeholder for additional info, in key-value pairs. type: object example: type: shopper phone: type: object properties: number: type: string description: The customer's phone number. example: 15555551234 type: type: string description: The type of phone number. example: MOBILE nullable: true enum: - MOBILE - HOME - BUSINESS commonName: type: object description: The full name of the customer. required: - firstName - lastName properties: title: description: The customer's title, such as Mr., Mrs, and Dr. type: string example: Dr. firstName: description: The customer's first name. type: string example: Pat middleName: description: The customer's middle name. type: string example: E lastName: description: The customer's last name. type: string example: Doe suffix: description: The suffix for the customer's name, such as Jr., PhD, and more. type: string example: Jr. updateCommonNameRequest: type: object description: The customer's full name. properties: title: description: The customer's title, such as Mr., Mrs, Dr, and more. type: string example: Dr. firstName: description: The customer's first name. type: string example: Pat middleName: description: The customer's middle name or initial. type: string example: E lastName: description: The customer's last name. type: string example: Kake suffix: description: The suffix for the customer's name, such as Jr., PhD, and more. type: string example: Jr. createCustomerResponse: required: - id - isDeleted - createdAt - updatedAt - name - emailAddress type: object properties: id: type: string description: A 24-character system-generated customer ID. uniqueItems: true example: 61df41892bf06d00092d0d8a name: $ref: '#/components/schemas/commonName' status: description: The status of the customer. type: string enum: - ACTIVE - INACTIVE - BLOCKED example: ACTIVE emailAddress: type: string description: The customer's email. format: email example: test@example.com phone: $ref: '#/components/schemas/phone' externalId: type: string description: A UUID of the customer. example: 1231012312-312-31231asda additionalAttributes: description: A placeholder for additional info, in key-value pairs. type: object example: middleName: user isDeleted: type: boolean description: >- A flag indicating whether the customer data is deleted. `true` indicates the customer data is deleted and `false` indicates otherwise. example: false deletedAt: description: The time when the customer data was deleted, in UTC format. type: string format: date-time example: '2023-08-30T23:20:42.822Z' nullable: true createdAt: description: The time when the customer was added, in UTC format. type: string format: date-time example: '2023-08-30T23:20:42.822Z' updatedAt: description: The time when the customer details were last updated, in UTC format. type: string format: date-time example: '2023-08-30T23:20:42.822Z' nullable: true customer: required: - id - isDeleted - createdAt - updatedAt - name - emailAddress type: object properties: id: type: string description: A 24-character system-generated ID of the customer. uniqueItems: true example: 61df41892bf06d00092d0d8a name: $ref: '#/components/schemas/commonName' status: description: The account status of the customer. type: string enum: - ACTIVE - INACTIVE - BLOCKED example: ACTIVE emailAddress: type: string description: The customer's email. format: email example: test@example.com phone: $ref: '#/components/schemas/phone' externalId: type: string description: A UUID of the customer. example: 1231012312-312-31231asda additionalAttributes: description: A placeholder for additional info, in key-value pairs. type: object example: middleName: user isDeleted: type: boolean description: >- A flag indicating whether the customer's record is deleted. `true` indicates, the customer's record is deleted and false indicates otherwise. example: false deletedAt: description: The time when the customer's record was deleted, in UTC format. type: string format: date-time example: '2023-08-30T23:20:42.822Z' nullable: true createdAt: description: The time when the customer was added to the system, in UTC format. type: string format: date-time example: '2023-08-30T23:20:42.822Z' updatedAt: description: The time when the customer data was last updated, in UTC format. type: string format: date-time example: '2023-08-30T23:20:42.822Z' nullable: true defaultAddress: description: The default addresses of the customer. type: array items: $ref: '#/components/schemas/customerAddressResponse' customerSearchRequest: type: object description: The criteria to search for customers. required: - match properties: sort: type: string description: >- The criteria to sort results, where `-` indicates a descending order and `+` indicates an ascending order. You can sort the following fields - `createdAt`, `updatedAt`, `firstName`, `lastName`, `status`, and `emailAddress`. example: +firstName,-createdAt match: description: match allOf: - $ref: '#/components/schemas/customerMatch' offset: type: number description: >- The number of records to skip before returning records. For example, when offset is 20 and limit's 10, this endpoint returns records from 21 to 30. default: 0 example: 0 limit: type: number description: The maximum number of records in a single page. example: 10 default: 20 customerAddressSearchRequest: type: object description: The criteria to search for customer's addresses. required: - match properties: sort: type: string description: >- The criteria to sort results, where `-` indicates a descending order and `+` indicates an ascending order. You can sort the following fields - `createdAt`, `updatedAt`, `type`, and `country`. example: '-createdAt' match: description: match allOf: - $ref: '#/components/schemas/customerAddressMatch' offset: type: number description: >- The number of records to skip before returning records. For example, when offset is 20 and limit's 10, this endpoint returns records from 21 to 30. default: 0 example: 0 limit: type: number description: The maximum number of records in a single page. example: 10 default: 20 updateCustomerStatusRequest: type: object properties: status: description: The status of the customer's account. type: string enum: - ACTIVE - INACTIVE - BLOCKED example: ACTIVE updateCustomerRequest: type: object required: - name - emailAddress properties: name: $ref: '#/components/schemas/updateCommonNameRequest' emailAddress: type: string description: The customer's email. format: email example: test@example.com phone: $ref: '#/components/schemas/phone' externalId: type: string description: A UUID of the customer. example: 1231012312-312-31231asda additionalAttributes: description: A placeholder for additional info, in key-value pairs. type: object example: middleName: user updateCustomerAddressRequest: type: object properties: address: $ref: '#/components/schemas/updateCommonAddressRequest' isDefault: description: >- A flag indicating whether the address is the default one. `true` indicates the address is the default address and `false` indicates otherwise. type: boolean example: false additionalAttributes: description: A placeholder for additional info, in key-value pairs. type: object example: landmark: Beach updateCustomerSelfRequest: type: object required: - name - emailAddress properties: name: $ref: '#/components/schemas/updateCommonNameRequest' emailAddress: type: string description: The customer's email. format: email example: test@example.com phone: $ref: '#/components/schemas/phone' additionalAttributes: description: A placeholder for additional info, in key-value pairs. type: object example: middleName: user customerMatch: type: object description: The criteria to search for customers. properties: id: $ref: '#/components/schemas/searchId' firstName: $ref: '#/components/schemas/searchFirstName' lastName: $ref: '#/components/schemas/searchLastName' emailAddress: $ref: '#/components/schemas/searchEmailAddress' externalId: $ref: '#/components/schemas/searchExternalId' createdAt: $ref: '#/components/schemas/searchCreatedAt' updatedAt: $ref: '#/components/schemas/searchUpdatedAt' deletedAt: $ref: '#/components/schemas/searchDeletedAt' status: $ref: '#/components/schemas/searchStatus' additionalAttributes: $ref: '#/components/schemas/searchAdditionalAttribute' isDeleted: $ref: '#/components/schemas/searchIsDeleted' customerAddressMatch: type: object description: The criteria to search for customer's address. properties: id: $ref: '#/components/schemas/searchId' type: $ref: '#/components/schemas/searchType' addressLine1: $ref: '#/components/schemas/searchAddressLine' city: $ref: '#/components/schemas/searchCity' region: $ref: '#/components/schemas/searchRegion' postalCode: $ref: '#/components/schemas/searchPostalCode' county: $ref: '#/components/schemas/searchCounty' country: $ref: '#/components/schemas/searchCountry' latitude: $ref: '#/components/schemas/searchLatitude' longitude: $ref: '#/components/schemas/searchLongitude' createdAt: $ref: '#/components/schemas/searchCreatedAt' updatedAt: $ref: '#/components/schemas/searchUpdatedAt' deletedAt: $ref: '#/components/schemas/searchDeletedAt' additionalAttributes: $ref: '#/components/schemas/searchAdditionalAttribute' isDeleted: $ref: '#/components/schemas/searchIsDeleted' isDefault: $ref: '#/components/schemas/searchIsDefault' searchId: type: object description: A unique identifier of the search criteria. properties: op: type: string enum: - IN - EQUALS description: The type of search operation. example: IN value: type: string description: A 24-character system-generated ID of the given search criteria. example: 61df41892bf06d00092d0d8a required: - op - value searchFirstName: type: object description: The criteria to search for customers based on their first name. properties: op: type: string description: >- The type of search operation. Multiple values, separated by commas, can be used for the IN and NOT_IN operations, while only a single value can be used for the EQUALS, CONTAINS, and NOT_EQUALS operations. enum: - IN - NOT_IN - EQUALS - CONTAINS - NOT_EQUALS example: IN value: type: string description: The customer's first name. example: Pat required: - op - value searchLastName: type: object description: The criteria to search for customers based on their last name. properties: op: type: string description: >- The type of search operation. Multiple values, separated by commas, can be used for the IN and NOT_IN operations, while only a single value can be used for the EQUALS, CONTAINS, and NOT_EQUALS operations. enum: - IN - NOT_IN - EQUALS - CONTAINS - NOT_EQUALS example: IN value: type: string description: The customer's last name. example: Kake required: - op - value searchEmailAddress: type: object description: The criteria to search for customers based on their email. properties: op: type: string description: >- The type of search operation. Multiple values, separated by commas, can be used for the IN and NOT_IN operations, while only a single value can be used for the EQUALS, CONTAINS, and NOT_EQUALS operations. enum: - IN - NOT_IN - EQUALS - CONTAINS - NOT_EQUALS example: IN value: type: string description: The customer's email address. example: pat.kake@example.com required: - op - value searchExternalId: type: object description: The criteria to search for customers based on their `externalId`. properties: op: type: string description: The type of search operation. enum: - IN - EQUALS example: IN value: type: string description: The value of the `externalId`. example: 1231012312-312-31231asda required: - op - value searchStatus: type: object description: The criteria to search for customers based on their account status. properties: op: type: string description: >- The type of search operation. Multiple values, separated by commas, can be used for the IN and NOT_IN operations, while only a single value can be used for the EQUALS, CONTAINS, and NOT_EQUALS operations. enum: - IN - NOT_IN - EQUALS - CONTAINS - NOT_EQUALS example: IN value: type: string description: The customer's account status. enum: - ACTIVE - INACTIVE - BLOCKED example: ACTIVE required: - op - value searchCreatedAt: type: object description: >- The criteria to search for customers or their addresses based on a specific creation date or within a creation date range. properties: op: type: string description: >- The type of search operation, such as equals, less than (LT), greater than (GT), less than or equal to (LTE), greater than or equal to (GTE), or within a specified range. enum: - EQUALS - LTE - GTE - GT - LT - RANGE example: LTE value: type: string description: The time of creation, in UTC format. example: '2023-08-30T23:20:42.822Z' startCreatedAt: type: string description: >- The starting value of the creation date range. This is used with the `endCreatedAt` property. example: '2023-08-30T23:20:42.822Z' endCreatedAt: type: string description: >- The ending value of the creation date range. This is used with the `startCreatedAt` property. example: '2023-08-31T23:20:42.822Z' example: op: LTE value: '2023-08-30T23:20:42.822Z' required: - op searchUpdatedAt: type: object description: >- The criteria to search for customers or their addresses based on a specific date or date range in which the record was updated. properties: op: type: string description: >- The type of search operation, such as equals, less than (LT), greater than (GT), less than or equal to (LTE), greater than or equal to (GTE), or within a specified range. enum: - EQUALS - LTE - GTE - GT - LT - RANGE example: LTE value: type: string description: The time of last update, in UTC format. example: '2023-08-30T23:20:42.822Z' startUpdatedAt: type: string description: >- The starting value of the `updatedAt` date range. This is used with the `endUpdatedAt` property. example: '2023-08-30T23:20:42.822Z' endUpdatedAt: type: string description: >- The ending value of the `updatedAt` date range. This is used with the `startUpdatedAt` property. example: '2023-08-31T23:20:42.822Z' example: op: LTE value: '2023-08-30T23:20:42.822Z' required: - op searchDeletedAt: type: object description: >- The criteria to search for customers or their addresses based on a specific deletion date or within a deletion date range. properties: op: type: string description: >- The type of search operation, such as equals, less than (LT), greater than (GT), less than or equal to (LTE), greater than or equal to (GTE), or within a specified range. enum: - EQUALS - LTE - GTE - GT - LT - RANGE example: LTE value: type: string description: The time of deletion, in UTC format. example: '2023-08-30T23:20:42.822Z' startDeletedAt: type: string description: >- The starting value of the `deletedAt` date range. This is used with the `endDeletedAt` property. example: '2023-08-30T23:20:42.822Z' endDeletedAt: type: string description: >- The ending value of the `deletedAt` date range. This is used with the `startDeletedAt` property. example: '2023-08-31T23:20:42.822Z' example: op: LTE value: '2023-08-30T23:20:42.822Z' required: - op searchAdditionalAttribute: type: object description: >- The criteria to search for customers or their addresses based on additional attributes. properties: key: type: string description: >- The key for the additional attribute. This should be the field name given in the `additionalAttributes` schema. example: gps anyOf: - $ref: '#/components/schemas/searchStringOperation' - $ref: '#/components/schemas/searchNumberOrDateOperation' required: - key - op searchStringOperation: type: object description: The criteria to search by a string value. properties: op: type: string description: >- The type of search operation. Multiple values, separated by commas, can be used for the IN and NOT_IN operations, while only a single value can be used for the EQUALS, CONTAINS, and NOT_EQUALS operations. enum: - IN - NOT_IN - EQUALS - CONTAINS - NOT_EQUALS example: IN value: type: string description: The value of the string. example: beach searchNumberOrDateOperation: type: object description: >- The criteria to search for records by number, date, range of numbers, or range of dates. properties: op: type: string description: >- The type of search operation, such as equals, less than (LT), greater than (GT), less than or equal to (LTE), greater than or equal to (GTE), or within a specified range. enum: - EQUALS - LTE - GTE - GT - LT - RANGE example: LTE value: type: string description: The value of the number or the date. example: '2023-08-30T23:20:42.822Z' fromValue: type: string description: >- The starting value of the number or date range. This is used with the `toValue` property. example: '2023-08-30T23:20:42.822Z' toValue: type: string description: >- The ending value of the number or date range. This is used with the `fromValue` property. example: '2023-08-31T23:20:42.822Z' example: op: LTE value: '2023-08-30T23:20:42.822Z' searchType: type: object description: The criteria to search based on the type of address. properties: op: type: string description: >- The type of search operation. Multiple values, separated by commas, can be used for the IN and NOT_IN operations, while only a single value can be used for the EQUALS, CONTAINS, and NOT_EQUALS operations. enum: - IN - NOT_IN - EQUALS - CONTAINS - NOT_EQUALS example: IN value: type: string description: The type of address. enum: - BILLING - SHIPPING example: BILLING required: - op - value searchAddressLine: type: object description: >- The criteria to search by the first, second, or third line of the customer's address. properties: op: type: string description: >- The type of search operation. Multiple values, separated by commas, can be used for the IN and NOT_IN operations, while only a single value can be used for the EQUALS, CONTAINS, and NOT_EQUALS operations. enum: - IN - NOT_IN - EQUALS - CONTAINS - NOT_EQUALS example: IN value: type: string description: The first, second, or third line of the customer's address. example: 123 Main St. required: - op - value searchCity: type: object description: >- The criteria to search for customer's addresses based on the `city` given in the address. properties: op: type: string description: >- The type of search operation. Multiple values, separated by commas, can be used for the IN and NOT_IN operations, while only a single value can be used for the EQUALS, CONTAINS, and NOT_EQUALS operations. - IN - NOT_IN - EQUALS - CONTAINS - NOT_EQUALS example: IN value: type: string description: The city name. example: Seattle required: - op - value searchRegion: type: object description: >- The criteria to search for customer's addresses based on the `region` given in the address. properties: op: type: string description: >- The type of search operation. Multiple values, separated by commas, can be used for the IN and NOT_IN operations, while only a single value can be used for the EQUALS, CONTAINS, and NOT_EQUALS operations. enum: - IN - NOT_IN - EQUALS - CONTAINS - NOT_EQUALS example: IN value: type: string description: The region name. example: WA required: - op - value searchPostalCode: type: object description: >- The criteria to search for customer's addresses based on `postalCode` given in the address. properties: op: type: string description: >- The type of search operation. Multiple values, separated by commas, can be used for the IN and NOT_IN operations, while only a single value can be used for the EQUALS, CONTAINS, and NOT_EQUALS operations. enum: - IN - NOT_IN - EQUALS - CONTAINS - NOT_EQUALS example: IN value: type: string description: The postal or ZIP code of the address. example: 98121 required: - op - value searchCounty: type: object description: >- The criteria to search for customer's address based on the `county` given in the address. properties: op: type: string description: >- The type of search operation. Multiple values, separated by commas, can be used for the IN and NOT_IN operations, while only a single value can be used for the EQUALS, CONTAINS, and NOT_EQUALS operations. - IN - NOT_IN - EQUALS - CONTAINS - NOT_EQUALS example: IN value: type: string description: The county name. example: King County searchCountry: type: object description: >- The criteria to search for the customer's address based on the `country` given in the address. properties: op: type: string description: >- The type of search operation. Multiple values, separated by commas, can be used for the IN and NOT_IN operations, while only a single value can be used for the EQUALS, CONTAINS, and NOT_EQUALS operations. enum: - IN - NOT_IN - EQUALS - CONTAINS - NOT_EQUALS example: IN value: type: string description: >- The country code, which can be a full name, ISO 3166-1 alpha-2, or an alpha-3 code. example: US required: - op - value searchLatitude: type: object description: >- The criteria to search for customer's address based on latitude or a range of latitudes given in the address. properties: op: type: string description: >- The type of search operation, such as equals, less than (LT), greater than (GT), less than or equal to (LTE), greater than or equal to (GTE), or within a specified range. enum: - EQUALS - LTE - GTE - GT - LT - RANGE example: LTE value: type: number description: >- The latitude value in decimal degrees format; negative is degrees West. format: double example: 47.6205 startLatitude: type: number description: >- The starting value of the latitude range. This is used with the `endLatitude` property. The coordinates are provided in decimal degrees format, with negative values indicating locations to the west. format: double example: 47.6205 endLatitude: type: number format: double description: >- The ending value of the latitude range. This is used with the `startLatitude` property. The coordinates are provided in decimal degrees format, with negative values indicating locations to the west. example: 47.6205 example: op: LTE value: 47.6205 required: - op searchLongitude: type: object description: >- The criteria to search for customer's address based on longitude or a range of longitude given in the address. properties: op: type: string description: >- The type of search operation, such as equals, less than (LT), greater than (GT), less than or equal to (LTE), greater than or equal to (GTE), or within a specified range. enum: - EQUALS - LTE - GTE - GT - LT - RANGE example: LTE value: type: number description: >- The longitude value in decimal degrees format; negative is degrees West. format: double example: -77.0364 startLongitude: type: number description: >- The starting value of the longitude range. This is used with the `endLongitude` property and formatted to decimal degrees; negative is degrees West. format: double example: -77.0364 endLongitude: type: number format: double description: >- The ending value of the longitude range. This is used with the `startLongitude` property and formatted to decimal degrees; negative is degrees West. example: -77.0364 example: op: LTE value: -77.0364 required: - op searchIsDeleted: type: boolean description: >- A flag indicating whether the search results should include only deleted addresses. Set to `true` to include only deleted addresses and `false` to exclude deleted addresses. enum: - false - true example: false searchIsDefault: type: boolean description: >- A flag indicating whether the search results should include only default addresses. Set to 'true' to include only default addresses and 'false' to exclude default addresses. enum: - false - true example: true customerStatusUpdate: description: The details of customer's status. type: object properties: type: description: A machine-readable code. type: string example: SUCCESS message: description: A human-readable message corresponding to `type`. type: string example: Success message status: description: The customer's account status. type: string enum: - ACTIVE - INACTIVE - BLOCKED example: ACTIVE required: - type - message Query: type: object description: The pagination criteria. properties: offset: type: number description: >- The number of records to skip before returning records. For example, when offset is 20 and limit's 10, you get records from 21 to 30. When they're not specified, you get up to 10 records. example: 0 limit: type: number description: The maximum number of records per page. example: 20 count: type: number description: The total number of records in the response. example: 100 listCustomerAddressResponse: description: The list of customer addresses for the customerId. type: object properties: query: $ref: '#/components/schemas/Query' data: description: addresses of the sent customer type: array items: $ref: '#/components/schemas/customerAddressResponse' listCustomerResponse: description: The list of customers. type: object properties: query: $ref: '#/components/schemas/Query' data: type: array items: $ref: '#/components/schemas/createCustomerResponse' responses: unauthorized: description: Unauthorized content: application/json: schema: type: object properties: message: type: string example: Unauthorized forbidden: description: Forbidden Request headers: x-fabric-request-id: description: Unique request ID schema: type: string example: 263e731c-45c8-11ed-b878-0242ac120002 content: application/json: schema: $ref: '#/components/schemas/message' example: type: REQUEST_DENIED message: Forbidden internalServerError: description: The request is received but an internal error occurred headers: x-fabric-request-id: $ref: '#/components/responses/forbidden/headers/x-fabric-request-id' content: application/json: schema: $ref: '#/components/schemas/message' example: type: INTERNAL_SERVER_ERROR message: Internal server error customerNotFound: description: The resource isn't found headers: x-fabric-request-id: $ref: '#/components/responses/forbidden/headers/x-fabric-request-id' content: application/json: schema: $ref: '#/components/schemas/message' example: type: CUSTOMER_NOT_FOUND message: Data with the given identifier isn't found customerAddressNotFound: description: The specified resource isn't found headers: x-fabric-request-id: $ref: '#/components/responses/forbidden/headers/x-fabric-request-id' content: application/json: schema: $ref: '#/components/schemas/message' examples: CustomerNotFound: value: type: CUSTOMER_NOT_FOUND message: Data with the given identifier isn't found. CustomerAddressNotFound: value: type: CUSTOMER_ADDRESS_NOT_FOUND message: Data with the given identifier isn't found. searchBadRequest: description: Bad request headers: x-fabric-request-id: $ref: '#/components/responses/forbidden/headers/x-fabric-request-id' content: application/json: schema: $ref: '#/components/schemas/message' examples: invalidAccountProvided: value: type: INVALID_ACCOUNT_PROVIDED message: Invalid account provided for the request. invalidSearchOperation: value: type: INVALID_SEARCH_OPERATION badRequest: description: Bad request headers: x-fabric-request-id: $ref: '#/components/responses/forbidden/headers/x-fabric-request-id' content: application/json: schema: $ref: '#/components/schemas/message' examples: invalidAccountProvided: value: type: INVALID_ACCOUNT_PROVIDED message: Invalid account provided for the request. deleteCustomerResponse: description: Delete customer response headers: x-fabric-request-id: $ref: '#/components/responses/forbidden/headers/x-fabric-request-id' content: application/json: schema: $ref: '#/components/schemas/message' examples: customerDeletionSuccess: value: type: CUSTOMER_DELETED_SUCCESSFULLY message: Customer deleted successfully customerDeletedAlready: value: type: CUSTOMER_DELETED_SUCCESSFULLY message: Customer already deleted deleteCustomerAddressResponse: description: Delete customer address response headers: x-fabric-request-id: $ref: '#/components/responses/forbidden/headers/x-fabric-request-id' content: application/json: schema: $ref: '#/components/schemas/message' examples: customerAddressDeletionSuccess: value: type: CUSTOMER_ADDRESS_DELETED_SUCCESSFULLY message: Customer address deleted successfully customerAddressDeletedAlready: value: type: CUSTOMER_ADDRESS_DELETED_SUCCESSFULLY message: Customer address already deleted customerStatusUpdateResponse: description: Customer status update response headers: x-fabric-request-id: $ref: '#/components/responses/forbidden/headers/x-fabric-request-id' content: application/json: schema: $ref: '#/components/schemas/customerStatusUpdate' examples: customerStatusUpdateSuccess: value: type: CUSTOMER_STATUS_UPDATE_SUCCESS message: Customer status updated successfully status: ACTIVE customerStatusAlreadyUpdated: value: type: CUSTOMER_STATUS_ALREADY_UPDATED message: Customer already has the target status status: ACTIVE security: - bearerAuth: []