Slash Customer API

The Customer API from Slash — 3 operation(s) for customer.

OpenAPI Specification

slash-customer-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Slash Public Account Customer API
  description: API description
  version: 0.0.1
  contact: {}
servers:
- url: https://api.slash.com
  description: production
security:
- api_key: []
- partner_api_key: []
- bearer: []
- developer_application: []
tags:
- name: Customer
paths:
  /customer:
    x-reference-path: paths/customer/route.yaml
    get:
      description: List all customers for your legal entity. Customers represent billing recipients for invoices.
      parameters:
      - name: cursor
        required: false
        in: query
        schema:
          type: string
        description: A cursor string to fetch the next page of results
        x-reference-path: schemas/Pagination/CursorParameter.yaml
      - name: filter:legalEntityId
        description: Filter customers by legal entity ID. Required if authenticating via bearer token with access to multiple legal entities.
        in: query
        required: false
        schema:
          type: string
      - name: filter:name
        description: Filter customers by name (partial match).
        in: query
        required: false
        schema:
          type: string
      - name: filter:status
        description: Filter customers by status.
        in: query
        required: false
        schema:
          type: string
          enum:
          - active
          - archived
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/Customer'
                      x-entrypoint:
                        virtualPath: schemas/Customer
                        sourcePath: schemas/Customer.yaml
                        title: Customer
                        origin: ./src/publicApi
                  metadata:
                    $ref: '#/components/schemas/Pagination.PaginationResponse'
                    x-entrypoint:
                      virtualPath: schemas/Pagination/PaginationResponse
                      sourcePath: schemas/Pagination/PaginationResponse.yaml
                      title: PaginationResponse
                      origin: ./src/publicApi
                required:
                - items
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: TooManyRequests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
      - api_key: []
      - bearer: []
      tags:
      - Customer
    post:
      description: Create a new customer for your legal entity. Customers are used as invoice recipients.
      parameters:
      - name: filter:legalEntityId
        description: The legal entity ID. Required if authenticating with access to multiple legal entities.
        in: query
        required: false
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: Display name of the customer.
                email:
                  type: string
                  description: Email address of the customer.
                phone:
                  type: string
                  description: Phone number of the customer.
                address:
                  $ref: '#/components/schemas/slashfi.models.entity.IAddressModel.yaml'
                  x-entrypoint:
                    virtualPath: entity/IAddressModel
                    sourcePath: entity/IAddressModel.yaml
                    title: IAddressModel
                    origin: /home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas
                    globalImport: true
                    typescript:
                      importPath: import  * as models from '@slashfi/models';
                      symbolValue: models.entity.IAddressModel
                      typeValue: models.entity.IAddressModel
                customMetadata:
                  type: object
                  description: Custom metadata to associate with the customer.
                  additionalProperties: true
              required:
              - name
              - email
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  customer:
                    $ref: '#/components/schemas/Customer'
                    x-entrypoint:
                      virtualPath: schemas/Customer
                      sourcePath: schemas/Customer.yaml
                      title: Customer
                      origin: ./src/publicApi
                required:
                - customer
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: TooManyRequests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
      - api_key: []
      - bearer: []
      tags:
      - Customer
  /customer/{customerId}:
    x-reference-path: paths/customer/{customerId}/route.yaml
    get:
      description: Get a single customer by ID.
      parameters:
      - name: customerId
        in: path
        required: true
        schema:
          type: string
      - name: filter:legalEntityId
        description: The legal entity ID. Required if authenticating with access to multiple legal entities.
        in: query
        required: false
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  customer:
                    $ref: '#/components/schemas/Customer'
                    x-entrypoint:
                      virtualPath: schemas/Customer
                      sourcePath: schemas/Customer.yaml
                      title: Customer
                      origin: ./src/publicApi
                required:
                - customer
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: TooManyRequests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
      - api_key: []
      - bearer: []
      tags:
      - Customer
    patch:
      description: Update a customer's information.
      parameters:
      - name: customerId
        in: path
        required: true
        schema:
          type: string
      - name: filter:legalEntityId
        description: The legal entity ID. Required if authenticating with access to multiple legal entities.
        in: query
        required: false
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: Updated display name.
                email:
                  type: string
                  description: Updated email address.
                phone:
                  type: string
                  description: Updated phone number.
                address:
                  $ref: '#/components/schemas/slashfi.models.entity.IAddressModel.yaml'
                  x-entrypoint:
                    virtualPath: entity/IAddressModel
                    sourcePath: entity/IAddressModel.yaml
                    title: IAddressModel
                    origin: /home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas
                    globalImport: true
                    typescript:
                      importPath: import  * as models from '@slashfi/models';
                      symbolValue: models.entity.IAddressModel
                      typeValue: models.entity.IAddressModel
                customMetadata:
                  type: object
                  description: Updated custom metadata.
                  additionalProperties: true
                status:
                  type: string
                  description: Updated status.
                  enum:
                  - active
                  - archived
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  customer:
                    $ref: '#/components/schemas/Customer'
                    x-entrypoint:
                      virtualPath: schemas/Customer
                      sourcePath: schemas/Customer.yaml
                      title: Customer
                      origin: ./src/publicApi
                required:
                - customer
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: TooManyRequests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
      - api_key: []
      - bearer: []
      tags:
      - Customer
  /customer/{customerId}/ach-debit-recurring:
    x-reference-path: paths/customer/{customerId}/ach-debit-recurring/route.yaml
    get:
      description: Check whether a customer has an active recurring ACH debit authorization. When active, the issuer can automatically debit the payer's bank account for future invoices with auto-pull enabled.
      parameters:
      - name: customerId
        in: path
        required: true
        schema:
          type: string
      - name: filter:legalEntityId
        description: The legal entity ID. Required if authenticating with access to multiple legal entities.
        in: query
        required: false
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  hasActiveRecurringAuth:
                    type: boolean
                    description: Whether the customer has authorized recurring ACH debits.
                required:
                - hasActiveRecurringAuth
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: TooManyRequests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
      - api_key: []
      - bearer: []
      tags:
      - Customer
