Skip to content

Instantly share code, notes, and snippets.

@bigdoods
Created January 22, 2019 15:02
Show Gist options
  • Select an option

  • Save bigdoods/aae6079bf88c00dac1e77ea6fd3a1e3d to your computer and use it in GitHub Desktop.

Select an option

Save bigdoods/aae6079bf88c00dac1e77ea6fd3a1e3d to your computer and use it in GitHub Desktop.
swagger: '2.0'
info:
version: 1.0.0-beta
title: Speckle OpenApi Specs
description: |-
Documentation & specifications for the Speckle Server & Speckle Objects.
contact:
name: SpeckleWorks
url: 'https://speckle.works'
email: [email protected]
host: 'localhost:3001'
basePath: /api/v1
tags:
- name: Accounts
description: Register, Login and more.
- name: Clients
description: Create, get and update application clients.
- name: Projects
description: Create, get and update projects.
- name: Comments
description: Create, get and update comments.
- name: Streams
description: Create, get and update streams.
- name: Objects
description: Create, get and update objects.
schemes:
- http
- https
consumes:
- application/json
produces:
- application/json
security:
- JWT Token Auth: []
securityDefinitions:
JWT Token Auth:
type: apiKey
name: Authorization
in: header
paths:
# ACCOUNTS
/accounts/register:
post:
tags:
- Accounts
summary: UserRegister
description: Registers a new user.
operationId: UserRegister
parameters:
- name: body
in: body
required: true
schema:
$ref: '#/definitions/User'
responses:
'200':
description: New user successfully registered.
schema:
$ref: '#/definitions/ResponseUser'
'400':
description: Failed to register a new user.
schema:
$ref: '#/definitions/ResponseBase'
/accounts/login:
post:
tags:
- Accounts
summary: UserLogin
description: Login and get jwt token.
operationId: UserLogin
parameters:
- name: body
in: body
required: true
description: The only required elements are email and password.
schema:
$ref: '#/definitions/User'
responses:
'200':
description: You've logged in.
schema:
$ref: '#/definitions/ResponseUser'
'400':
description: Fail whale.
schema:
$ref: '#/definitions/ResponseBase'
/accounts/search:
post:
tags:
- Accounts
summary: UserSearch
description: Search for a user by substrings of name, surname, and company.
operationId: UserSearch
consumes:
- application/json
produces:
- application/json
parameters:
- in: body
name: user
required: true
description: No elements are required. The name, surname, and company are used to constrain the search.
schema:
$ref: '#/definitions/User'
responses:
'200':
description: New user successfully registered.
schema:
$ref: '#/definitions/ResponseUser'
'400':
description: Fail whale.
schema:
$ref: '#/definitions/ResponseBase'
/accounts:
get:
tags:
- Accounts
description: Gets your profile.
summary: UserGet
operationId: UserGet
responses:
'200':
description: New user successfully registered.
schema:
$ref: '#/definitions/ResponseUser'
'400':
description: Fail.
schema:
$ref: '#/definitions/ResponseBase'
put:
tags:
- Accounts
description: Updates your profile.
summary: UserUpdateProfile
operationId: UserUpdateProfile
parameters:
- name: user
in: body
required: true
schema:
$ref: '#/definitions/User'
responses:
'200':
description: Things are looking good yo.
schema:
$ref: '#/definitions/ResponseBase'
'400':
description: Fail.
schema:
$ref: '#/definitions/ResponseBase'
'/accounts/{userId}':
get:
tags:
- Accounts
summary: UserGetProfileById
operationId: UserGetProfileById
description: Gets a user's profile.
parameters:
- name: userId
in: path
required: true
type: string
responses:
'200':
description: New user successfully registered.
schema:
$ref: '#/definitions/ResponseUser'
'400':
description: Fail whale.
schema:
$ref: '#/definitions/ResponseBase'
# CLIENTS
/clients:
get:
tags: [ "Clients" ]
summary: ClientGetAll
operationId: ClientGetAll
description: Gets a user's profile.
responses:
'200':
description: All the users's clients.
schema:
$ref: '#/definitions/ResponseClient'
'400':
description: Fail whale.
schema:
$ref: '#/definitions/ResponseBase'
post:
tags: [ "Clients" ]
summary: ClientCreate
operationId: ClientCreate
description: Create a client
parameters:
- name: client
in: body
required: true
schema:
$ref: '#/definitions/AppClient'
responses:
'200':
description: All the users's clients.
schema:
$ref: '#/definitions/ResponseClient'
'400':
description: Fail whale.
schema:
$ref: '#/definitions/ResponseBase'
'/clients/{clientId}':
put:
tags: [ "Clients" ]
summary: ClientUpdate
operationId: ClientUpdate
description: Update a client
parameters:
- name: clientId
in: path
required: true
type: string
- name: client
in: body
required: true
schema:
$ref: '#/definitions/AppClient'
responses:
'200':
description: All the users's clients.
schema:
$ref: '#/definitions/ResponseClient'
'400':
description: Fail whale.
schema:
$ref: '#/definitions/ResponseBase'
get:
tags: [ "Clients" ]
summary: ClientGet
operationId: ClientGet
description: Get a client
parameters:
- name: clientId
in: path
required: true
type: string
responses:
'200':
description: The client.
schema:
$ref: '#/definitions/ResponseClient'
'400':
description: Fail whale.
schema:
$ref: '#/definitions/ResponseBase'
delete:
tags: [ "Clients" ]
summary: ClientDelete
operationId: ClientDelete
description: Deletes a client
parameters:
- name: clientId
in: path
required: true
type: string
responses:
'200':
description: All good!
schema:
$ref: '#/definitions/ResponseBase'
'400':
description: Fail whale.
schema:
$ref: '#/definitions/ResponseBase'
# PROJECTS
/projects:
get:
tags: [ "Projects" ]
summary: ProjectGetAll
operationId: ProjectGetAll
description: Gets a user's projects.
responses:
'200':
description: All the users's projects.
schema:
$ref: '#/definitions/ResponseProject'
'400':
description: Fail whale.
schema:
$ref: '#/definitions/ResponseBase'
post:
tags: [ "Projects" ]
summary: Create
operationId: ProjectCreate
description: Create a project
parameters:
- name: project
in: body
required: true
schema:
$ref: '#/definitions/Project'
responses:
'200':
description: All the users's clients.
schema:
$ref: '#/definitions/ResponseProject'
'400':
description: Fail whale.
schema:
$ref: '#/definitions/ResponseBase'
'/projects/{projectId}':
put:
tags: [ "Projects" ]
summary: ProjectUpdate
operationId: ProjectUpdate
description: Update a project
parameters:
- name: projectId
in: path
required: true
type: string
- name: project
in: body
required: true
schema:
$ref: '#/definitions/Project'
responses:
'200':
description: All the users's projects.
schema:
$ref: '#/definitions/ResponseProject'
'400':
description: Fail whale.
schema:
$ref: '#/definitions/ResponseBase'
get:
tags: [ "Projects" ]
summary: ProjectGet
operationId: ProjectGet
description: Get a project
parameters:
- name: projectId
in: path
required: true
type: string
responses:
'200':
description: The client.
schema:
$ref: '#/definitions/ResponseProject'
'400':
description: Fail whale.
schema:
$ref: '#/definitions/ResponseBase'
delete:
tags: [ "Projects" ]
summary: ProjectDelete
operationId: ProjectDelete
description: Deletes a project
parameters:
- name: projectId
in: path
required: true
type: string
responses:
'200':
description: All good!
schema:
$ref: '#/definitions/ResponseBase'
'400':
description: Fail whale.
schema:
$ref: '#/definitions/ResponseBase'
# COMMENTS
'/comments/{resourceType}/{resourceId}':
post:
tags: [ "Comments" ]
summary: CommentCreate
operationId: CommentCreate
description: Creates a comment on a resource.
parameters:
- name: resourceType
description: The resource type you want to comment on.
in: path
required: true
type: string
enum: ["stream", "object", "project", "comment" ]
- name: resourceId
description: The resource id you want to comment on. In the case of streams, it must be a streamId.
in: path
required: true
type: string
- name: comment
in: body
required: true
schema:
$ref: '#/definitions/Comment'
responses:
'200':
description: All good!
schema:
$ref: '#/definitions/ResponseComment'
'400':
description: Fail whale.
schema:
$ref: '#/definitions/ResponseBase'
get:
tags: [ "Comments" ]
summary: CommentGetFromResource
operationId: CommentGetFromResource
description: Gets the comments from a resource.
parameters:
- name: resourceType
description: The resource type you want to comment on.
in: path
required: true
type: string
enum: ["stream", "object", "project", "comment" ]
- name: resourceId
description: The resource id you want to comment on. In the case of streams, it must be a streamId.
in: path
required: true
type: string
responses:
'200':
description: All good!
schema:
$ref: '#/definitions/ResponseComment'
'400':
description: Fail whale.
schema:
$ref: '#/definitions/ResponseBase'
'/comments/{commentId}':
get:
tags: [ "Comments" ]
summary: CommentGet
operationId: CommentGet
description: Gets a specific comment.
parameters:
- name: commentId
in: path
required: true
type: string
responses:
'200':
description: All good!
schema:
$ref: '#/definitions/ResponseComment'
'400':
description: Fail whale.
schema:
$ref: '#/definitions/ResponseBase'
put:
tags: [ "Comments" ]
summary: CommentUpdate
operationId: CommentUpdate
description: Updates a comment.
parameters:
- name: commentId
in: path
required: true
type: string
- name: comment
in: body
required: true
schema:
$ref: '#/definitions/Comment'
responses:
'200':
description: All good!
schema:
$ref: '#/definitions/ResponseBase'
'400':
description: Fail whale.
schema:
$ref: '#/definitions/ResponseBase'
delete:
tags: [ "Comments" ]
summary: CommentDelete
operationId: CommentDelete
description: Deletes a specific comment.
parameters:
- name: commentId
in: path
required: true
type: string
responses:
'200':
description: All good!
schema:
$ref: '#/definitions/ResponseBase'
'400':
description: Fail whale.
schema:
$ref: '#/definitions/ResponseBase'
# STREAMS
/streams:
get:
tags: [ "Streams" ]
summary: StreamsGetAll
operationId: StreamsGetAll
description: Gets a user's streams.
responses:
'200':
description: All good!
schema:
$ref: '#/definitions/ResponseStream'
'400':
description: Fail whale.
schema:
$ref: '#/definitions/ResponseBase'
post:
tags: [ "Streams" ]
summary: StreamCreate
operationId: StreamCreate
description: Create a stream
parameters:
- name: stream
in: body
required: true
schema:
$ref: '#/definitions/SpeckleStream'
responses:
'200':
description: All good!
schema:
$ref: '#/definitions/ResponseStream'
'400':
description: Fail whale.
schema:
$ref: '#/definitions/ResponseBase'
'/streams/{streamId}':
get:
tags: [ "Streams" ]
summary: StreamGet
operationId: StreamGet
description: Gets a specific stream.
parameters:
- name: streamId
in: path
required: true
type: string
- name: query
in: query
type: string
description: Specifiy which fields to retrieve, ie `?fields=layers,baseProperties`.
responses:
'200':
description: All good!
schema:
$ref: '#/definitions/ResponseStream'
'400':
description: Fail whale.
schema:
$ref: '#/definitions/ResponseBase'
put:
tags: [ "Streams" ]
summary: StreamUpdate
operationId: StreamUpdate
description: Updates a stream.
parameters:
- name: streamId
in: path
required: true
type: string
- name: stream
in: body
required: true
schema:
$ref: '#/definitions/SpeckleStream'
responses:
'200':
description: All good!
schema:
$ref: '#/definitions/ResponseBase'
'400':
description: Fail whale.
schema:
$ref: '#/definitions/ResponseBase'
delete:
tags: [ "Streams" ]
summary: StreamDelete
operationId: StreamDelete
description: Deletes a specific stream.
parameters:
- name: streamId
in: path
required: true
type: string
responses:
'200':
description: All good!
schema:
$ref: '#/definitions/ResponseBase'
'400':
description: Fail whale.
schema:
$ref: '#/definitions/ResponseBase'
'/streams/{streamId}/objects':
get:
tags: ["Streams"]
summary: StreamGetObjects
operationId: StreamGetObjects
description: Gets stream objects.
parameters:
- name: streamId
in: path
required: true
type: string
- name: query
in: query
type: string
description: Specifiy which fields to retrieve, filters, limits, etc.
responses:
'200':
description: All good!
schema:
$ref: '#/definitions/ResponseObject'
'400':
description: Fail whale.
schema:
$ref: '#/definitions/ResponseBase'
'/streams/{streamId}/clone':
post:
tags: ["Streams"]
summary: StreamClone
operationId: StreamClone
description: Clones a stream.
parameters:
- name: streamId
in: path
required: true
type: string
responses:
'200':
description: All good!
schema:
$ref: '#/definitions/ResponseStreamClone'
'400':
description: Fail whale.
schema:
$ref: '#/definitions/ResponseBase'
'/streams/{streamId}/diff/{otherStreamId}':
get:
tags: ["Streams"]
summary: StreamDiff
operationId: StreamDiff
description: Diffs two streams (objects and layers).
parameters:
- name: streamId
in: path
required: true
type: string
- name: otherStreamId
in: path
required: true
type: string
responses:
'200':
description: All good!
schema:
$ref: '#/definitions/ResponseStreamDiff'
'400':
description: Fail whale.
schema:
$ref: '#/definitions/ResponseBase'
# OBJECTS
/objects:
post:
tags: ["Objects"]
summary: ObjectCreate
operationId: ObjectCreate
description: Create one or more objects
parameters:
- name: objects
in: body
schema:
type: array
items:
$ref: '#/definitions/SpeckleObject'
responses:
'200':
description: All the users's projects.
schema:
$ref: '#/definitions/ResponseObject'
'400':
description: Fail whale.
schema:
$ref: '#/definitions/ResponseBase'
'/objects/{objectId}':
put:
tags: [ "Objects" ]
summary: ObjectUpdate
operationId: ObjectUpdate
description: Update a object
parameters:
- name: objectId
in: path
required: true
type: string
- name: object
in: body
required: true
schema:
$ref: '#/definitions/SpeckleObject'
responses:
'200':
description: All the users's projects.
schema:
$ref: '#/definitions/ResponseObject'
'400':
description: Fail whale.
schema:
$ref: '#/definitions/ResponseBase'
get:
tags: [ "Objects" ]
summary: ObjectGet
operationId: ObjectGet
description: Get a object
parameters:
- name: objectId
in: path
required: true
type: string
responses:
'200':
description: The client.
schema:
$ref: '#/definitions/ResponseObject'
'400':
description: Fail whale.
schema:
$ref: '#/definitions/ResponseBase'
delete:
tags: [ "Objects" ]
summary: ObjectDelete
operationId: ObjectDelete
description: Deletes an object
parameters:
- name: objectId
in: path
required: true
type: string
responses:
'200':
description: All good!
schema:
$ref: '#/definitions/ResponseBase'
'400':
description: Fail whale.
schema:
$ref: '#/definitions/ResponseBase'
'/objects/{objectId}/properties':
put:
tags: ["Objects"]
summary: ObjectUpdateProperties
operationId: ObjectUpdateProperties
description: Does a merge update of the object's properties.
parameters:
- name: objectId
in: path
required: true
type: string
- name: object
in: body
description: An object that holds the keys you want to modify or add.
required: true
schema:
type: object
responses:
'200':
description: All good!
schema:
$ref: '#/definitions/ResponseBase'
'/objects/getbulk':
post:
tags: ["Objects"]
summary: ObjectGetBulk
operationId: ObjectGetBulk
description: Gets a load of objects
parameters:
- name: query
in: query
required: false
type: string
description: Specifiy which fields to retrieve, filters, limits, etc. For example, `?fields=type,properties,hash&type=Circle`
- name: object
in: body
description: An object that holds the keys you want to modify or add.
required: true
schema:
type: array
items:
type: string
responses:
'200':
description: All good!
schema:
$ref: '#/definitions/ResponseObject'
'400':
description: Fail whale.
schema:
$ref: '#/definitions/ResponseBase'
definitions:
ResourceBase:
description: Base class that adds a set of simple properties related to authorisation and commenting to all applicable resources (not users).
type: object
properties:
_id:
type: string
owner:
type: string
private:
type: boolean
anonymousComments:
type: boolean
canRead:
type: array
items:
type: string
canWrite:
type: array
items:
type: string
comments:
description: An array of comment ids.
type: array
items:
type: string
deleted:
description: Controls archival status - does not actually delete anything
type: boolean
default: false
User:
type: object
description: Describes a user.
properties:
_id:
type: string
description: Database uuid.
role:
type: string
description: User's role. Defaults to "user".
avatar:
type: string
description: We will need profile pics at one point.
apitoken:
type: string
description: a signed jwt token that expires in 1 year.
token:
type: string
description: a signed jwt token that expires in 1 day.
email:
type: string
description: user's email
name:
type: string
description: User's given name
surname:
type: string
description: User's family name
company:
type: string
description: Users's company
logins:
type: array
description: an array storing each time the user logged in.
items:
type: object
properties:
date:
type: string
description: it's a timestamp for each login.
AppClient:
description: A speckle client.
allOf:
- $ref: '#/definitions/ResourceBase'
- properties:
_id:
type: string
description: Database uuid.
role:
type: string
description: Either Sender, Receiver or anything else you can think of.
documentGuid:
type: string
documentName:
type: string
documentType:
type: string
documentLocation:
type: string
streamId:
type: string
description: The streamId that this client is attached to.
online:
type: boolean
description: Is it accessible from the server or not?
Project:
description: A project contains a group of streams and users.
allOf:
- $ref: '#/definitions/ResourceBase'
- properties:
_id:
type: string
name:
type: string
number:
type: string
users:
type: array
items:
type: string
streams:
type: array
items:
type: string
subProjects:
type: array
items:
type: string
Comment:
description: A comment/issue.
allOf:
- $ref: '#/definitions/ResourceBase'
- properties:
resource:
type: object
properties:
resourceType:
type: string
resourceId:
type: string
text:
type: string
assignedTo:
type: array
items:
type: string
closed:
type: boolean
labels:
type: array
items:
type: string
view:
type: object
screenshot:
type: string
SpeckleStream:
description: A stream is essentially a collection of objects, with added properties.
allOf:
- $ref: '#/definitions/ResourceBase'
- properties:
streamId:
type: string
description: The stream's short id.
name:
type: string
description: The data stream's name
objects:
type: array
description: An array of SpeckleObject ids.
items:
$ref: '#/definitions/SpeckleObject'
layers:
type: array
description: An array of speckle layers.
items:
$ref: '#/definitions/Layer'
baseProperties:
description: Units, tolerances, etc.
type: object
globalMeasures:
description: Any performance measures can go in here.
type: object
isComputedResult:
type: boolean
default: false
viewerLayers:
type: array
items:
type: object
parent:
type: string
description: If this stream is a child, the parent's streamId.
children:
type: array
description: An array of the streamId of any children of this stream.
items:
type: string
ancestors:
description: If resulting from a merge, the streams that this one was born out of.
type: array
items:
type: string
Layer:
type: object
properties:
name:
type: string
description: Layer's name
guid:
type: string
description: Layer's guid (must be unique)
orderIndex:
type: integer
description: Describes this layer's position in the list of layers.
startIndex:
type: number
description: The index of the first object relative to the stream's objects array
objectCount:
type: number
description: How many objects does this layer have.
topology:
type: string
description: String describing the nested tree structure (GH centric).
properties:
$ref: '#/definitions/LayerProperties'
description: 'Describes a speckle layer. To assign objects to a speckle layer, you''ll need to start at `objects[ layer.startIndex ]` and finish at `objects[ layer.startIndex + layer.objectCount ]`.'
LayerProperties:
type: object
properties:
color:
type: object
properties:
a:
type: number
description: alpha value
default: 1
hex:
type: string
description: hex color value
visible:
type: boolean
description: toggles layer visibility.
pointsize:
type: number
description: defines point size in threejs
linewidth:
type: number
description: defines line thickness in threejs
shininess:
type: number
description: says it all. speckle is superficial.
smooth:
type: boolean
description: smooth shading toggle
showEdges:
type: boolean
description: display edges or not yo.
wireframe:
type: boolean
description: i'm bored.
description: 'Holds stream layer properties, mostly for displaying purposes. This object will be filled up with garbage from threejs and others, but below is a minimal schema.'
# the base response class
ResponseBase:
type: object
properties:
success:
type: boolean
description: 'Besides the http status code, this tells you whether the call succeeded or not.'
message:
type: string
description: Either an error or a confirmation.
resource:
type: object
description: Returned resource (if querying by id)
resources:
type: array
description: Returned resources array (if it's a bulk query)
items:
type: object
ResponseUser:
allOf:
- $ref: '#/definitions/ResponseBase'
- type: object
properties:
resource:
$ref: '#/definitions/User'
resources:
type: array
items:
$ref: '#/definitions/User'
ResponseClient:
allOf:
- $ref: '#/definitions/ResponseBase'
- type: object
properties:
resource:
$ref: '#/definitions/AppClient'
resources:
type: array
items:
$ref: '#/definitions/AppClient'
ResponseProject:
allOf:
- $ref: '#/definitions/ResponseBase'
- type: object
properties:
resource:
$ref: '#/definitions/Project'
resources:
type: array
items:
$ref: '#/definitions/Project'
ResponseComment:
allOf:
- $ref: '#/definitions/ResponseBase'
- type: object
properties:
resource:
$ref: '#/definitions/Comment'
resources:
type: array
items:
$ref: '#/definitions/Comment'
ResponseStream:
allOf:
- $ref: '#/definitions/ResponseBase'
- type: object
properties:
resource:
$ref: '#/definitions/SpeckleStream'
resources:
type: array
items:
$ref: '#/definitions/SpeckleStream'
ResponseObject:
allOf:
- $ref: '#/definitions/ResponseBase'
- type: object
properties:
resource:
$ref: '#/definitions/SpeckleObject'
resources:
type: array
items:
$ref: '#/definitions/SpeckleObject'
ResponseStreamClone:
allOf:
- $ref: '#/definitions/ResponseBase'
- type: object
properties:
clone:
$ref: '#/definitions/SpeckleStream'
parent:
$ref: '#/definitions/SpeckleStream'
ResponseStreamDiff:
allOf:
- $ref: '#/definitions/ResponseBase'
- type: object
properties:
objects:
type: object
properties:
common:
type: array
items:
type: string
inA:
type: array
items:
type: string
inB:
type: array
items:
type: string
layers:
type: object
properties:
common:
type: array
items:
$ref: '#/definitions/Layer'
inA:
type: array
items:
$ref: '#/definitions/Layer'
inB:
type: array
items:
$ref: '#/definitions/Layer'
SpeckleObject:
description: Base class that is inherited by all other Speckle objects.
required:
- type
- hash
discriminator: type
allOf:
- $ref: '#/definitions/ResourceBase'
- properties:
type:
type: string
description: Object's subtype
enum: ['Null', 'Abstract', 'Placeholder', 'Boolean', 'Number', 'String', 'Interval', 'Interval2d', 'Point', 'Vector', 'Plane', 'Line', 'Rectangle', 'Circle', 'Arc', 'Ellipse', 'Polycurve', 'Box', 'Polyline', 'Curve', 'Mesh', 'Brep', 'Annotation', 'Extrusion']
hash:
type: string
description: Object's unique hash.
example: hash
geometryHash:
type: string
description: Object's geometry hash
example: Type.hash
applicationId:
type: string
example: GUID
description: The id/guid that the origin application identifies this object by.
name:
type: string
description: The name of the object in the origin application. This is the instance or entity name displayed in the "properties" dialog in most applications.
properties:
type: object
description: The extra properties field of a speckle object.
parent:
type: string
description: If this object is a child, the parent's objectid.
children:
type: array
description: An array of the ids of any children of this object.
items:
type: string
ancestors:
description: If resulting from a merge, the objects that this one was born out of.
type: array
items:
type: string
transform:
type: array
items:
type: number
SpeckleAbstract:
allOf:
- $ref: '#/definitions/SpeckleObject'
- type: object
properties:
type:
default: Abstract
_type:
type: string
description: the original type of the object
assembly:
type: string
description: the original assembly of this object
SpecklePlaceholder:
allOf:
- $ref: '#/definitions/SpeckleObject'
- type: object
properties:
type:
default: Abstract
SpeckleBoolean:
allOf:
- $ref: '#/definitions/SpeckleObject'
- type: object
properties:
type:
default: Boolean
value:
type: boolean
SpeckleNumber:
allOf:
- $ref: '#/definitions/SpeckleObject'
- type: object
properties:
type:
default: Number
value:
type: number
description: A number. Can be float, double, etc.
SpeckleString:
allOf:
- $ref: '#/definitions/SpeckleObject'
- type: object
properties:
type:
default: String
value:
type: string
description: A string.
SpeckleInterval:
allOf:
- $ref: '#/definitions/SpeckleObject'
- type: object
properties:
type:
default: Interval
start:
type: number
end:
type: number
SpeckleInterval2d:
allOf:
- $ref: '#/definitions/SpeckleObject'
- type: object
properties:
U:
$ref: '#/definitions/SpeckleInterval'
description: U interval.
V:
$ref: '#/definitions/SpeckleInterval'
description: V interval.
SpecklePoint:
allOf:
- $ref: '#/definitions/SpeckleObject'
- type: object
properties:
type:
default: Point
value:
description: An array containing the X, Y and Z coords of the point.
type: array
items:
type: number
SpeckleVector:
allOf:
- $ref: '#/definitions/SpeckleObject'
- type: object
properties:
type:
default: Vector
value:
description: An array containing the X, Y and Z coords of the vector.
type: array
items:
type: number
SpecklePlane:
allOf:
- $ref: '#/definitions/SpeckleObject'
- type: object
properties:
type:
default: Plane
origin:
$ref: '#/definitions/SpecklePoint'
description: The origin of the plane.
normal:
$ref: '#/definitions/SpeckleVector'
description: The normal of the plane.
xdir:
$ref: '#/definitions/SpeckleVector'
description: The X axis of the plane.
ydir:
$ref: '#/definitions/SpeckleVector'
description: The Y axis of the plane.
SpeckleCircle:
allOf:
- $ref: '#/definitions/SpeckleObject'
- type: object
properties:
type:
default: Circle
radius:
type: number
center:
$ref: '#/definitions/SpecklePoint'
normal:
$ref: '#/definitions/SpeckleVector'
domain:
$ref: '#/definitions/SpeckleInterval'
SpeckleArc:
allOf:
- $ref: '#/definitions/SpeckleObject'
- type: object
properties:
type:
default: Arc
radius:
type: number
startAngle:
type: number
endAngle:
type: number
angleRadians:
type: number
plane:
$ref: '#/definitions/SpecklePlane'
domain:
$ref: '#/definitions/SpeckleInterval'
SpeckleEllipse:
allOf:
- $ref: '#/definitions/SpeckleObject'
- type: object
properties:
type:
default: Ellipse
firstRadius:
type: number
secondRadius:
type: number
plane:
$ref: '#/definitions/SpecklePlane'
domain:
$ref: '#/definitions/SpeckleInterval'
SpecklePolycurve:
allOf:
- $ref: '#/definitions/SpeckleObject'
- type: object
properties:
type:
default: Polycurve
segments:
type: array
items:
$ref: '#/definitions/SpeckleObject'
domain:
$ref: '#/definitions/SpeckleInterval'
SpeckleBox:
allOf:
- $ref: '#/definitions/SpeckleObject'
- type: object
properties:
type:
default: Box
basePlane:
$ref: '#/definitions/SpecklePlane'
xSize:
$ref: '#/definitions/SpeckleInterval'
ySize:
$ref: '#/definitions/SpeckleInterval'
zSize:
$ref: '#/definitions/SpeckleInterval'
SpeckleLine:
allOf:
- $ref: '#/definitions/SpeckleObject'
- type: object
properties:
type:
default: Line
value:
type: array
items:
type: number
domain:
$ref: '#/definitions/SpeckleInterval'
SpecklePolyline:
allOf:
- $ref: '#/definitions/SpeckleObject'
- type: object
properties:
type:
default: Polyline
closed:
type: boolean
value:
type: array
items:
type: number
domain:
$ref: '#/definitions/SpeckleInterval'
SpeckleCurve:
allOf:
- $ref: '#/definitions/SpeckleObject'
- type: object
properties:
type:
default: Curve
degree:
type: number
periodic:
type: boolean
rational:
type: boolean
points:
type: array
items:
type: number
weights:
type: array
items:
type: number
knots:
type: array
items:
type: number
domain:
$ref: '#/definitions/SpeckleInterval'
displayValue:
$ref: '#/definitions/SpecklePolyline'
SpeckleMesh:
allOf:
- $ref: '#/definitions/SpeckleObject'
- type: object
properties:
type:
default: Mesh
vertices:
type: array
items:
type: number
description: The mesh's vertices array, in a flat array (ie, `x1, y1, z1, x2, y2, ...`)
faces:
type: array
items:
type: number
description: The faces array.
colors:
type: array
items:
type: number
description: If any, the colours per vertex.
textureCoordinates:
type: array
items:
type: number
description: The faces array.
SpeckleBrep:
allOf:
- $ref: '#/definitions/SpeckleObject'
- type: object
properties:
type:
default: Brep
rawData:
type: object
description: The brep's raw (serialisation) data.
provenance:
type: string
description: A short prefix of where the base64 comes from.
displayValue:
$ref: '#/definitions/SpeckleMesh'
description: Contains a speckle mesh representation of this brep.
SpeckleExtrusion:
allOf:
- $ref: '#/definitions/SpeckleObject'
- type: object
properties:
capped:
type: boolean
profile:
$ref: '#/definitions/SpeckleObject'
pathStart:
$ref: '#/definitions/SpecklePoint'
pathEnd:
$ref: '#/definitions/SpecklePoint'
pathCurve:
$ref: '#/definitions/SpeckleObject'
SpeckleAnnotation:
allOf:
- $ref: '#/definitions/SpeckleObject'
- type: object
properties:
text:
type: string
textHeight:
type: number
fontName:
type: string
bold:
type: boolean
italic:
type: boolean
location:
$ref: '#/definitions/SpecklePoint'
plane:
$ref: '#/definitions/SpecklePlane'
SpeckleBlock:
allOf:
- $ref: '#/definitions/SpeckleObject'
- type: object
properties:
blockName:
type: string
description: the name of the block definition used to insert this block
description:
type: string
objects:
type: array
items:
$ref: '#/definitions/SpeckleObject'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment