openapi: 3.1.0
info:
  title: 'Admin Management: Tax Classes V3'
  version: 1.0.0
paths:
  /stores/{store_hash}/v3/tax/classes:
    post:
      operationId: taxClassBatchPost
      summary: Create tax classes
      description: |
        Creates multiple tax classes in a single request. Max **50** items per request.
      tags:
        - taxClasses
      parameters:
        - name: store_hash
          in: path
          description: Permanent ID of the BigCommerce store.
          required: true
          schema:
            type: string
        - name: X-Auth-Token
          in: header
          description: >-
            ### OAuth scopes


            | UI Name | Permission | Parameter |

            |:--------|:-----------|:----------|

            | Tax | modify | `MANAGE_TAX` |


            ### Authentication header


            | Header | Argument | Description |

            |:-------|:---------|:------------|

            | `X-Auth-Token` | `access_token` | For more about API accounts that generate `access_token`s, see our
            [Guide to API Accounts](/docs/start/authentication/api-accounts). |


            ### Further reading


            For example requests and more information about authenticating BigCommerce APIs, see [Authentication and
            Example Requests](/docs/start/authentication#x-auth-token-header-example-requests).


            For more about BigCommerce OAuth scopes, see our [Guide to API
            Accounts](/docs/start/authentication/api-accounts#oauth-scopes).


            For a list of API status codes, see [API Status Codes](/docs/start/about/status-codes).
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Created classes returned as a collection.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaxClassCollectionEnvelope'
        '400':
          description: Bad request (e.g., invalid input).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemResponseEnvelope'
        '403':
          description: Authentication or `Manage_Tax` denied.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemResponseEnvelope'
        '409':
          description: Duplicate tax class names (conflict).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemResponseEnvelope'
        '413':
          description: Batch exceeds limit (50 items).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemResponseEnvelope'
        '422':
          description: |
            Unprocessable entity — empty body, non-array batch shape, or duplicate `name` or `id` within the batch.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemResponseEnvelope'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TaxClassCreateBatch'
    put:
      operationId: taxClassBatchPut
      summary: Update tax classes
      description: |
        Updates multiple tax classes in a single request. Max **50** items per request.
      tags:
        - taxClasses
      parameters:
        - name: store_hash
          in: path
          description: Permanent ID of the BigCommerce store.
          required: true
          schema:
            type: string
        - name: X-Auth-Token
          in: header
          description: >-
            ### OAuth scopes


            | UI Name | Permission | Parameter |

            |:--------|:-----------|:----------|

            | Tax | modify | `MANAGE_TAX` |


            ### Authentication header


            | Header | Argument | Description |

            |:-------|:---------|:------------|

            | `X-Auth-Token` | `access_token` | For more about API accounts that generate `access_token`s, see our
            [Guide to API Accounts](/docs/start/authentication/api-accounts). |


            ### Further reading


            For example requests and more information about authenticating BigCommerce APIs, see [Authentication and
            Example Requests](/docs/start/authentication#x-auth-token-header-example-requests).


            For more about BigCommerce OAuth scopes, see our [Guide to API
            Accounts](/docs/start/authentication/api-accounts#oauth-scopes).


            For a list of API status codes, see [API Status Codes](/docs/start/about/status-codes).
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Updated classes returned.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaxClassCollectionEnvelope'
        '400':
          description: One or more classes not found (update).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemResponseEnvelope'
        '403':
          description: Authentication or permission denied.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemResponseEnvelope'
        '409':
          description: Duplicate tax class names.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemResponseEnvelope'
        '413':
          description: Batch exceeds 50 ids/items.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemResponseEnvelope'
        '422':
          description: Validation error (format, duplicate `id` in batch, invalid ID values, ID-only update payload, etc.).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemResponseEnvelope'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TaxClassUpdateBatch'
    delete:
      operationId: taxClassBatchDelete
      summary: Delete tax classes
      description: |
        Deletes multiple tax classes in a single request. Max **50** items per request.
      tags:
        - taxClasses
      parameters:
        - name: store_hash
          in: path
          description: Permanent ID of the BigCommerce store.
          required: true
          schema:
            type: string
        - name: id:in
          in: query
          description: |
            Comma-separated list of tax class IDs to delete (e.g., `1,2,3`).
          required: true
          schema:
            type: string
        - name: X-Auth-Token
          in: header
          description: >-
            ### OAuth scopes


            | UI Name | Permission | Parameter |

            |:--------|:-----------|:----------|

            | Tax | modify | `MANAGE_TAX` |


            ### Authentication header


            | Header | Argument | Description |

            |:-------|:---------|:------------|

            | `X-Auth-Token` | `access_token` | For more about API accounts that generate `access_token`s, see our
            [Guide to API Accounts](/docs/start/authentication/api-accounts). |


            ### Further reading


            For example requests and more information about authenticating BigCommerce APIs, see [Authentication and
            Example Requests](/docs/start/authentication#x-auth-token-header-example-requests).


            For more about BigCommerce OAuth scopes, see our [Guide to API
            Accounts](/docs/start/authentication/api-accounts#oauth-scopes).


            For a list of API status codes, see [API Status Codes](/docs/start/about/status-codes).
          required: true
          schema:
            type: string
      responses:
        '204':
          description: All listed classes deleted successfully.
          content:
            application/json:
              schema:
                type: object
                properties: {}
        '400':
          description: Delete failed (e.g., class not found).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemResponseEnvelope'
        '403':
          description: Authentication or permission denied.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemResponseEnvelope'
        '404':
          description: Missing or empty `id:in` filter.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemResponseEnvelope'
        '413':
          description: More than 50 IDs.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemResponseEnvelope'
        '422':
          description: Invalid ID values in filter.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemResponseEnvelope'
servers:
  - url: https://api.bigcommerce.com
    description: https://api.bigcommerce.com
components:
  schemas:
    TaxClassCreateBatchItems:
      type: object
      properties:
        name:
          type: string
          description: >
            Tax class name. Must be 1–100 characters and cannot contain < > { } ` ( ) ; |. Must be unique
            case-insensitively across the store (both existing classes and the incoming batch). Conflicting names
            produce a 409.
      required:
        - name
      title: TaxClassCreateBatchItems
    TaxClassCreateBatch:
      type: array
      items:
        $ref: '#/components/schemas/TaxClassCreateBatchItems'
      title: TaxClassCreateBatch
    TaxClassResource:
      type: object
      properties:
        id:
          type: integer
        name:
          type: string
        created_at:
          type: string
          format: date-time
          description: ISO-8601 timestamp.
        updated_at:
          type: string
          format: date-time
      required:
        - id
        - name
        - created_at
        - updated_at
      title: TaxClassResource
    TaxClassCollectionEnvelopeMeta:
      type: object
      properties: {}
      description: Response metadata (may be an empty object).
      title: TaxClassCollectionEnvelopeMeta
    TaxClassCollectionEnvelope:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/TaxClassResource'
        meta:
          $ref: '#/components/schemas/TaxClassCollectionEnvelopeMeta'
          description: Response metadata (may be an empty object).
      required:
        - data
        - meta
      title: TaxClassCollectionEnvelope
    Problem:
      type: object
      properties:
        title:
          type: string
        status:
          type: integer
        type:
          type: string
          format: uri
        detail:
          type: string
        code:
          type: integer
        errors:
          type: object
          additionalProperties:
            description: Any type
      description: RFC 7807-style problem object (optional fields omitted when empty).
      title: Problem
    ProblemResponseEnvelopeMeta:
      type: object
      properties: {}
      title: ProblemResponseEnvelopeMeta
    ProblemResponseEnvelope:
      type: object
      properties:
        errors:
          type: array
          items:
            $ref: '#/components/schemas/Problem'
        meta:
          $ref: '#/components/schemas/ProblemResponseEnvelopeMeta'
      title: ProblemResponseEnvelope
    TaxClassUpdateBatchItems:
      type: object
      properties:
        id:
          type: integer
        name:
          type: string
      required:
        - id
        - name
      description: |
        Each item must include `id` and at least one other field.
      title: TaxClassUpdateBatchItems
    TaxClassUpdateBatch:
      type: array
      items:
        $ref: '#/components/schemas/TaxClassUpdateBatchItems'
      title: TaxClassUpdateBatch
  securitySchemes:
    X-Auth-Token:
      type: apiKey
      in: header
      name: X-Auth-Token
      description: >-
        ### OAuth scopes


        | UI Name | Permission | Parameter |

        |:--------|:-----------|:----------|

        | Tax | modify | `MANAGE_TAX` |


        ### Authentication header


        | Header | Argument | Description |

        |:-------|:---------|:------------|

        | `X-Auth-Token` | `access_token` | For more about API accounts that generate `access_token`s, see our [Guide to
        API Accounts](/docs/start/authentication/api-accounts). |


        ### Further reading


        For example requests and more information about authenticating BigCommerce APIs, see [Authentication and Example
        Requests](/docs/start/authentication#x-auth-token-header-example-requests).


        For more about BigCommerce OAuth scopes, see our [Guide to API
        Accounts](/docs/start/authentication/api-accounts#oauth-scopes).


        For a list of API status codes, see [API Status Codes](/docs/start/about/status-codes).
