Elastic Path Accounts API

An Account represents the entity that participates in a Commerce transaction. Accounts can have Carts, Orders, Subscriptions, and Addresses.

OpenAPI Specification

elastic-path-accounts-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  version: 25.1126.6886238
  x-version-timestamp: 2025-11-26 19:10:23+00:00
  title: Addresses Introduction Account Addresses Accounts API
  description: 'The Addresses API allows you to organize account addresses. Addresses are a sub-resource of `account` resources, an account can have multiple addresses, such as home, work, and neighbour.


    You can use an account address with either [client_credentials access token](/docs/api/authentication/create-an-access-token) or a combination of [implicit access token](/docs/api/authentication/create-an-access-token) and [Account Management authentication](/docs/api/accounts/post-v-2-account-members-tokens) token.

    '
  contact:
    name: Elastic Path
    url: https://www.elasticpath.com
    email: support@elasticpath.com
  license:
    url: https://elasticpath.dev
    name: MIT
servers:
- url: https://useast.api.elasticpath.com
  description: US East
- url: https://euwest.api.elasticpath.com
  description: EU West
security:
- BearerToken: []
tags:
- name: Accounts
  description: 'An Account represents the entity that participates in a Commerce transaction. Accounts can have Carts, Orders, Subscriptions, and Addresses.

    '
  externalDocs:
    url: https://elasticpath.dev/docs/commerce-cloud/accounts/using-account-management-api/account-management-api-overview
