Leapsome goals API
The goals API from Leapsome — 6 operation(s) for goals.
Documentation
Documentation
https://api.leapsome.com/v1/api-docs/
Documentation
https://api.leapsome.com/scim/v1/api-docs/
The goals API from Leapsome — 6 operation(s) for goals.
openapi: 3.0.1
info:
version: 1.0.1
title: Leapsome absences goals API
contact:
name: Support
url: https://leapsome.zendesk.com
description: The Content API enables you to export some raw data from Leapsome for usage within your own systems and beyond what the Leapsome application offers natively. Usage is restricted to a maximum of 20 requests per second when making requests in parallel. If you exceed this limit, you will receive a 429 status code.
servers:
- url: https://api.leapsome.com/v1
tags:
- name: goals
paths:
/goals:
get:
summary: List goals
description: 'Setting multiple filters will result in a subset of goals that satisfy *all* constraints.
All filters except for `search` accept comma-separated values.
'
operationId: listGoals
security:
- bearerAuth: []
tags:
- goals
parameters:
- name: userId
in: query
required: false
description: select goals containing *any* of the userIds.
explode: false
schema:
type: array
items:
type: string
pattern: ^[0-9a-f]{24}$
example: 58d55e3ffdc2eb20547edd0a
- name: teamId
in: query
required: false
description: select goals containing *any* of the teamIds.
explode: false
schema:
type: array
items:
type: string
pattern: ^[0-9a-f]{24}$
example: 58d55e3ffdc2eb20547edd0a
- name: tagId
in: query
required: false
description: select goals containing *all* of the tagIds.
explode: false
schema:
type: array
items:
type: string
pattern: ^[0-9a-f]{24}$
example: 58d55e3ffdc2eb20547edd0a
- name: type
in: query
required: false
description: select goals that match by `type` to *any* of the types listed.
explode: false
schema:
type: array
items:
type: string
enum:
- company
- team
- user
- name: search
in: query
required: false
description: 'search on title, user name and team name fields. Special symbols must be URL-encoded.
Search is performed on a whole value of a text field, without splitting it into words
(e.g. search for `ark` will match `Marketing`).
'
schema:
type: string
- name: state
in: query
description: only include goals that match provided state
explode: false
schema:
type: array
items:
type: string
enum:
- live
- draft
- archived
- $ref: '#/components/parameters/limitParam'
- $ref: '#/components/parameters/cursorParam'
responses:
'200':
description: A paginated array of user goals
headers:
X-Next:
$ref: '#/components/headers/X-Next'
content:
application/json:
schema:
$ref: '#/components/schemas/PaginatedGoals'
examples:
example-1:
value:
meta:
count: 1
cursor: 58d55e3ffdc2eb20547edd0a
nextPage: string
data:
- id: 5b237f6868794d5c08555812
type: user
user:
id: 58d55e3ffdc2eb20547edd0a
email: example@example.com
fullName: John Doe
preferredName: John Doe
team:
id: 5b237f6868794d5c08555812
name: Rocket Scientists
name: Become a great place to work (d)
description: Make it entertaining
contributors:
- id: 58d55e3ffdc2eb20547edd0a
email: example@example.com
fullName: John Doe
preferredName: John Doe
progress: 50
status: live
managedBy:
id: 58d55e3ffdc2eb20547edd0a
email: example@example.com
fullName: John Doe
preferredName: John Doe
tags:
- id: 5b237f6868794d5c08555812
name: string
deadline: '2019-08-24T14:15:22Z'
keyResults:
- id: 5b237f6868794d5c08555812
name: Bring Glassdoor score up above 4
metric:
type: currency
start: 0
end: 1000
current: 650
weight: 30
ownerUser:
id: 58d55e3ffdc2eb20547edd0a
email: example@example.com
fullName: John Doe
preferredName: John Doe
ownerTeam:
id: 5b237f6868794d5c08555812
name: Engineer
parent:
_id: 5cb0855f0f089e6924b742e4
name: Enhance Employee Experience and Retention
status: live
progressStatus: onTrack
createdAt: '2019-08-23T11:53:06.741Z'
updatedAt: '2019-08-23T11:53:06.741Z'
/goals/tags:
get:
summary: get list of goal tags
operationId: listTags
security:
- bearerAuth: []
tags:
- goals
responses:
'200':
description: An array of goal tags
content:
application/json:
schema:
$ref: '#/components/schemas/Tags'
/goals/{goalId}:
get:
summary: Get goal details
operationId: getGoalDetails
parameters:
- in: path
name: goalId
required: true
schema:
type: string
pattern: ^[0-9a-f]{24}$
description: ID of the goal
security:
- bearerAuth: []
tags:
- goals
responses:
'200':
description: Goal details
content:
application/json:
schema:
$ref: '#/components/schemas/Goal'
/goals/{goalId}/comments:
get:
summary: get list of comments for a goal
operationId: listGoalComments
parameters:
- in: path
name: goalId
required: true
schema:
type: string
description: ID of the goal
security:
- bearerAuth: []
tags:
- goals
responses:
'200':
description: An array of goal comments ordered by creation date (descending)
content:
application/json:
schema:
$ref: '#/components/schemas/Comments'
/goals/{goalId}/key-results/{keyResultId}:
post:
summary: Update key result
operationId: updateKeyResult
parameters:
- in: path
name: goalId
required: true
schema:
type: string
pattern: ^[0-9a-f]{24}$
description: ID of the goal
- in: path
name: keyResultId
required: true
schema:
type: string
pattern: ^[0-9a-f]{24}$
description: ID of the key result
security:
- bearerAuth: []
tags:
- goals
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/KeyResultUpdate'
responses:
'200':
description: Updated goal
content:
application/json:
schema:
$ref: '#/components/schemas/Goal'
/goals/{goalId}/initiatives/{initiativeId}:
post:
summary: Update initiative
operationId: updateInitiative
parameters:
- in: path
name: goalId
required: true
schema:
type: string
pattern: ^[0-9a-f]{24}$
description: ID of the goal
- in: path
name: initiativeId
required: true
schema:
type: string
pattern: ^[0-9a-f]{24}$
description: ID of the initiative
security:
- bearerAuth: []
tags:
- goals
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/InitiativeUpdate'
responses:
'200':
description: Updated goal
content:
application/json:
schema:
$ref: '#/components/schemas/Goal'
components:
schemas:
User:
type: object
required:
- id
- email
- fullName
properties:
id:
type: string
pattern: ^[0-9a-f]{24}$
example: 58d55e3ffdc2eb20547edd0a
email:
type: string
format: email
example: example@example.com
fullName:
type: string
example: John Doe
preferredName:
type: string
example: John von Doe (Full name)
ParentGoal:
type: object
nullable: true
properties:
_id:
type: string
pattern: ^[0-9a-f]{24}$
example: 5cb0855f0f089e6924b742e4
name:
type: string
example: Enhance Employee Experience and Retention
status:
type: string
enum:
- live
- draft
- archived
example: live
PaginatedGoals:
type: object
properties:
meta:
$ref: '#/components/schemas/Meta'
data:
type: array
items:
$ref: '#/components/schemas/Goal'
Tag:
type: object
required:
- id
- name
- status
- createdAt
- updatedAt
properties:
id:
type: string
pattern: ^[0-9a-f]{24}$
example: 5b237f6868794d5c08555812
name:
type: string
example: Marketing
status:
type: string
enum:
- active
- viewOnly
- removed
createdAt:
type: string
format: date-time
example: '2019-08-23T11:53:06.741Z'
updatedAt:
type: string
format: date-time
example: '2019-08-23T11:53:06.741Z'
KeyResultUpdate:
type: object
properties:
name:
type: string
example: Bring Glassdoor score up above 4
metric:
type: object
required:
- type
- start
- end
- current
properties:
type:
type: string
enum:
- none
- numerical
- percentage
- currency
start:
type: integer
end:
type: integer
current:
type: integer
weight:
type: integer
minimum: 0
maximum: 100
Goal:
type: object
required:
- id
- type
- name
- description
- contributors
- progress
- status
- managedBy
- tags
- deadline
- keyResults
- parent
- createdAt
- updatedAt
properties:
id:
type: string
pattern: ^[0-9a-f]{24}$
example: 5b237f6868794d5c08555812
type:
type: string
enum:
- user
- team
- company
example: user
user:
allOf:
- $ref: '#/components/schemas/User'
- nullable: true
description: 'Information about the user, who''s assigned to this goal.
Will be `null` for Team and Company goals.
'
team:
type: object
nullable: true
description: 'Information about the team, that''s assigned to this goal.
Will be `null` for User and Company goals.
'
properties:
id:
type: string
pattern: ^[0-9a-f]{24}$
example: 5b237f6868794d5c08555812
name:
type: string
example: Rocket Scientists
name:
type: string
example: Become a great place to work (d)
description:
type: string
example: Make it entertaining
contributors:
type: array
items:
$ref: '#/components/schemas/User'
progress:
type: integer
minimum: 0
maximum: 100
example: 50
status:
type: string
enum:
- archived
- live
- draft
- removed
example: live
managedBy:
$ref: '#/components/schemas/User'
tags:
type: array
items:
type: object
required:
- id
- name
properties:
id:
type: string
pattern: ^[0-9a-f]{24}$
example: 5b237f6868794d5c08555812
name:
type: string
deadline:
type: string
format: date-time
nullable: true
keyResults:
type: array
items:
$ref: '#/components/schemas/KeyResults'
parent:
$ref: '#/components/schemas/ParentGoal'
progressStatus:
type: string
enum:
- onTrack
- offTrack
- inputNeeded
- done
- canceled
nullable: true
createdAt:
type: string
format: date-time
example: '2019-08-23T11:53:06.741Z'
updatedAt:
type: string
format: date-time
example: '2019-08-23T11:53:06.741Z'
KeyResults:
type: object
required:
- id
- name
- metric
- weight
- ownerTeam
- ownerUser
- contributors
- contributorTeams
properties:
id:
type: string
pattern: ^[0-9a-f]{24}$
example: 5b237f6868794d5c08555812
name:
type: string
example: Bring Glassdoor score up above 4
metric:
type: object
required:
- type
- start
- end
- current
properties:
type:
type: string
example: currency
enum:
- none
- numerical
- percentage
- currency
start:
type: integer
end:
type: integer
current:
type: integer
weight:
type: integer
minimum: 0
maximum: 100
example: 30
ownerUser:
$ref: '#/components/schemas/User'
ownerTeam:
type: object
properties:
id:
type: string
pattern: ^[0-9a-f]{24}$
example: 5b237f6868794d5c08555812
name:
type: string
example: Engineer
contributors:
type: array
items:
$ref: '#/components/schemas/User'
contributorTeams:
type: array
items:
type: object
properties:
id:
type: string
pattern: ^[0-9a-f]{24}$
example: 5b237f6868794d5c08555812
name:
type: string
example: Engineer
Comment:
type: object
required:
- id
- content
- sender
- createdAt
- updatedAt
properties:
id:
type: string
content:
type: string
description: The comment body which can contain html tags
sender:
type: object
required:
- id
- firstname
- lastname
- picture
properties:
id:
type: string
firstname:
type: string
lastname:
type: string
picture:
type: string
format: url
createdAt:
type: string
format: date-time
example: '2019-08-23T11:53:06.741Z'
updatedAt:
type: string
format: date-time
example: '2019-08-23T11:53:06.741Z'
Meta:
type: object
required:
- count
- cursor
- nextPage
properties:
count:
type: integer
description: number of results returned in this request
minimum: 1
maximum: 1000
cursor:
type: string
description: 'Will be set to `null` if complete set have been returned.
'
pattern: ^[0-9a-f]{24}$
example: 58d55e3ffdc2eb20547edd0a
nullable: true
nextPage:
type: string
format: url
description: URL of the next result page. `null` means no more results available.
nullable: true
Comments:
type: object
required:
- data
properties:
data:
type: array
items:
$ref: '#/components/schemas/Comment'
InitiativeUpdate:
type: object
properties:
name:
type: string
description:
type: string
status:
type: string
enum:
- notStarted
- inProgress
- completed
- blocked
Tags:
type: array
items:
$ref: '#/components/schemas/Tag'
parameters:
limitParam:
name: limit
in: query
description: Maximal number of results in a response
schema:
type: integer
minimum: 1
maximum: 1000
default: 100
cursorParam:
name: cursor
in: query
required: false
description: 'Start showing results from this location. Typically, you do not
need to set this parameter manually, it is mainly used in
"x-next" header
'
schema:
type: string
pattern: ^[0-9a-f]{24}$
headers:
X-Next:
description: A link to the next page of responses
schema:
type: string
format: url
example: https://api.leapsome.com/v1/goals?cursor=58d55e3ffdc2eb20547edd0a&limit=100
securitySchemes:
bearerAuth:
type: http
scheme: bearer
bearerFormat: JWT