GorillaDesk Customer API

The Customer API from GorillaDesk — 2 operation(s) for customer.

OpenAPI Specification

gorilladesk-customer-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: GorillaDesk Company Customer API
  description: '# Introduction

    The GorillaDesk API is organized around REST.


    Our API has predictable resource-oriented URLs, accepts JSON-encoded and form-encoded request bodies, returns JSON-encoded responses, and uses standard HTTP response codes, authentication, and verbs..


    # Authentication


    The GorillaDesk API uses Token authentication. API keys are per-company and can be generated and deleted in the [Addons page](https://beta.gorilladesk.com/addons/api).


    # Rate Limits


    We enforce API call rate limits to protect our infrastructure from excessive request rates, to keep GorillaDesk fast and stable for everyone. These limits are high enough that typical API workflows aren''t affected. However, please do code your integration to follow the rule below:


    **If you receive a response status code of 429 (Too Many Requests), please sleep/pause for the number of seconds specified by the rate_reset value before making additional requests to that endpoint.**



    Rate limits are enforced per endpoint group. Endpoint groups are used to provide more granular control by grouping endpoint URL paths and methods (e.g. GET, PUT, etc.) together. For instance, GETs to /v1/users/ and POSTs/PUTs to /v1/customers/ may be counted as two different API groups. This allows us to offer a higher limit on lightweight requests than we would be able to on more resource intensive request types.


    API responses will have the following headers to provide rate limiting statistics about the limit it''s closest to hitting.


    - `x-rate-limit-limit`: Request limit enforced for this endpoint, some endpoints may allow bursting over this limit

    - `x-rate-limit-remaining`: Requests left in the enforcement window

    - `x-rate-limit-reset`: Seconds remaining before this enforcement window ends (as a decimal).

    '
  x-logo:
    url: https://cdn.gorilladesk.com/assets/images/gorilladesk.png
    altText: GorillaDesk logo
servers:
- url: https://api.gorilladesk.com/v1
security:
- Bearer: []
tags:
- name: Customer
paths:
  /customers:
    get:
      summary: List all customers
      tags:
      - Customer
      parameters:
      - in: query
        name: state
        schema:
          type: array
          items:
            type: string
            enum:
            - active
            - deleted
        example: active,deleted
      - in: query
        name: status
        schema:
          type: array
          items:
            type: string
            enum:
            - active
            - inactive
            - lead
        example: active,inactive,lead
      - in: query
        name: account_number
        description: Return results where the account_number field is equal this value.
        schema:
          type: string
        example: '5000'
      - in: query
        name: created[gt]
        description: Return results where the created field is greater than this value.
        schema:
          type: string
          format: date-time
        example: '2023-05-21T17:32:28+00:00'
      - in: query
        name: created[gte]
        description: Return results where the created field is greater than or equal this value.
        schema:
          type: string
          format: date-time
        example: '2023-05-21T17:32:28+00:00'
      - in: query
        name: created[lt]
        description: Return results where the created field is less than this value.
        schema:
          type: string
          format: date-time
        example: '2023-05-21T17:32:28+00:00'
      - in: query
        name: created[lte]
        description: Return results where the created field is less than or equal this value.
        schema:
          type: string
          format: date-time
        example: '2023-05-21T17:32:28+00:00'
      - in: query
        name: updated[gt]
        description: Return results where the updated field is greater than this value.
        schema:
          type: string
          format: date-time
        example: '2023-05-21T17:32:28+00:00'
      - in: query
        name: updated[gte]
        description: Return results where the updated field is greater than or equal this value.
        schema:
          type: string
          format: date-time
        example: '2023-05-21T17:32:28+00:00'
      - in: query
        name: updated[lt]
        description: Return results where the updated field is less than this value.
        schema:
          type: string
          format: date-time
        example: '2023-05-21T17:32:28+00:00'
      - in: query
        name: updated[lte]
        description: Return results where the updated field is less than or equal this value.
        schema:
          type: string
          format: date-time
        example: '2023-05-21T17:32:28+00:00'
      - in: query
        name: include
        schema:
          type: array
          items:
            type: string
            enum:
            - locations
            - contacts
        example: locations,contacts
      - in: query
        name: sort
        description: Prefix -[field] sort order is descending.
        schema:
          type: array
          items:
            type: string
            enum:
            - account_number
            - last_name
            - first_name
            - created
            - updated
        example: account_number,last_name,-created
      - in: query
        name: limit
        schema:
          type: integer
          default: 20
          minimum: 1
          maximum: 100
      - in: query
        name: offset
        schema:
          type: integer
          default: 0
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/Customer'
                  has_more:
                    type: boolean
        '401':
          $ref: '#/paths/~1users/get/responses/401'
        '403':
          $ref: '#/paths/~1users/get/responses/403'
    post:
      summary: Create a customer
      tags:
      - Customer
      requestBody:
        content:
          application/json:
            schema:
              allOf:
              - $ref: '#/paths/~1customers~1%7BcustomerId%7D/put/requestBody/content/application~1json/schema'
              - type: object
                properties:
                  location:
                    $ref: '#/components/schemas/Location'
        required: true
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      id:
                        type: string
        '401':
          $ref: '#/paths/~1users/get/responses/401'
        '403':
          $ref: '#/paths/~1users/get/responses/403'
  /customers/{customerId}:
    get:
      summary: Retrieve a customer
      tags:
      - Customer
      parameters:
      - in: path
        name: customerId
        description: Customer Id
        required: true
        schema:
          type: string
      - in: query
        name: include
        schema:
          type: array
          items:
            type: string
            enum:
            - locations
            - contacts
        example: locations,contacts
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/Customer'
        '401':
          $ref: '#/paths/~1users/get/responses/401'
        '403':
          $ref: '#/paths/~1users/get/responses/403'
        '404':
          $ref: '#/paths/~1users~1%7BuserId%7D/get/responses/404'
    put:
      summary: Update a customer
      tags:
      - Customer
      parameters:
      - in: path
        name: customerId
        description: Customer Id
        required: true
        schema:
          type: string
      requestBody:
        description: Create a new pet in the store
        content:
          application/json:
            schema:
              type: object
              required:
              - first_name
              - location
              properties:
                account_number:
                  type: string
                  description: Must end with a number
                  example: '5047'
                first_name:
                  type: string
                  example: John
                last_name:
                  type: string
                  example: Doe
                status:
                  type: string
                  enum:
                  - active
                  - inactive
                  - lead
                  example: active
                email:
                  type: string
                  example: example@gmail.com
                phones:
                  type: array
                  items:
                    type: object
                    $ref: '#/components/schemas/CustomerPhone'
                company:
                  type: string
                  example: NL software
        required: true
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      id:
                        type: string
        '401':
          $ref: '#/paths/~1users/get/responses/401'
        '403':
          $ref: '#/paths/~1users/get/responses/403'
        '404':
          $ref: '#/paths/~1users~1%7BuserId%7D/get/responses/404'
components:
  schemas:
    Location:
      type: object
      required:
      - address_line_1
      - city
      - state
      - zip
      properties:
        id:
          type: string
          example: 5aXrGzNyLY
          readOnly: true
        name:
          type: string
          example: Home
        address_to:
          type: string
          example: John Doe
        address_line_1:
          type: string
          example: 523 East 72nd Street
        address_line_2:
          type: string
          example: ''
        city:
          type: string
          example: New York
        state:
          type: string
          example: NY
        zip:
          type: string
          example: '10021'
        county:
          type: string
          example: ''
        billing_to:
          type: string
          example: John Doe
        billing_address_line_1:
          type: string
          example: 523 East 72nd Street
        billing_address_line_2:
          type: string
          example: ''
        billing_city:
          type: string
          example: New York
        billing_state:
          type: string
          example: NY
        billing_zip:
          type: string
          example: '10021'
        latitude:
          type: string
          example: ''
        longitude:
          type: string
          example: ''
        note:
          type: string
          example: Lorem ipsum dolor sit amet, consectetuer adipiscing eliti
    Contact:
      type: object
      properties:
        id:
          type: string
          example: 5aXrGzNyLY
        first_name:
          type: string
          example: John
        last_name:
          type: string
          example: Doe
        email:
          type: string
          example: example@gmail.com
        phones:
          type: array
          items:
            type: object
            $ref: '#/components/schemas/CustomerPhone'
    CustomerPhone:
      type: object
      required:
      - phone
      - type
      properties:
        id:
          type: string
          description: Phone Id
          example: 0nk8PGvAO
        phone:
          type: string
          example: 212-456-7890
          description: Phone number
        type:
          type: string
          description: Phone type Id
          example: 0nk8PGvAO
    Customer:
      type: object
      properties:
        id:
          type: string
          description: The customer Id
          example: 0nk8PGvAO
        account_number:
          type: string
          description: Must end with a number
          example: '5047'
        last_name:
          type: string
          example: Doe
        first_name:
          type: string
          example: John
        profile_url:
          type: string
          example: https://v3.gorilladesk.com/customers/5393
        email:
          type: string
          example: example@gmail.com
        phones:
          type: array
          items:
            type: object
            $ref: '#/components/schemas/CustomerPhone'
        company:
          type: string
          example: NL software
        source:
          nullable: true
          type: object
          description: Where the customer originated. Null if no source is assigned.
          properties:
            id:
              type: string
              description: Source id.
              example: aWGl2VlY78
            name:
              type: string
              example: Facebook
        tags:
          type: array
          description: Customer-level tag labels attached to this customer.
          items:
            type: string
          example:
          - super
          - vip
        state:
          type: string
          enum:
          - active
          - deleted
          example: active
        status:
          type: string
          enum:
          - active
          - inactive
          - lead
          example: active
        created:
          type: string
          format: date-time
          example: '2023-05-21T17:32:28+00:00'
          description: Created date in ISO format
        updated:
          type: string
          format: date-time
          description: Updated date in ISO format
          example: '2023-05-21T17:32:28+00:00'
        locations:
          type: array
          items:
            type: object
            $ref: '#/components/schemas/Location'
        contacts:
          type: array
          items:
            type: object
            $ref: '#/components/schemas/Contact'
  securitySchemes:
    Bearer:
      type: http
      scheme: bearer