node-spark
Version:
Cisco Spark API for Node JS
1,398 lines (1,397 loc) • 37.4 kB
YAML
swagger: '2.0'
info:
title: Spark API
version: "1.2.6"
description: Cisco Spark API version 1 Swagger Definition File.
termsOfService: https://developer.ciscospark.com/tos.html
externalDocs:
url: https://developer.ciscospark.com
host: api.ciscospark.com
schemes:
- https
basePath: /v1
produces:
- application/json
consumes:
- application/json
securityDefinitions:
Token:
type: apiKey
name: Authorization
in: header
description: Swagger Authentication with Bearer Token requires Token to be entered as 'Bearer <token>'.
security:
- Token: []
tags:
- name: people
description: Query, Create, Update, and Delete Spark Users.
- name: rooms
description: Query, Create, Update, and Delete Spark Rooms.
- name: memberships
description: Query, Create, Update, and Delete Spark Room Memberships.
- name: messages
description: Query, Create, and Delete Spark Messages.
- name: teams
description: Query, Create, Update, and Delete Spark Teams.
- name: teamMemberships
description: Query, Create, Update, and Delete Spark Team Memberships.
- name: webhooks
description: Query, Create, Update, and Delete Spark Webhooks.
- name: organizations
description: Query Organizations.
- name: licenses
description: Query Licenses.
- name: roles
description: Query Roles.
- name: contents
description: Retrieve Files.
paths:
/people/:
get:
operationId: getPeople
summary: Search people by email address or display name.
description: Search people by email address or display name. Returns array of Person objects.
tags:
- people
parameters:
- name: id
in: query
description: Person ID.
required: false
type: string
- name: email
in: query
description: Email address.
required: false
type: string
format: email
- name: displayName
in: query
description: Person display name.
required: false
type: string
- $ref: '#/parameters/Max'
responses:
200:
$ref: '#/responses/People'
post:
operationId: addPerson
summary: Create a Person for a given organization.
description: Create a Person for a given organization. Returns Person object. Only an admin can create a new user account.
tags:
- people
parameters:
- name: body
in: body
required: true
schema:
type: object
required:
- emails
- displayName
properties:
emails:
description: Array of emails.
type: array
items:
type: string
format: email
displayName:
description: Person display name.
type: string
firstName:
description: Person first name.
type: string
lastName:
description: Person last name.
type: string
avatar:
description: Person avatar URL.
type: string
format: url
orgId:
description: Organization ID of Person.
type: string
roles:
description: Array of Role IDs.
type: array
items:
type: string
licenses:
description: Array of License IDs.
type: array
items:
type: string
responses:
200:
$ref: '#/responses/Person'
/people/{personId}:
get:
operationId: getPerson
summary: Shows details for a person.
description: Shows details for a person by ID. Returns Person object.
tags:
- people
parameters:
- name: personId
in: path
description: Person ID.
required: true
type: string
responses:
200:
$ref: '#/responses/Person'
put:
operationId: updatePerson
summary: Update details for a person.
description: Update details for a person by ID. Returns Person object. Only an admin can update person details.
tags:
- people
parameters:
- name: personId
in: path
description: Person ID.
required: true
type: string
- name: body
in: body
required: true
schema:
type: object
required:
- emails
- displayName
- orgId
- roles
- licenses
properties:
emails:
description: Array of emails.
type: array
items:
type: string
format: email
displayName:
description: Person display name.
type: string
firstName:
description: Person first name.
type: string
lastName:
description: Person last name.
type: string
avatar:
description: URL of Person avatar.
type: string
format: url
orgId:
description: Organization ID of Person.
type: string
roles:
description: Array of Role IDs of Person.
type: array
items:
type: string
licenses:
description: Array of License IDs of Person.
type: array
items:
type: string
responses:
200:
$ref: '#/responses/Person'
delete:
operationId: deletePerson
summary: Delete a Person.
description: Delete a Person by ID. Only an admin can remove a person.
tags:
- people
parameters:
- name: personId
in: path
description: Person ID.
required: true
type: string
responses:
204:
description: Successful response.
/people/me:
get:
operationId: getMe
summary: Get the authenticated user.
description: Get the authenticated user. Returns a Person object.
tags:
- people
responses:
200:
$ref: '#/responses/Person'
/rooms/:
get:
operationId: getRooms
summary: Get Rooms of which authenticated user belongs.
description: Get Rooms of which authenticated user belongs. Returns array of Room objects. Optionally filter by Team ID or Room type. Room type can either be 'group' or 'direct'.
tags:
- rooms
parameters:
- name: teamId
in: query
description: Team ID.
required: false
type: string
- name: type
in: query
description: Room type.
required: false
type: string
pattern: '(group|direct)'
- $ref: '#/parameters/Max'
responses:
200:
$ref: '#/responses/Rooms'
post:
operationId: createRoom
summary: Create a Room.
description: Create a room. Returns Room object. The authenticated user is automatically added as a member of the room. See the Memberships API to learn how to add more people to the room.
tags:
- rooms
parameters:
- name: body
in: body
required: true
schema:
type: object
required:
- title
properties:
title:
description: Room title.
type: string
teamId:
description: Room Team ID.
type: string
responses:
200:
$ref: '#/responses/Room'
/rooms/{roomId}:
get:
operationId: getRoom
summary: Shows details for a specific Room.
description: Shows details for a specific Room by ID. Returns Room object by ID Query.
tags:
- rooms
parameters:
- name: roomId
in: path
description: Room ID.
required: true
type: string
responses:
200:
$ref: '#/responses/Room'
put:
operationId: updateRoom
summary: Update a Room.
description: Update a Room by ID. Returns Room object.
tags:
- rooms
parameters:
- name: roomId
in: path
description: Room ID.
required: true
type: string
- name: body
in: body
required: true
schema:
type: object
required:
- title
properties:
title:
description: Room title.
type: string
responses:
200:
$ref: '#/responses/Room'
delete:
operationId: deleteRoom
summary: Delete a Room.
description: Delete a room, by ID.
tags:
- rooms
parameters:
- name: roomId
in: path
description: Room ID.
required: true
type: string
responses:
204:
description: Successful response
/memberships/:
get:
operationId: getMemberships
summary: Get all room memberships.
description: Get all room memberships. Returns array of Membership objects. By default, lists memberships for rooms to which the authenticated user belongs. Optionally can be targeted at a specific Room ID. Optionally can be filtered by either personId or personEmail.
tags:
- memberships
parameters:
- name: roomId
in: query
description: Room ID.
required: false
type: string
- name: personId
in: query
description: Person ID.
required: false
type: string
- name: personEmail
in: query
description: Person email.
required: false
type: string
format: email
- $ref: '#/parameters/Max'
responses:
200:
$ref: '#/responses/Memberships'
post:
operationId: createMembership
summary: Create a Room Membership.
description: Create a Room Membership in a Room by ID. Specifcy the membership target by Person ID or Email. Returns Membership object.
tags:
- memberships
parameters:
- name: body
in: body
required: true
schema:
type: object
required:
- roomId
properties:
roomId:
description: Room ID.
type: string
personId:
description: Person ID.
type: string
personEmail:
description: Person email.
type: string
format: email
isModerator:
description: Membership is a moderator.
type: boolean
responses:
200:
$ref: '#/responses/Membership'
/memberships/{membershipId}:
get:
operationId: getMembership
summary: Get details for a membership.
description: Get details for a membership by ID. Returns Membership object.
tags:
- memberships
parameters:
- name: membershipId
in: path
description: Membership ID.
required: true
type: string
responses:
200:
$ref: '#/responses/Membership'
put:
operationId: updateMembership
summary: Update a Membership.
description: Update a Membership by ID. Returns Membership object.
tags:
- memberships
parameters:
- name: membershipId
in: path
description: Membership ID.
required: true
type: string
- name: body
in: body
required: true
schema:
type: object
required:
- isModerator
properties:
isModerator:
description: Membership is a moderator.
type: boolean
responses:
200:
$ref: '#/responses/Membership'
delete:
operationId: deleteMembership
summary: Delete a Membership.
description: Delete a membership by ID.
tags:
- memberships
parameters:
- name: membershipId
in: path
description: Membership ID.
required: true
type: string
responses:
204:
description: Successful response.
/messages/:
get:
operationId: getMessages
summary: Get all messages in a room.
description: Get all messages in a room by ID. Returns array of Message objects.
tags:
- messages
parameters:
- name: roomId
in: query
description: Room ID.
required: true
type: string
- name: mentionedPeople
in: query
description: Person ID.
required: false
type: string
- name: before
in: query
description: Marker date/time.
required: false
type: string
format: date-time
- name: beforeMessage
in: query
description: Marker Message ID.
required: false
type: string
- $ref: '#/parameters/Max'
responses:
200:
$ref: '#/responses/Messages'
post:
operationId: createMessage
summary: Create a Message.
description: Create a Message. Returns Message object. Optionally, specify the message as text or markdown and include an attachment.
tags:
- messages
parameters:
- name: body
in: body
required: true
schema:
type: object
properties:
roomId:
description: Room ID.
type: string
toPersonId:
description: Person ID.
type: string
toPersonEmail:
description: Person Email.
type: string
format: email
text:
description: Message as plain text.
type: string
markdown:
description: Message as markdown.
type: string
html:
description: Message as html.
type: string
files:
description: File URL.
type: string
format: url
responses:
200:
$ref: '#/responses/Message'
/messages/{messageId}:
get:
operationId: getMessage
summary: Get a Message.
description: Get a Message by ID. Returns Message object.
tags:
- messages
parameters:
- name: messageId
in: path
description: Message ID.
required: true
type: string
responses:
200:
$ref: '#/responses/Message'
delete:
operationId: deleteMessage
summary: Delete a Message.
description: Deletes a message by ID.
tags:
- messages
parameters:
- name: messageId
in: path
description: Message ID.
required: true
type: string
responses:
204:
description: Successful response.
/teams/:
get:
operationId: getTeams
summary: Get Teams.
description: Get Teams to which the authenticated user belongs. Returns array of Team objects.
tags:
- teams
parameters:
- $ref: '#/parameters/Max'
responses:
200:
$ref: '#/responses/Teams'
post:
operationId: createTeam
summary: Create a Team.
description: Create a Team. Returns Team object. The authenticated user is automatically added as a member of the team. See the Team Memberships API to learn how to add more people to the team.
tags:
- teams
parameters:
- name: body
in: body
required: true
schema:
type: object
required:
- name
properties:
name:
description: Team name.
type: string
responses:
200:
$ref: '#/responses/Team'
/teams/{teamId}:
get:
operationId: getTeam
summary: Get Team.
description: Get Team by ID. Returns Team object.
tags:
- teams
parameters:
- name: teamId
in: path
description: Team ID.
required: true
type: string
responses:
200:
$ref: '#/responses/Team'
put:
operationId: updateTeam
summary: Update a Team.
description: Update a Team by ID. Returns Team object.
tags:
- teams
parameters:
- name: teamId
in: path
description: Team ID.
required: true
type: string
- name: body
in: body
required: true
schema:
type: object
required:
- name
properties:
name:
description: Team name.
type: string
responses:
200:
$ref: '#/responses/Team'
delete:
operationId: deleteTeam
summary: Delete a Team.
description: Delete a team by ID.
tags:
- teams
parameters:
- name: teamId
in: path
description: Team ID.
required: true
type: string
responses:
204:
description: Successful response.
/team/memberships/:
get:
operationId: getTeamMemberships
summary: Get Team Memberships.
description: Get Team Memberships by ID. Returns array of TeamMembership objects. If Team ID is not specified, lists memberships for teams to which the authenticated user belongs.
tags:
- teamMemberships
parameters:
- name: teamId
in: query
description: Team ID.
required: true
type: string
- $ref: '#/parameters/Max'
responses:
200:
$ref: '#/responses/TeamMemberships'
post:
operationId: createTeamMembership
summary: Create a Team Membership. Returns TeamMembership object.
description: Create a Team Membership by Person ID or email address. Returns TeamMembership object. Optionally make membership a moderator.
tags:
- teamMemberships
parameters:
- name: body
in: body
required: true
schema:
type: object
required:
- teamId
properties:
teamId:
description: Team ID.
type: string
personId:
description: Person ID.
type: string
personEmail:
description: Person Email.
type: string
format: email
isModerator:
description: Team Membership is a moderator.
type: boolean
responses:
200:
$ref: '#/responses/TeamMembership'
/team/memberships/{membershipId}:
get:
operationId: getTeamMembership
summary: Get Team Memberships.
description: Get Team Memberships. Returns TeamMembership object.
tags:
- teamMemberships
parameters:
- name: membershipId
in: path
description: Membership ID.
required: true
type: string
responses:
200:
$ref: '#/responses/TeamMembership'
put:
operationId: updateTeamMembership
summary: Update a Team Membership.
description: UUpdate a Team Membership by ID. Returns TeamMembership object.
tags:
- teamMemberships
parameters:
- name: membershipId
in: path
description: Membership ID.
required: true
type: string
- name: body
in: body
required: true
schema:
type: object
required:
- isModerator
properties:
isModerator:
description: Team Membership is a moderator.
type: boolean
responses:
200:
$ref: '#/responses/TeamMembership'
delete:
operationId: deleteTeamMembership
summary: Delete a Team Membership.
description: Delete a Team Membership by ID.
tags:
- teamMemberships
parameters:
- name: membershipId
in: path
description: Membership ID.
required: true
type: string
responses:
204:
description: Successful response.
/webhooks/:
get:
operationId: getWebhooks
summary: Get Webhooks.
description: Get Webhooks. Returns an array of Webhook objects.
tags:
- webhooks
parameters:
- $ref: '#/parameters/Max'
responses:
200:
$ref: '#/responses/Webhooks'
post:
operationId: createWebhook
summary: Create a Webhook.
description: Create a webhook. Returns a Webhook object.
tags:
- webhooks
parameters:
- name: body
in: body
required: true
schema:
type: object
required:
- name
- targetUrl
- resource
- event
properties:
name:
description: Webhook name.
type: string
targetUrl:
description: Webhook target URL.
type: string
format: url
resource:
description: Webhook resource.
type: string
event:
description: Webhook event.
type: string
filter:
description: Webhook filter.
type: string
secret:
description: Webhook secret.
type: string
responses:
200:
$ref: '#/responses/Webhook'
/webhooks/{webhookId}:
get:
operationId: getWebhook
summary: Get Webhook.
description: Get Webhook by ID. Returns a Webhook object.
tags:
- webhooks
parameters:
- name: webhookId
in: path
description: Webhook ID.
required: true
type: string
responses:
200:
$ref: '#/responses/Webhook'
put:
operationId: updateWebhook
summary: Update a Webhook.
description: Update a webhook by ID. Returns a Webhook object.
tags:
- webhooks
parameters:
- name: webhookId
in: path
description: Webhook ID.
required: true
type: string
- name: body
in: body
required: true
schema:
type: object
required:
- name
- targetUrl
properties:
name:
description: Webhook name.
type: string
targetUrl:
description: Webhook target URL.
type: string
format: url
responses:
200:
$ref: '#/responses/Webhook'
delete:
operationId: deleteWebhook
summary: Delete a Webhook.
description: Delete a Webhook by ID.
tags:
- webhooks
parameters:
- name: webhookId
in: path
description: Webhook ID.
required: true
type: string
responses:
204:
description: Successful response.
/organizations/:
get:
operationId: getOrganizations
summary: Get Organizations for authenticated User. Returns array of Organization objects.
description: Get Organizations for authenticated User. Returns array of Organization objects.
tags:
- organizations
parameters:
- $ref: '#/parameters/Max'
responses:
200:
$ref: '#/responses/Organizations'
/organizations/{orgId}:
get:
operationId: getOrganization
summary: Get Organization.
description: Get Organization by ID. Returns Organization object.
tags:
- organizations
parameters:
- name: orgId
in: path
description: Organization ID.
required: true
type: string
responses:
200:
$ref: '#/responses/Organization'
/licenses/:
get:
operationId: getLicenses
summary: Get Licenses.
description: Get Licenses. Returns array of License objects.
tags:
- licenses
parameters:
- $ref: '#/parameters/Max'
responses:
200:
$ref: '#/responses/Licenses'
/licenses/{licenseId}:
get:
operationId: getLicense
summary: Get License.
description: Get License by ID. Returns License object.
tags:
- licenses
parameters:
- name: licenseId
in: path
description: License ID.
required: true
type: string
responses:
200:
$ref: '#/responses/License'
/roles/:
get:
operationId: getRoles
summary: Get Roles.
description: Get Roles. Returns an array of Role objects.
tags:
- roles
parameters:
- $ref: '#/parameters/Max'
responses:
200:
$ref: '#/responses/Roles'
/roles/{roleId}:
get:
operationId: getRole
summary: Get Role.
description: Get Role by ID. Returns Role object.
tags:
- roles
parameters:
- name: roleId
in: path
description: Role ID.
required: true
type: string
responses:
200:
$ref: '#/responses/Role'
/contents/{contentId}:
get:
operationId: getContent
summary: Get File contents.
description: Get File contents by ID. Returns binary of file.
tags:
- contents
parameters:
- name: contentId
in: path
description: Content ID.
required: true
type: string
responses:
200:
$ref: '#/responses/Contents'
definitions:
Person:
type: object
properties:
id:
type: string
description: Person ID.
emails:
type: array
description: Person email array.
items:
type: string
format: email
description: Person email.
displayName:
type: string
description: Person display name.
nickName:
type: string
description: Person nickname.
firstName:
type: string
description: Person first name.
lastName:
type: string
description: Person last name.
avatar:
type: string
format: url
description: Person avatar URL.
orgId:
type: string
description: Person organization ID.
roles:
type: array
description: Person roles.
items:
type: string
description: Role ID.
licenses:
type: array
description: Person licenses.
items:
type: string
description: License ID.
created:
type: string
format: date-time
description: Person creation date/time.
timeZone:
type: string
description: Person time zone.
lastActivity:
type: string
format: date-time
description: Person last active date/time.
status:
type: string
description: Person presence status (active or inactive).
type:
type: string
description: Person type (person or bot).
Room:
type: object
properties:
id:
type: string
description: Room ID.
title:
type: string
description: Room title.
type:
type: string
description: Room type (group or direct).
isLocked:
type: boolean
description: Room is moderated.
teamId:
type: string
description: Room Team ID.
creatorId:
type: string
description: Room creator Person ID.
lastActivity:
type: string
format: date-time
description: Room last activity date/time.
created:
type: string
format: date-time
description: Room creation date/time.
Membership:
type: object
properties:
id:
type: string
description: Membership ID.
roomId:
type: string
description: Room ID.
personId:
type: string
description: Person ID.
personEmail:
type: string
format: email
description: Person email.
personDisplayName:
type: string
description: Person display name.
isModerator:
type: boolean
description: Membership is moderator.
isMonitor:
type: boolean
description: Membership is monitor.
created:
type: string
format: date-time
description: Membership creation date/time.
Message:
type: object
properties:
id:
type: string
description: Message ID.
roomId:
type: string
description: Room ID.
roomType:
type: string
description: Room type (group or direct).
toPersonId:
type: string
description: Person ID (for type=direct).
toPersonEmail:
type: string
format: email
description: Person email (for type=direct).
text:
type: string
description: Message in plain text format.
markdown:
type: string
description: Message in markdown format.
html:
type: string
description: Message in html format.
files:
type: array
description: File URL array.
items:
type: string
format: url
description: File URL.
personId:
type: string
description: Person ID.
personEmail:
type: string
format: email
description: Person Email.
created:
type: string
format: date-time
description: Message creation date/time.
mentionedPeople:
type: array
description: Person ID array.
items:
type: string
description: Person ID.
Team:
type: object
properties:
id:
type: string
description: Team ID.
name:
type: string
description: Team Name.
creatorId:
type: string
description: Team creator ID.
created:
type: string
format: date-time
description: Team creation date/time.
TeamMembership:
type: object
properties:
id:
type: string
description: Team Membership ID.
teamId:
type: string
description: Team ID.
personId:
type: string
description: Person ID.
personEmail:
type: string
format: email
description: Person email.
personDisplayName:
type: string
description: Person display name.
isModerator:
type: boolean
description: Team Membership is moderator.
created:
type: string
format: date-time
description: Team Membership creation date/time.
Webhook:
type: object
properties:
id:
type: string
description: Webhook ID.
name:
type: string
description: Webhook name.
targetUrl:
type: string
format: url
description: Webhook target URL.
resource:
type: string
description: Webhook resource.
pattern: '(all|messages|memberships|rooms)'
event:
type: string
description: Webhook event.
pattern: '(all|created|updated|deleted)'
orgId:
type: string
description: Webhook organization ID.
createdBy:
type: string
description: Webhook created by Person ID.
appId:
type: string
description: Webhook application ID.
ownedBy:
type: string
description: Webhook owner Person ID.
filter:
type: string
description: Webhook filter.
status:
type: string
description: Webhook status.
secret:
type: string
description: Webhook secret.
created:
type: string
format: date-time
description: Webhook creation date/time.
Organization:
type: object
properties:
id:
type: string
description: Organization ID.
displayName:
type: string
description: Organization Display Name.
created:
type: string
format: date-time
description: Organization creation date/time.
License:
type: object
properties:
id:
type: string
description: License ID.
name:
type: string
description: License Display Name.
totalUnits:
type: string
description: License quantity total.
consumedUnits:
type: string
description: License quantity consumed.
Role:
type: object
properties:
id:
type: string
description: Role ID.
name:
type: string
description: Role Display Name.
responses:
Person:
description: Successful response.
schema:
$ref: '#/definitions/Person'
People:
description: Successful response.
schema:
type: object
properties:
items:
type: array
items:
$ref: '#/definitions/Person'
Room:
description: Successful response.
schema:
$ref: '#/definitions/Room'
Rooms:
description: Successful response.
schema:
type: object
properties:
items:
type: array
items:
$ref: '#/definitions/Room'
Membership:
description: Successful response.
schema:
$ref: '#/definitions/Membership'
Memberships:
description: Successful response.
schema:
type: object
properties:
items:
type: array
items:
$ref: '#/definitions/Membership'
Message:
description: Successful response.
schema:
$ref: '#/definitions/Message'
Messages:
description: Successful response.
schema:
type: object
properties:
items:
type: array
items:
$ref: '#/definitions/Message'
Team:
description: Successful response.
schema:
$ref: '#/definitions/Team'
Teams:
description: Successful response.
schema:
type: object
properties:
items:
type: array
items:
$ref: '#/definitions/Team'
TeamMembership:
description: Successful response.
schema:
$ref: '#/definitions/TeamMembership'
TeamMemberships:
description: Successful response.
schema:
type: object
properties:
items:
type: array
items:
$ref: '#/definitions/TeamMembership'
Webhook:
description: Successful response.
schema:
$ref: '#/definitions/Webhook'
Webhooks:
description: Successful response.
schema:
type: object
properties:
items:
type: array
items:
$ref: '#/definitions/Webhook'
Organization:
description: Successful response.
schema:
$ref: '#/definitions/Organization'
Organizations:
description: Successful response.
schema:
type: object
properties:
items:
type: array
items:
$ref: '#/definitions/Organization'
License:
description: Successful response.
schema:
$ref: '#/definitions/License'
Licenses:
description: Successful response.
schema:
type: object
properties:
items:
type: array
items:
$ref: '#/definitions/License'
Role:
description: Successful response.
schema:
$ref: '#/definitions/Role'
Roles:
description: Successful response.
schema:
type: object
properties:
items:
type: array
items:
$ref: '#/definitions/Role'
Contents:
description: Successful response.
parameters:
Max:
name: max
in: query
description: Limit the maximum number results.
required: false
type: integer
pattern: '{[0-9]+:[0-9]+}'