ShopBase Admin API

REST Admin API (and GraphQL Admin API) for building apps, themes, and payment gateways on ShopBase — products, orders, transactions, fulfillments, customers, inventory, checkouts, shipping, price rules, and analytics.

Documentation

Specifications

Other Resources

OpenAPI Specification

beeketing-shopbase-admin-openapi.json Raw ↑
{
  "swagger": "2.0",
  "info": {
    "title": "ShopBase Internal API",
    "termsOfService": "http://swagger.io/terms/",
    "version": "1.0.0",
    "contact": {
      "url": "/",
      "email": "support@shopbase.com"
    },
    "license": {
      "name": "ShopBase Dev 1.0",
      "url": "https://www.shopbase.net"
    },
    "x-logo": {
      "url": "https://admin-cdn.shopbase.com/img/Compact.ac400184.svg"
    }
  },
  "host": "shop-name.onshopbase.com",
  "paths": {
    "/admin/balance/charge.json": {
      "post": {
        "summary": "Capture charge balance.",
        "description": "Capture charge balance.",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/swagggerCaptureSuccessResponse"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/swagggerCaptureFailureResponse"
            }
          }
        },
        "parameters": [
          {
            "name": "input",
            "description": "Charge params",
            "in": "body",
            "required": true,
            "type": "object",
            "schema": {
              "$ref": "#/definitions/swagggerCaptureChargeParams",
              "description": "Charge params"
            }
          }
        ],
        "tags": [
          "Balance"
        ],
        "operationId": "charge-invoice",
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "USER_ACCESS_TOKEN": []
          }
        ]
      }
    },
    "/admin/balance/refund.json": {
      "post": {
        "summary": "Refund balance.",
        "description": "Refund balance.",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/SuccessResponse"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/FailureResponse"
            }
          }
        },
        "parameters": [
          {
            "name": "input",
            "description": "Refund params",
            "in": "body",
            "required": true,
            "type": "object",
            "schema": {
              "$ref": "#/definitions/RefundParamsDto",
              "description": "Refund params"
            }
          }
        ],
        "tags": [
          "Balance"
        ],
        "operationId": "refund-balance",
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "USER_ACCESS_TOKEN": []
          }
        ]
      }
    },
    "/admin/checkouts.json": {
      "get": {
        "summary": "Retrieve a list of abandoned checkouts",
        "description": "Retrieve a list of abandoned checkouts",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/AbandonedCheckoutsSwaggerResponse"
            }
          }
        },
        "parameters": [
          {
            "name": "page",
            "description": "page query",
            "in": "query",
            "required": false,
            "type": "number"
          },
          {
            "name": "limit",
            "description": "limit query",
            "in": "query",
            "required": false,
            "type": "number"
          },
          {
            "name": "email_statuses",
            "description": "A comma-separated list of email statuses, supported values: scheduled,sent,not_sent",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "sms_statuses",
            "description": "A comma-separated list of sms statuses, supported values: scheduled,sent,not_sent,failed",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "recovery_statuses",
            "description": "A comma-separated list of recovery statuses, supported values: recovered,not_recovered",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "search",
            "description": "customer name, product, ...",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "Abandoned Checkout"
        ],
        "operationId": "retrieves-a-list-of-checkouts",
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "APP_ACCESS_TOKEN": [
              "read_orders"
            ]
          }
        ]
      }
    },
    "/admin/checkouts/count.json": {
      "get": {
        "summary": "Retrieve count of abandoned checkouts",
        "description": "Retrieve count of abandoned checkouts",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/CountResponse"
            }
          }
        },
        "parameters": [
          {
            "name": "email_statuses",
            "description": "A comma-separated list of email statuses, supported values: scheduled,sent,not_sent",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "sms_statuses",
            "description": "A comma-separated list of sms statuses, supported values: scheduled,sent,not_sent,failed",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "recovery_statuses",
            "description": "A comma-separated list of recovery statuses, supported values: recovered,not_recovered",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "search",
            "description": "customer name, product, ...",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "Abandoned Checkout"
        ],
        "operationId": "count-checkouts",
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "APP_ACCESS_TOKEN": [
              "read_orders"
            ]
          }
        ]
      }
    },
    "/admin/checkouts/twilio-webhook.json": {
      "post": {
        "summary": "Receive webhook from twilio",
        "description": "Receive webhook from twilio to update sms log, update abandoned checkout sms status, opt out sms conversation",
        "responses": null,
        "tags": [
          "Abandoned Checkout"
        ],
        "operationId": "receive-webhook-from-twilio",
        "produces": [
          "application/json"
        ]
      }
    },
    "/admin/checkouts/{checkout_id:\\\\d+}.json": {
      "get": {
        "summary": "Retrieve a single abandoned checkout",
        "description": "Retrieve a single abandoned checkout",
        "responses": null,
        "parameters": [
          {
            "name": "checkout_id",
            "description": "checkout id",
            "in": "path",
            "required": true,
            "type": "number"
          }
        ],
        "tags": [
          "Abandoned Checkout"
        ],
        "operationId": "retrieves-a-checkout",
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "APP_ACCESS_TOKEN": [
              "read_orders"
            ]
          }
        ]
      }
    },
    "/admin/checkouts/{checkout_id:\\\\d+}/cancel-send-recovery-email.json": {
      "post": {
        "summary": "Cancel scheduled email of an abandoned checkout",
        "description": "Cancel scheduled email of an abandoned checkout",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/AbandonedCheckoutsUpdateSwaggerResponse"
            }
          }
        },
        "parameters": [
          {
            "name": "checkout_id",
            "description": "checkout id",
            "in": "path",
            "required": true,
            "type": "number"
          }
        ],
        "tags": [
          "Abandoned Checkout"
        ],
        "operationId": "cancel-recovery-email",
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "APP_ACCESS_TOKEN": [
              "write_orders"
            ]
          }
        ]
      }
    },
    "/admin/checkouts/{checkout_id:\\\\d+}/cancel-send-recovery-sms.json": {
      "post": {
        "summary": "Cancel scheduled sms of an abandoned checkout",
        "description": "Cancel scheduled sms of an abandoned checkout",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/AbandonedCheckoutsUpdateSwaggerResponse"
            }
          }
        },
        "parameters": [
          {
            "name": "checkout_id",
            "description": "checkout id",
            "in": "path",
            "required": true,
            "type": "number"
          }
        ],
        "tags": [
          "Abandoned Checkout"
        ],
        "operationId": "cancel-recovery-sms",
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "APP_ACCESS_TOKEN": [
              "write_orders"
            ]
          }
        ]
      }
    },
    "/admin/checkouts/{checkout_id:\\\\d+}/send-recovery-email.json": {
      "post": {
        "summary": "Manually send abandoned checkout email",
        "description": "Manually send abandoned checkout email",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/AbandonedCheckoutsUpdateSwaggerResponse"
            }
          }
        },
        "parameters": [
          {
            "name": "checkout_id",
            "description": "checkout id",
            "in": "path",
            "required": true,
            "type": "number"
          }
        ],
        "tags": [
          "Abandoned Checkout"
        ],
        "operationId": "send-recovery-email",
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "APP_ACCESS_TOKEN": [
              "write_orders"
            ]
          }
        ]
      }
    },
    "/admin/checkouts/{checkout_id:\\\\d+}/send-recovery-email/get-review.json": {
      "get": {
        "summary": "Retrieve an abandoned checkout email notification with preview content",
        "description": "Retrieve an abandoned checkout email notification with preview content",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/NotificationWithSublingResponseDto"
            }
          }
        },
        "parameters": [
          {
            "name": "param",
            "description": "checkout id",
            "in": "path",
            "required": true,
            "type": "number"
          },
          {
            "name": "category",
            "description": "notification category, current supported value: orders",
            "in": "query",
            "required": true,
            "type": "string"
          },
          {
            "name": "type",
            "description": "notification type, current supported value: abandoned_checkout",
            "in": "query",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Abandoned Checkout"
        ],
        "operationId": "get-email-preview",
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "APP_ACCESS_TOKEN": [
              "read_orders"
            ]
          }
        ]
      }
    },
    "/admin/checkouts/{checkout_id:\\\\d+}/send-recovery-sms.json": {
      "post": {
        "summary": "Manually send abandoned checkout sms",
        "description": "Manually send abandoned checkout sms",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/AbandonedCheckoutsUpdateSwaggerResponse"
            }
          }
        },
        "parameters": [
          {
            "name": "checkout_id",
            "description": "checkout id",
            "in": "path",
            "required": true,
            "type": "number"
          }
        ],
        "tags": [
          "Abandoned Checkout"
        ],
        "operationId": "send-recovery-sms",
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "APP_ACCESS_TOKEN": [
              "write_orders"
            ]
          }
        ]
      }
    },
    "/admin/checkouts/{checkout_id:\\\\d+}/send-recovery-sms/get-review.json": {
      "get": {
        "summary": "Retrieve an abandoned checkout sms notification with preview content",
        "description": "Retrieve an abandoned checkout sms notification with preview content",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/NotificationWithSublingResponseDto"
            }
          }
        },
        "parameters": [
          {
            "name": "param",
            "description": "checkout id",
            "in": "path",
            "required": true,
            "type": "number"
          },
          {
            "name": "category",
            "description": "notification category, current supported value: orders",
            "in": "query",
            "required": true,
            "type": "string"
          },
          {
            "name": "type",
            "description": "notification type, current supported value: abandoned_checkout",
            "in": "query",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Abandoned Checkout"
        ],
        "operationId": "get-sms-preview",
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "APP_ACCESS_TOKEN": [
              "read_orders"
            ]
          }
        ]
      }
    },
    "/admin/checkouts/{checkout_id:\\\\d+}/timeline.json": {
      "get": {
        "summary": "Retrieve a list of timelines of an abandoned checkout",
        "description": "Retrieve a list of timelines of an abandoned checkout",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/AbandonedCheckoutActivitiesSwaggerResponse"
            }
          }
        },
        "parameters": [
          {
            "name": "param",
            "description": "checkout id",
            "in": "path",
            "required": true,
            "type": "number"
          }
        ],
        "tags": [
          "Abandoned Checkout"
        ],
        "operationId": "retrieves-a-list-of-checkout-timelines",
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "APP_ACCESS_TOKEN": [
              "read_orders"
            ]
          }
        ]
      }
    },
    "/admin/checkouts/{checkout_id:\\\\d+}/update-note.json": {
      "put": {
        "summary": "Update abandoned checkout note",
        "description": "Update abandoned checkout note",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/AbandonedCheckoutsUpdateSwaggerResponse"
            }
          }
        },
        "parameters": [
          {
            "name": "checkout_id",
            "description": "checkout id",
            "in": "path",
            "required": true,
            "type": "number"
          },
          {
            "name": "input",
            "description": "note update request body",
            "in": "body",
            "required": true,
            "type": "object",
            "schema": {
              "$ref": "#/definitions/AbandonedCheckoutsNoteUpdateSwaggerRequest",
              "description": "note update request body"
            }
          }
        ],
        "tags": [
          "Abandoned Checkout"
        ],
        "operationId": "update-checkout-note",
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "APP_ACCESS_TOKEN": [
              "read_orders"
            ]
          }
        ]
      }
    },
    "/admin/collections/custom.json": {
      "get": {
        "summary": "Retrieves a list of custom collections.",
        "description": "Retrieve all collections.",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/CollectionListResponseSwagger"
            }
          }
        },
        "tags": [
          "Custom Collection"
        ],
        "operationId": "retrieve-a-list-of-custom-collections",
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "APP_ACCESS_TOKEN": [
              "read_products"
            ]
          }
        ]
      }
    },
    "/admin/collections/custom/count.json": {
      "get": {
        "summary": "Retrieves a count of custom collections.",
        "description": "Count all custom collections.",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/CollectionCountResponseSwagger"
            }
          }
        },
        "tags": [
          "Custom Collection"
        ],
        "operationId": "retrieve-a-count-of-custom-collections",
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "APP_ACCESS_TOKEN": [
              "read_products"
            ]
          }
        ]
      }
    },
    "/admin/collections/custom/{custom_collection_id:\\\\d+}.json": {
      "get": {
        "summary": "Retrieves a single custom collection.",
        "description": "Retrieve a specific collection by its ID.",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/CollectionByIdResponseSwagger"
            }
          }
        },
        "tags": [
          "Custom Collection"
        ],
        "operationId": "retrieve-a-single-custom-collections",
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "APP_ACCESS_TOKEN": [
              "read_products"
            ]
          }
        ]
      },
      "delete": {
        "summary": "Deletes a custom collection.",
        "description": "Delete a custom collection.",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/DeleteCustomCollectionResponseSwagger"
            }
          }
        },
        "tags": [
          "Custom Collection"
        ],
        "operationId": "delete-a-custom-collection",
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "APP_ACCESS_TOKEN": [
              "write_products"
            ]
          }
        ]
      },
      "put": {
        "summary": "Create or update a collection",
        "description": "A collection is a grouping of products that merchants can create to make their stores easier to browse.\n\nFor example, a merchant might create a collection for a specific type of product that they sell, such as Footwear.\n\nMerchants can create collections by selecting products individually or by defining rules that automatically determine whether products are included.",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/CollectionUpdateResponseSwagger"
            }
          }
        },
        "parameters": [
          {
            "name": "custom_collection_id",
            "description": "Custom collection ID",
            "in": "path",
            "required": true,
            "type": "integer"
          },
          {
            "name": "file",
            "description": "Collection update request struct",
            "in": "body",
            "required": true,
            "type": "object",
            "schema": {
              "$ref": "#/definitions/CollectionUpdateRequestSwagger",
              "description": "Collection update request struct"
            }
          }
        ],
        "tags": [
          "Custom Collection"
        ],
        "operationId": "update-custom-collection",
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "APP_ACCESS_TOKEN": [
              "write_products"
            ]
          }
        ]
      }
    },
    "/admin/collects.json": {
      "get": {
        "summary": "Retrieves a list of collects.",
        "description": "Retrieve all collects for the shop.",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/CollectListResponseSwagger"
            }
          }
        },
        "parameters": [
          {
            "name": "collection_id",
            "description": "Filter list collect by collection",
            "in": "query",
            "required": false,
            "type": "integer"
          }
        ],
        "tags": [
          "Collect"
        ],
        "operationId": "retrieve-a-list-of-collect",
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "APP_ACCESS_TOKEN": [
              "read_products"
            ]
          }
        ]
      },
      "post": {
        "summary": "Adds a product to a custom collection.",
        "description": "Create a new link between an existing product and an existing collection.",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/CreateCollectResponseSwagger"
            }
          }
        },
        "parameters": [
          {
            "name": "input",
            "description": "Collect request",
            "in": "body",
            "required": true,
            "type": "object",
            "schema": {
              "$ref": "#/definitions/CreateCollectRequestSwagger",
              "description": "Collect request"
            }
          }
        ],
        "tags": [
          "Collect"
        ],
        "operationId": "create-a-collect",
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "APP_ACCESS_TOKEN": [
              "write_products"
            ]
          }
        ]
      }
    },
    "/admin/collects/count.json": {
      "get": {
        "summary": "Retrieves a count of collects.",
        "description": "Retrieves a count of collects.",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/CollectCountResponseSwagger"
            }
          }
        },
        "parameters": [
          {
            "name": "collection_id",
            "description": "Filter list collect by collection",
            "in": "query",
            "required": false,
            "type": "integer"
          }
        ],
        "tags": [
          "Collect"
        ],
        "operationId": "retrieve-a-count-of-collect",
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "APP_ACCESS_TOKEN": [
              "read_products"
            ]
          }
        ]
      }
    },
    "/admin/collects/{collect_id:\\\\d+}.json": {
      "get": {
        "summary": "Retrieves a specific collect by its ID.",
        "description": "Retrieve a collect with a certain ID.",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/CollectByIdResponseSwagger"
            }
          }
        },
        "tags": [
          "Collect"
        ],
        "operationId": "retrieve-a-single-collect",
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "APP_ACCESS_TOKEN": [
              "read_products"
            ]
          }
        ]
      },
      "delete": {
        "summary": "Removes a product from a collection.",
        "description": "Delete the link between a product an a collection.",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/DeleteCollectResponseSwagger"
            }
          }
        },
        "parameters": [
          {
            "name": "collect_id",
            "description": "Collect ID",
            "in": "path",
            "required": true,
            "type": "integer"
          }
        ],
        "tags": [
          "Collect"
        ],
        "operationId": "delete-a-collect",
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "APP_ACCESS_TOKEN": [
              "write_products"
            ]
          }
        ]
      }
    },
    "/admin/customers.json": {
      "get": {
        "summary": "Retrieves a list of customers.",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/CustomerForResponse"
            }
          }
        },
        "parameters": [
          {
            "name": "ids",
            "description": "Restrict results to customers specified by a comma-separated list of IDs.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "since_id",
            "description": "Restrict results to those after the specified ID.",
            "in": "query",
            "required": false,
            "type": "integer"
          },
          {
            "name": "created_at_min",
            "description": "Show customers created after a specified date. format: 2014-04-25T16:15:47-04:00)",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "created_at_max",
            "description": "Show customers created before a specified date. format: 2014-04-25T16:15:47-04:00)",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "updated_at_min",
            "description": "Show customers last updated after a specified date. format: 2014-04-25T16:15:47-04:00)",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "updated_at_max",
            "description": "Show customers last updated before a specified date. format: 2014-04-25T16:15:47-04:00)",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "maximum": 250,
            "name": "limit",
            "description": "The maximum number of results to show.",
            "in": "query",
            "required": false,
            "type": "integer",
            "default": 50
          },
          {
            "name": "fields",
            "description": "Show only certain fields, specified by a comma-separated list of field names.",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "Customer"
        ],
        "operationId": "retrieves-a-list-of-customers",
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "APP_ACCESS_TOKEN": [
              "read_customers"
            ]
          }
        ]
      },
      "post": {
        "summary": "Creates a customer.",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/CustomerSwaggerResponse"
            }
          }
        },
        "parameters": [
          {
            "name": "input",
            "description": "Customer struct",
            "in": "body",
            "required": true,
            "type": "object",
            "schema": {
              "$ref": "#/definitions/CustomerDto",
              "description": "Customer struct"
            }
          }
        ],
        "tags": [
          "Customer"
        ],
        "operationId": "creates-a-customer",
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "APP_ACCESS_TOKEN": [
              "write_customers"
            ]
          }
        ]
      }
    },
    "/admin/customers/count.json": {
      "get": {
        "summary": "Retrieve a count of all customers",
        "description": "Retrieves a count of all customers.",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/CountResponse"
            }
          }
        },
        "tags": [
          "Customer"
        ],
        "operationId": "retrieves-a-count-of-all-customers",
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "APP_ACCESS_TOKEN": [
              "read_customers"
            ]
          }
        ]
      }
    },
    "/admin/customers/{customer_id:[0-9]+}/addresses.json": {
      "get": {
        "summary": "Retrieve all of a customer’s addresses",
        "description": "Retrieves a list of addresses for a customer.",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/CustomerAddressesDetailResponse"
            }
          }
        },
        "tags": [
          "Customer Address"
        ],
        "operationId": "get-customer-addresses-by-customer-id",
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "APP_ACCESS_TOKEN": [
              "read_customers"
            ]
          }
        ]
      },
      "post": {
        "summary": "Create a new address for a customer",
        "description": "Creates a new address for a customer.",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/CustomerAddressDetailResponse"
            }
          }
        },
        "parameters": [
          {
            "name": "input",
            "description": "Customer address post form",
            "in": "body",
            "required": true,
            "type": "object",
            "schema": {
              "$ref": "#/definitions/CustomerAddressCreateForm",
              "description": "Customer address post form"
            }
          }
        ],
        "tags": [
          "Customer Address"
        ],
        "operationId": "create-customer-address-for-customer",
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "APP_ACCESS_TOKEN": [
              "write_customers"
            ]
          }
        ]
      }
    },
    "/admin/customers/{customer_id:[0-9]+}/addresses/set.json": {
      "put": {
        "summary": "Destroy multiple customer addresses",
        "description": "Performs bulk operations for multiple customer addresses.",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/models.SwaggerDeleteResponse"
            }
          }
        },
        "parameters": [
          {
            "name": "address_ids",
            "description": "List of customer address.",
            "in": "query",
            "required": false,
            "type": "array"
          }
        ],
        "tags": [
    

# --- truncated at 32 KB (547 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/beeketing/refs/heads/main/openapi/beeketing-shopbase-admin-openapi.json