Abacus Members API

Member management operations for inviting and managing expense users

OpenAPI Specification

abacus-members-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Abacus Authentication Members API
  version: 1.0.0
  description: The Abacus API (now part of Emburse Spend) provides programmatic access to expense management functionality, including member management and expense operations. Available to partners and enterprise customers using OAuth 2.0 authentication. The API enables third-party integrations with the Abacus expense platform for automating expense workflows, member provisioning, and data synchronization.
  contact:
    name: Abacus Support
    url: https://support.abacus.com/hc/en-us
  x-generated-from: documentation
servers:
- url: https://api.abacus.com
  description: Production server
security:
- OAuth2: []
tags:
- name: Members
  description: Member management operations for inviting and managing expense users
paths:
  /members:
    get:
      tags:
      - Members
      summary: Abacus List Members
      description: Retrieve a list of all members in the organization.
      operationId: listMembers
      parameters:
      - name: page
        in: query
        description: Page number for pagination
        required: false
        schema:
          type: integer
          default: 1
        example: 1
      - name: per_page
        in: query
        description: Number of results per page
        required: false
        schema:
          type: integer
          default: 25
          maximum: 100
        example: 25
      responses:
        '200':
          description: List of members retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MemberListResponse'
              examples:
                ListMembers200Example:
                  summary: Default listMembers 200 response
                  x-microcks-default: true
                  value:
                    members:
                    - id: '500123'
                      email: jsmith@example.com
                      first_name: Jane
                      last_name: Smith
                      status: active
                      role: employee
                    total: 1
                    page: 1
                    per_page: 25
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '403':
          $ref: '#/components/responses/ForbiddenError'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
    post:
      tags:
      - Members
      summary: Abacus Invite Member
      description: Invite a new member to the organization. Sends an invitation email to the specified address.
      operationId: inviteMember
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InviteMemberRequest'
            examples:
              InviteMemberRequestExample:
                summary: Default inviteMember request
                x-microcks-default: true
                value:
                  email: newuser@example.com
                  first_name: John
                  last_name: Doe
                  role: employee
      responses:
        '201':
          description: Member invited successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Member'
              examples:
                InviteMember201Example:
                  summary: Default inviteMember 201 response
                  x-microcks-default: true
                  value:
                    id: '500456'
                    email: newuser@example.com
                    first_name: John
                    last_name: Doe
                    status: invited
                    role: employee
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '403':
          $ref: '#/components/responses/ForbiddenError'
        '409':
          description: Member already exists
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /members/{member_id}:
    get:
      tags:
      - Members
      summary: Abacus Get Member
      description: Retrieve details for a specific member by their ID.
      operationId: getMember
      parameters:
      - $ref: '#/components/parameters/MemberId'
      responses:
        '200':
          description: Member details retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Member'
              examples:
                GetMember200Example:
                  summary: Default getMember 200 response
                  x-microcks-default: true
                  value:
                    id: '500123'
                    email: jsmith@example.com
                    first_name: Jane
                    last_name: Smith
                    status: active
                    role: employee
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '404':
          $ref: '#/components/responses/NotFoundError'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
    put:
      tags:
      - Members
      summary: Abacus Update Member
      description: Update details for an existing member.
      operationId: updateMember
      parameters:
      - $ref: '#/components/parameters/MemberId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateMemberRequest'
            examples:
              UpdateMemberRequestExample:
                summary: Default updateMember request
                x-microcks-default: true
                value:
                  role: manager
                  department: Engineering
      responses:
        '200':
          description: Member updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Member'
              examples:
                UpdateMember200Example:
                  summary: Default updateMember 200 response
                  x-microcks-default: true
                  value:
                    id: '500123'
                    email: jsmith@example.com
                    first_name: Jane
                    last_name: Smith
                    status: active
                    role: manager
                    department: Engineering
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '404':
          $ref: '#/components/responses/NotFoundError'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /members/{member_id}/suspend:
    post:
      tags:
      - Members
      summary: Abacus Suspend Member
      description: Suspend a member from the organization, preventing them from submitting expenses.
      operationId: suspendMember
      parameters:
      - $ref: '#/components/parameters/MemberId'
      responses:
        '200':
          description: Member suspended successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Member'
              examples:
                SuspendMember200Example:
                  summary: Default suspendMember 200 response
                  x-microcks-default: true
                  value:
                    id: '500123'
                    email: jsmith@example.com
                    first_name: Jane
                    last_name: Smith
                    status: suspended
                    role: employee
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '404':
          $ref: '#/components/responses/NotFoundError'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
components:
  schemas:
    Member:
      type: object
      description: An organization member with expense management access
      properties:
        id:
          type: string
          description: Unique member identifier
          example: '500123'
        email:
          type: string
          description: Member email address
          example: jsmith@example.com
        first_name:
          type: string
          description: Member first name
          example: Jane
        last_name:
          type: string
          description: Member last name
          example: Smith
        status:
          type: string
          description: Current member status
          enum:
          - active
          - invited
          - suspended
          example: active
        role:
          type: string
          description: Member role in the organization
          enum:
          - employee
          - manager
          - admin
          example: employee
        department:
          type: string
          description: Department the member belongs to
          example: Engineering
        created_at:
          type: string
          format: date-time
          description: Timestamp when the member was created
          example: '2025-01-15T09:00:00Z'
    MemberListResponse:
      type: object
      description: Paginated list of members
      properties:
        members:
          type: array
          items:
            $ref: '#/components/schemas/Member'
        total:
          type: integer
          description: Total number of members
          example: 125
        page:
          type: integer
          description: Current page number
          example: 1
        per_page:
          type: integer
          description: Number of results per page
          example: 25
    Error:
      type: object
      description: Error response
      properties:
        error:
          type: string
          description: Error code
          example: invalid_request
        message:
          type: string
          description: Human-readable error message
          example: The request is missing required parameters
    InviteMemberRequest:
      type: object
      description: Request body for inviting a new member
      required:
      - email
      - first_name
      - last_name
      properties:
        email:
          type: string
          description: Email address for the new member
          example: newuser@example.com
        first_name:
          type: string
          description: First name of the new member
          example: John
        last_name:
          type: string
          description: Last name of the new member
          example: Doe
        role:
          type: string
          description: Role to assign to the new member
          enum:
          - employee
          - manager
          - admin
          default: employee
          example: employee
        department:
          type: string
          description: Department to assign the new member to
          example: Engineering
    UpdateMemberRequest:
      type: object
      description: Request body for updating an existing member
      properties:
        role:
          type: string
          description: New role for the member
          enum:
          - employee
          - manager
          - admin
          example: manager
        department:
          type: string
          description: New department for the member
          example: Engineering
        status:
          type: string
          description: New status for the member
          enum:
          - active
          - suspended
          example: active
  responses:
    UnauthorizedError:
      description: Authentication required or failed
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: unauthorized
            message: Invalid or missing access token
    NotFoundError:
      description: Resource not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: not_found
            message: The requested resource was not found
    BadRequestError:
      description: Invalid request parameters
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: bad_request
            message: Invalid email address format
    ForbiddenError:
      description: Insufficient permissions for this operation
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: forbidden
            message: You do not have permission to perform this action
  parameters:
    MemberId:
      name: member_id
      in: path
      required: true
      description: Unique identifier for the member
      schema:
        type: string
      example: '500123'
  securitySchemes:
    OAuth2:
      type: oauth2
      description: OAuth 2.0 client credentials flow for API authentication
      flows:
        clientCredentials:
          tokenUrl: https://api.abacus.com/oauth/token
          scopes:
            members:read: Read member information
            members:write: Create and update members
            expenses:read: Read expense reports