components:
  schemas:
    Error:
      type: object
      properties:
        message:
          type: string
        name:
          type: string
        identifier:
          type: string
        rawStatus:
          type: number
        meta:
          type: object
          additionalProperties: true
      required:
      - message
      - name
      - identifier
      - rawStatus
      x-entrypoint:
        origin: ./src/publicApi
        sourcePath: ./src/publicApi/main.yaml
        title: Error
        virtualPath: components/Error
      title: Error
    Customer:
      type: object
      description: A customer represents a billing recipient associated with a legal entity.
      properties:
        id:
          type: string
          description: Unique identifier for the customer.
        name:
          type: string
          description: Display name of the customer.
        email:
          type: string
          description: Email address of the customer.
        phone:
          type: string
          description: Phone number of the customer.
        address:
          type: object
          description: Address of the customer.
          additionalProperties: true
        customMetadata:
          type: object
          description: Custom metadata associated with the customer.
          additionalProperties: true
        status:
          type: string
          description: Status of the customer.
          enum:
          - active
          - archived
      required:
      - id
      - name
      - email
      - status
      x-entrypoint:
        virtualPath: schemas/Customer
        sourcePath: schemas/Customer.yaml
        title: Customer
        origin: ./src/publicApi
      title: Customer
    Pagination.PaginationResponse:
      type: object
      description: Response sent when requesting a list of data
      properties:
        nextCursor:
          type: string
          description: The cursor to use to retrieve the next page of data. If this is not sent, there is no more data to retrieve.
        count:
          type: number
          description: The number of items in the current page of data.
      x-entrypoint:
        virtualPath: schemas/Pagination/PaginationResponse
        sourcePath: schemas/Pagination/PaginationResponse.yaml
        title: PaginationResponse
        origin: ./src/publicApi
      title: PaginationResponse
    slashfi.models.entity.IAddressModel.yaml:
      title: IAddressModel
      type: object
      properties:
        addressLine:
          type: string
        addressLine2:
          type: string
        addressCity:
          type: string
        addressState:
          type: string
        addressZip:
          type: string
        addressCountry:
          type: string
          minLength: 2
          maxLength: 2
          description: ISO 3166-1 Alpha-2 Country Code (e.g., US, FR, UK, DE, ...).
      required:
      - addressLine
      - addressCity
      - addressState
      - addressZip
      x-entrypoint:
        virtualPath: entity/IAddressModel
        sourcePath: entity/IAddressModel.yaml
        title: IAddressModel
        origin: /home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas
        globalImport: true
  securitySchemes:
    api_key:
      type: apiKey
      description: "API key authentication for public API requests.\n\nKeys come in two flavors:\n\n- *Legal-entity-scoped keys* are pinned to a single legal entity.\n  Minted via the dashboard under a specific entity; every request\n  acts on that entity.\n- *User-scoped keys* are pinned to a user and span every legal\n  entity that user has access to. Every request made with a\n  user-scoped key (except `GET /legal-entity`, which lists the\n  legal entities the user can access) must include an\n  `x-legal-entity` header naming the legal entity the request is\n  operating on. Requests without the header are rejected with\n  `400`. The authenticated user must have an active permission\n  role on the supplied legal entity, otherwise the request is\n  rejected with `403`.\n"
      name: X-API-Key
      in: header
    partner_api_key:
      type: apiKey
      description: 'Partner-program API key authentication.


        Keys are minted in the partner dashboard (Developers → API Keys),

        are scoped to a single partner program, and are prefixed with

        `sk_partner_`. Partner keys are only accepted by routes that

        declare this scheme; they are rejected by `api_key` routes and

        vice versa.

        '
      name: X-API-Key
      in: header
    bearer:
      type: http
      scheme: bearer
    developer_application:
      type: http
      scheme: basic