GorillaDesk Company API
Retrieve the account/company details tied to the authenticating API key. Endpoint - GET /company.
Retrieve the account/company details tied to the authenticating API key. Endpoint - GET /company.
openapi: 3.0.3
info:
title: GorillaDesk 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: []
components:
schemas:
Company:
type: object
properties:
name:
type: string
example: Pest Control
email:
type: string
example: pestcontrol@gmail.com
phone:
type: string
example: (+1)202-555-0156
website:
type: string
example: pestcontrol.com
address:
type: string
example: 12 Norman Stretton Road
city:
type: string
example: Deridder
state:
type: string
example: LA
zip:
type: string
example: '30634'
timezone:
type: string
example: America/Los_Angeles
office_hours:
type: object
properties:
start:
type: string
example: '07:00:00'
end:
type: string
example: '18:00:00'
User:
type: object
properties:
id:
type: string
example: 0nk8PGvAO
username:
type: string
example: johndoe
first_name:
type: string
example: John
last_name:
type: string
example: Doe
role:
type: string
enum:
- super_admin
- admin
- technician
example: super_admin
license:
type: string
example: '#91161'
email:
type: string
example: example@gmail.com
avatar:
type: string
example: 'https://d2e627ktfmb6xb.cloudfront.net/avatars/static/avatar_1.jpg'
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'
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
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'
PhoneType:
type: object
properties:
id:
type: string
example: 0nk8PGvAO
name:
type: string
example: Mobile
is_default:
type: boolean
example: true
state:
type: string
enum:
- active
- deleted
example: active
securitySchemes:
Bearer:
type: http
scheme: bearer
paths:
/company:
get:
summary: Retrieve company
tags:
- Company
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/Company'
'401':
$ref: '#/paths/~1users/get/responses/401'
/users:
get:
summary: List all users
tags:
- User
parameters:
- 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/User'
has_more:
type: boolean
'401':
description: Unauthorized error
'403':
description: Bad Request
content:
application/json:
schema:
type: object
required:
- error
- message
properties:
error:
type: object
nullable: true
message:
type: string
'/users/{userId}':
get:
summary: Retrieve a user
tags:
- User
parameters:
- in: path
name: userId
description: User Id
required: true
schema:
type: string
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/User'
'401':
$ref: '#/paths/~1users/get/responses/401'
'404':
description: Not Found
/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'
/phone-types:
get:
summary: List all phone types
tags:
- Phone Type
parameters:
- 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/PhoneType'
has_more:
type: boolean
'401':
$ref: '#/paths/~1users/get/responses/401'
'403':
$ref: '#/paths/~1users/get/responses/403'
'/customers/{customerId}/notes':
post:
summary: Create a customer note
tags:
- Note
parameters:
- in: path
name: customerId
description: Customer Id
required: true
schema:
type: string
requestBody:
content:
multipart/form-data:
schema:
type: object
required:
- content
properties:
content:
type: string
example: 'Lorem, ipsum dolor sit amet consectetur adipisicing elit'
notify_users:
type: array
description: List of user Ids
items:
type: string
example: jVepBjQp0E
attachments:
type: array
description: |
Files to upload.
Accepted file types: image, audio, video, pdf.
Limit to 5 files and maximum 10MB per file.
items:
type: string
format: binary
required: true
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
id:
type: string
example: 5aXrGzNyLY
'401':
$ref: '#/paths/~1users/get/responses/401'
'403':
$ref: '#/paths/~1users/get/responses/403'
'404':
$ref: '#/paths/~1users~1%7BuserId%7D/get/responses/404'