paths:
  /v2/accounts:
    post:
      tags:
      - Accounts
      summary: Create an Account
      description: With the account creation endpoint, you have the ability to create accounts which can optionally have another account as a parent.
      operationId: post-v2-accounts
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                data:
                  type: object
                  allOf:
                  - $ref: '#/components/schemas/Account'
                  - $ref: '#/components/schemas/WritableParentId'
              required:
              - data
            examples:
              Create an account:
                value:
                  data:
                    type: account
                    name: acc-name
                    legal_name: acc-legal-name
                    registration_id: reg-id
                    external_ref: ext-ref
              Create a subaccount:
                value:
                  data:
                    type: account
                    name: acc-sub-name
                    legal_name: acc-legal-name, ltd
                    registration_id: reg-id
                    external_ref: ext-ref
                    parent_id: 96b1f750-55d3-4768-a3f8-adffba694a2c
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/AccountResponse'
                  links:
                    type: object
                    properties:
                      self:
                        description: A URL to the specific resource.
                        type: string
                        example: https://useast.api.elasticpath.com/v2/accounts/deb6b25f-8451-4211-9a22-95610333df23
        '400':
          $ref: '#/components/responses/BadRequestError'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '409':
          $ref: '#/components/responses/ConflictError'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '500':
          $ref: '#/components/responses/InternalServerError'
      security:
      - BearerToken: []
    get:
      tags:
      - Accounts
      summary: Get All Accounts
      description: 'Use this endpoint to Get all accounts.


        You can use pagination with this resource. For more information, see [pagination](/guides/Getting-Started/pagination).


        ### Filtering

        The following operators and attributes are available for [filtering](/guides/Getting-Started/filtering) accounts:


        | Attribute         | Operators                     | Example                                                       |

        |-------------------|-------------------------------|---------------------------------------------------------------|

        | `id`              | `lt`,`le`,`eq`,`gt`,`ge`,`in` | `eq(id,3fa85f64-5717-4562-b3fc-2c963f66afa6)`                 |

        | `created_at`      | `lt`,`le`,`eq`,`gt`,`ge`      | `ge(created_at,2024-04-29T00:00:00.000Z)`                     |

        | `updated_at`      | `lt`,`le`,`eq`,`gt`,`ge`      | `le(updated_at,2024-04-29T00:00:00.000Z)`                     |

        | `name`            | `eq`,`like`                   | `like(name,*swan*)`                                           |

        | `legal_name`      | `eq`,`like`                   | `like(legal_name,*swan*)`                                     |

        | `registration_id` | `eq`,`like`                   | `like(registration_id,00000000-0000-1000-8000-*)`             |

        | `external_ref`    | `eq`,`like`,`in`              | `like(external_ref,16be*)`                                    |

        | `account_tags`    | `contains`                    | `contains(account_tags,26beb787-be6e-40c3-bbae-9c645820b075)` |

        '
      operationId: get-v2-accounts
      parameters:
      - $ref: '#/components/parameters/filter'
      - $ref: '#/components/parameters/page-limit'
      - $ref: '#/components/parameters/page-offset'
      - name: sort
        in: query
        description: Specifies the order in which accounts will be returned. For more information, see [Sorting](/guides/Getting-Started/sorting).
        required: false
        schema:
          type: string
          enum:
          - created_at
          - -created_at
          - id
          - -id
          - name
          - -name
          - updated_at
          - -updated_at
          example: id
          x-enumDescriptions:
            created_at: Sort in increasing order of creation
            -created_at: Sort in decreasing order of creation
            id: Sort in increasing order of ID
            -id: Sort in decreasing order of ID
            name: Sort in increasing order of name
            -name: Sort in decreasing order of name
            updated_at: Sort in increasing order of last update
            -updated_at: Sort in decreasing order of last update
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      allOf:
                      - $ref: '#/components/schemas/AccountResponse'
                      - type: object
                        properties:
                          links:
                            type: object
                            properties:
                              self:
                                description: A URL to the specific resource.
                                type: string
                                example: https://useast.api.elasticpath.com/v2/accounts/deb6b25f-8451-4211-9a22-95610333df23
                  meta:
                    $ref: '#/components/schemas/MetaList'
                  links:
                    type: object
                    properties:
                      current:
                        description: Always the current page.
                        type: string
                        format: uri
                        example: https://useast.api.elasticpath.com/v2/accounts?page[offset]=0&page[limit]=25
                      first:
                        description: Always the first page.
                        type: string
                        format: uri
                        example: https://useast.api.elasticpath.com/v2/accounts?page[offset]=0&page[limit]=25
                      last:
                        description: Always `null` if there is only one page.
                        type: string
                        format: uri
                        example: https://useast.api.elasticpath.com/v2/accounts?page[offset]=0&page[limit]=25
                      next:
                        description: Always `null` if there is only one page.
                        type: string
                        example: null
                      prev:
                        description: Always `null` if the user is on the first page.
                        type: string
                        example: null
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /v2/accounts/{accountID}:
    get:
      tags:
      - Accounts
      summary: Get an Account
      description: View a specific account contained within your store
      operationId: get-v2-accounts-accountID
      parameters:
      - name: accountID
        in: path
        description: The ID of the account you want to retrieve.
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/AccountResponse'
                  links:
                    type: object
                    properties:
                      self:
                        description: A URL to the specific resource.
                        type: string
                        example: https://useast.api.elasticpath.com/v2/accounts/deb6b25f-8451-4211-9a22-95610333df23
        '404':
          $ref: '#/components/responses/NotFoundError'
        '500':
          $ref: '#/components/responses/InternalServerError'
    put:
      tags:
      - Accounts
      summary: Update an Account
      description: Update the information contained on an account.
      operationId: put-v2-accounts-accountID
      parameters:
      - name: accountID
        in: path
        description: The ID of the account you want to retrieve.
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                data:
                  type: object
                  allOf:
                  - $ref: '#/components/schemas/Account'
                  - $ref: '#/components/schemas/ReadOnlyParentId'
              required:
              - data
            examples:
              Update an Account:
                value:
                  data:
                    type: account
                    name: acc-name
                    legal_name: acc-legal-name
                    registration_id: reg-id
                    external_ref: ext-ref
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/AccountResponse'
                  links:
                    type: object
                    properties:
                      self:
                        description: A URL to the specific resource.
                        type: string
                        format: uri
                        example: /v2/accounts/deb6b25f-8451-4211-9a22-95610333df23
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                properties:
                  errors:
                    type: array
                    items:
                      type: object
                      properties:
                        detail:
                          type: string
                          example: 'Validation failed: field ''Name'' on the ''min'' tag.'
                        status:
                          type: string
                          example: '400'
                        title:
                          type: string
                          example: Bad Request
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                type: object
                properties:
                  errors:
                    type: array
                    items:
                      type: object
                      properties:
                        detail:
                          type: string
                          example: account not found
                        status:
                          type: string
                          example: '404'
                        title:
                          type: string
                          example: Not Found
        '409':
          $ref: '#/components/responses/ConflictError'
        '500':
          $ref: '#/components/responses/InternalServerError'
    delete:
      tags:
      - Accounts
      summary: Delete an Account
      description: Delete a specific account within a store
      operationId: delete-v2-accounts-accountID
      parameters:
      - name: accountID
        in: path
        description: The ID of the account you want to retrieve.
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '204':
          description: No Content
        '404':
          $ref: '#/components/responses/NotFoundError'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /v2/accounts/{accountID}/relationships/account-tags:
    get:
      tags:
      - Accounts
      summary: Get an Account's Tags Relationship
      operationId: GetAnAccountTagsRelationship
      description: Get a list of Account Tags on an Account
      parameters:
      - name: accountID
        in: path
        description: The ID of the account you want to retrieve.
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccountTagsRelationshipResponse'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '500':
          $ref: '#/components/responses/InternalServerError'
    post:
      tags:
      - Accounts
      summary: Add Account Tags
      operationId: AddAccountTagsOnAccount
      description: Add Account Tags onto an Account. Please note that after adding a tag to an account, the account member token should be regenerated to reflect the updated account status, allowing other services to react accordingly. See [Account Management Authentication Token](/docs/api/accounts/post-v-2-account-members-tokens).
      parameters:
      - name: accountID
        in: path
        description: The ID of the account you want to retrieve.
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddAccountTagsOnAccount'
            examples:
              Add Example:
                summary: Add an Account Tag
                value:
                  data:
                  - type: account_tag
                    id: 030693ce-39ad-4f4c-9941-d2d596478e94
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccountTagsRelationshipResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '409':
          $ref: '#/components/responses/ConflictError'
        '500':
          $ref: '#/components/responses/InternalServerError'
    delete:
      tags:
      - Accounts
      summary: Remove Account Tags
      operationId: RemoveAccountTagsOnAccount
      description: Remove Account Tags from an Account. Please note that after removing a tag from an account, the account member token should be regenerated to reflect the updated status, allowing other services to react accordingly. See [Account Management Authentication Token](/docs/api/accounts/post-v-2-account-members-tokens).
      parameters:
      - name: accountID
        in: path
        description: The ID of the account you want to retrieve.
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RemoveAccountTagsOnAccount'
            examples:
              Remove Example:
                summary: Remove an Account Tag
                value:
                  data:
                  - type: account_tag
                    id: 030693ce-39ad-4f4c-9941-d2d596478e94
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccountTagsRelationshipResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '500':
          $ref: '#/components/responses/InternalServerError'
components:
  schemas:
    ReadOnlyParentId:
      type: object
      properties:
        parent_id:
          type:
          - string
          - 'null'
          format: uuid
          readOnly: true
          description: Specifies the ID of the parent account.
          example: 96b1f750-55d3-4768-a3f8-adffba694a2c
    Error:
      type: object
      required:
      - status
      - title
      properties:
        title:
          type: string
          description: A brief summary of the error.
          examples:
          - Bad Request
        status:
          type: string
          format: string
          description: The HTTP response code of the error.
          examples:
          - '400'
        detail:
          type: string
          description: Optional additional detail about the error.
          examples:
          - The field 'name' is required
    MetaListPage:
      type: object
      properties:
        limit:
          type: integer
          description: The maximum number of records per page for this response. You can set this value up to 100.
          example: 25
        current:
          type: integer
          description: The current page.
          example: 0
        offset:
          type: integer
          description: The current offset by number of records, not pages. Offset is zero-based.
          example: 0
        total:
          type: integer
          description: The total page count.
          example: 1
    ErrorResponse:
      type: object
      required:
      - errors
      properties:
        errors:
          type: array
          items:
            $ref: '#/components/schemas/Error'
    MetaTimestamps:
      type: object
      properties:
        timestamps:
          type: object
          properties:
            created_at:
              description: The date the resource is created.
              type: string
              example: '2021-02-23T09:40:33.882Z'
            updated_at:
              description: The date the resource is updated.
              type: string
              example: '2021-02-23T09:40:33.882Z'
    RemoveAccountTagsOnAccount:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/AccountTagsRelationshipIdentifier'
    WritableParentId:
      type: object
      properties:
        parent_id:
          type:
          - string
          - 'null'
          format: uuid
          description: Specifies the ID of the parent account, this field cannot be changed after creation.
          example: 96b1f750-55d3-4768-a3f8-adffba694a2c
    AccountResponse:
      allOf:
      - $ref: '#/components/schemas/Account'
      - $ref: '#/components/schemas/ReadOnlyParentId'
      - type: object
        properties:
          id:
            $ref: '#/components/schemas/UUID'
            description: The unique identifier for an Account.
          meta:
            $ref: '#/components/schemas/MetaTimestamps'
            description: Additional information for this realm. For more information, see [The meta object](https://elasticpath.dev/docs/commerce-cloud/accounts/using-account-management-api/account-management-api-overview#the-meta-object) section.
          relationships:
            type: object
            properties:
              account_tags:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          $ref: '#/components/schemas/UUID'
                          description: The unique identifier for an Account Tag.
                        type:
                          type: string
                          const: account_tag
                description: Tags associated with the account.
              ancestors:
                type: array
                items:
                  type: object
                  properties:
                    data:
                      type: object
                      properties:
                        id:
                          $ref: '#/components/schemas/UUID'
                          description: The unique identifier for an Account.
                        type:
                          type: string
                          const: account
                  description: All parent accounts in the hierarchy in sorted order (root first).
              parent:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      type:
                        type: string
                        const: account
                      id:
                        $ref: '#/components/schemas/UUID'
                        description: The unique identifier for an Account.
    AddAccountTagsOnAccount:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/AccountTagsRelationshipIdentifier'
    UUID:
      type: string
      description: The unique identifier.
      format: uuid
      x-go-type: uuid.UUID
      x-go-type-import:
        name: uuid
        path: github.com/google/uuid
      example: deb6b25f-8451-4211-9a22-95610333df23
    MetaList:
      type: object
      properties:
        page:
          $ref: '#/components/schemas/MetaListPage'
        results:
          $ref: '#/components/schemas/MetaListResults'
    AccountTagsRelationshipIdentifier:
      type: object
      properties:
        id:
          description: The unique identifier for the related Account Tag.
          type: string
          example: 652e39d8-d613-493e-8c20-fef99ad6327a
        type:
          description: Specifies the type of the resource object.
          type: string
          const: account_tag
    MetaListResults:
      type: object
      properties:
        total:
          type: integer
          description: The total number of results after applying filters, if any, or all results.
          example: 1
    Account:
      type: object
      properties:
        type:
          type: string
          description: Specifies the type of object. Set this value to `account`.
          const: account
        name:
          type: string
          description: Specifies the name of the account.
          example: acc-name
        legal_name:
          type:
          - string
          - 'null'
          description: Specifies the legal name of the account.
          example: acc-legal-name
        registration_id:
          type:
          - string
          - 'null'
          description: Specifies the registration ID. If specified, this field is checked for uniqueness.
          example: reg-id
        external_ref:
          type:
          - string
          - 'null'
          description: The unique attribute associated with the account. For example, this could be an external reference from a separate company system. The maximum length is 2048 characters. Default is `null`.
          example: ext-ref
      required:
      - type
      - name
    AccountTagsRelationshipResponse:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/AccountTagsRelationshipIdentifier'
        links:
          type: object
          properties:
            self:
              description: A URL to the specific resource.
              type: string
              example: https://useast.api.elasticpath.com/v2/accounts/deb6b25f-8451-4211-9a22-95610333df23/relationships/account-tags
  responses:
    NotFoundError:
      description: Not Found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            not-found-error:
              value:
                errors:
                - title: Not Found
                  status: '404'
                  detail: account not found
    ConflictError:
      description: Conflict
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            conflict-error:
              value:
                errors:
                - title: Conflict
                  status: '409'
                  detail: account membership with the given account id and account member id already exists
    UnprocessableEntity:
      description: Unprocessable Entity
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            unprocessable-entity:
              value:
                errors:
                - title: Unprocessable Entity
                  status: '422'
                  detail: store id mismatch
    InternalServerError:
      description: Internal server error.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            internal-server-error:
              summary: Internal server error
              value:
                errors:
                - title: Internal Server Error
                  status: '500'
                  detail: there was a problem processing your request
    UnauthorizedError:
      description: Unauthorized
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            unauthorized-error:
              value:
                errors:
                - title: Unauthorized
                  status: '401'
    BadRequestError:
      description: Bad Request
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            bad-request-error:
              value:
                errors:
                - title: Bad Request
                  status: '400'
                  detail: 'Validation failed: field ''Name'' on the ''min'' tag.'
  parameters:
    filter:
      name: filter
      in: query
      description: Specifies the filter attributes.
      required: false
      schema:
        type: string
        format: string
        example: ilike(name,"*swan*")
    page-limit:
      name: page[limit]
      in: query
      description: The number of records per page.
      required: false
      schema:
        type: integer
        format: int64
        minimum: 0
        example: 25
    page-offset:
      name: page[offset]
      in: query
      description: The number of records to offset the results by.
      required: false
      schema:
        type: integer
        format: int64
        minimum: 0
        maximum: 10000
        example: 10
  securitySchemes:
    BearerToken:
      type: http
      scheme: bearer