v0.1 (latest)

Sketch Data

Type: object

A format for transmitting sketches used in the computer-assisted mass appraisal industry. See https://www.opencamadata.org/standards/sketch for details.

No Additional Properties

$schema Required

Type: string

URI to the specific version of the SDS used by this document

configuration Required

Type: object

A schema to describe configuration values, reference data, and other capabilities that affect the interpretation of a Sketch Data Schema document.

No Additional Properties
Type: object

Sketch settings establish sketch-wide values that affect how the data is interpreted.

No Additional Properties
Example:

{
    "coordinatePrecision": 1,
    "systemOfMeasure": "imperial",
    "unitOfMeasure": "feet"
}
Type: integer Default: 2

Precision of sketch coordinates from zero to four decimal places.

Value must be greater or equal to 0 and lesser or equal to 4

systemOfMeasure Required

Type: enum (of string) Default: "imperial"

Must be one of:

  • "imperial"
  • "metric"

unitOfMeasure Required

Type: enum (of string) Default: "feet"

Must be one of:

  • "feet"
  • "meters"
Type: object

Collection of zero or more capabilities that control how data in a sketch should be interpreted, and how a sketch app might decide which user-facing tools are available to edit a specific SDS document, and more significantly, how to interpret sketches values for application-level correctness.

No Additional Properties
Type: object

Sketches may have multiple pages.

No Additional Properties
Example:

{
    "paging": {
        "flag": "enabled",
        "maximumPageCount": 3
    }
}

flag Required

Type: object Default: "disabled"

Capabilities are disabled by default so including a capability and setting its flag to 'disabled' is equivalent to not including a capability at all.

featureFlag

Type: enum (of string)

Feature flags are used to determine whether a capability of the sketch app that was used to create sketch data was enabled.

Must be one of:

  • "enabled"
  • "disabled"
Type: integer Default: 1

Value must be greater or equal to 1

Type: object

Enables support for outbuildings as a domain

No Additional Properties
Example:

{
    "outbuildings": {
        "flag": "enabled",
        "associatedDomain": "outbuilding"
    }
}

flag Required

Type: object Default: "disabled"

Capabilities are disabled by default so including a capability and setting its flag to 'disabled' is equivalent to not including a capability at all.

Same definition as flag
Default: "outbuilding"

The domain used to annotate which segments and lookups are outbuilding.

domain

Type: enum (of string)

A domain is a broad term for a collection of segment types or lookup types. For example, 'outbuildings' are a whole class of things that belong approximately in the same 'domain'.

Must be one of:

  • "unspecified"
  • "outbuilding"
Type: object

Describes the types of arc drawing commands that are possible in an SDS document.

No Additional Properties
Example:

{
    "arcDrawing": {
        "flag": "enabled",
        "supportedArcTypes": "ANY"
    }
}

flag Required

Type: object Default: "disabled"

Capabilities are disabled by default so including a capability and setting its flag to 'disabled' is equivalent to not including a capability at all.

Same definition as flag
Type: enum (of string)

Must be one of:

  • "ELL"
  • "ANY"
Type: object

Sketches, and the segments in them, are drawn using 'ground' units as specified by the systemOfMeasure and unitOfMeasure settings. Thus, a sketch[].segment[].boundarySize of 50 describes a 50x50 patch of ground or 'boundary'. The purpose of enabling the boundary constraint capability is to logically capture situations where drawing a segment outside of this square is considered incorrect behavior.

No Additional Properties
Example:

{
    "boundaryConstraints": {
        "flag": "enabled",
        "defaultBoundarySize": 90
    }
}

flag Required

Type: object Default: "disabled"

Capabilities are disabled by default so including a capability and setting its flag to 'disabled' is equivalent to not including a capability at all.

Same definition as flag
Type: integer Default: 100

Size of each size of the sketch boundary in 'ground' units. Boundaries can only be square.

Value must be greater or equal to 1

Type: object

Segments are drawn using the stroke, fill, and text colors of the lookupData.lookups that they are linked to. It is possible to override the drawing style of any individual vector or segment by enabling the colorCustomization capability.

No Additional Properties
Example:

{
    "colorCustomization": {
        "flag": "enabled"
    }
}

flag Required

Type: object Default: "disabled"

Capabilities are disabled by default so including a capability and setting its flag to 'disabled' is equivalent to not including a capability at all.

Same definition as flag
Type: object

Sketch notes appear anyone on a sketch surface independent of a segment. They may have a minimum length of zero so an empty note is perfectly acceptable.

No Additional Properties
Example:

{
    "sketchNotes": {
        "flag": "enabled",
        "maxNoteLength": 50
    }
}

flag Required

Type: object Default: "disabled"

Capabilities are disabled by default so including a capability and setting its flag to 'disabled' is equivalent to not including a capability at all.

Same definition as flag
Type: integer

Value must be greater or equal to 0

Type: object

Sketches exist on a cartesian plane with a [0,0] origin. The plane has quadrants name according to conventions. The default quadrant for an SDS document is I or the space of +,+ coordinates or bottomLeft. The bottomLeft reflects what the user of a sketching app would interpret as 'the origin is in the bottom-left of my sketch canvas'. The sketchOriginPosition capability can be used to change that default quadrant to topRight (quadrant III) or topLeft (quadrant IV).

No Additional Properties
Example:

{
    "sketchOriginPosition": {
        "flag": "enabled",
        "origin": "bottomLeft"
    }
}

flag Required

Type: object Default: "disabled"

Capabilities are disabled by default so including a capability and setting its flag to 'disabled' is equivalent to not including a capability at all.

Same definition as flag
Type: enum (of string) Default: "bottomLeft"

User-centric language for standard names on the Cartesian plane.

Must be one of:

  • "bottomLeft"
  • "topLeft"
  • "topRight"
  • "bottomRight"
Type: object

Controls whether multiple labels can be associated with segments and vectors.

No Additional Properties
Example:

{
    "multipleLabels": {
        "flag": "enabled",
        "delimeter": "/"
    }
}

flag Required

Type: object Default: "disabled"

Capabilities are disabled by default so including a capability and setting its flag to 'disabled' is equivalent to not including a capability at all.

Same definition as flag
Type: string

The character or characters used to delimit multiple labels when rendered together.

Must be at least 1 characters long

Type: array

Lookup data for regular segments.

Each item of this array must be:

Type: object
No Additional Properties

name Required

Type: string

A name for the entire collection of lookup values. If there is only a single LookupData in the Sketch Data, all sketches use that LookupData by default. However, if there is more than one LookupData, sketches can refer to a specific LookupData by setting the value of Sketch.currentSketchLookup to the matching lookupData.name.

Must be at least 1 characters long

domain Required


The domain to which this set of lookups should be applied. For example, if the domain is 'outbuilding' then these lookup values may be applied by any segment having that same domain.

domain

Type: enum (of string)

A domain is a broad term for a collection of segment types or lookup types. For example, 'outbuildings' are a whole class of things that belong approximately in the same 'domain'.

Same definition as domain

lookups Required

Type: object

Dictionary of lookups tied to this collection of lookupData.

Each additional property must conform to the following schema

Type: object

Detailed values for a single lookup record identified by the parent id key.

A lookup is like a row in a database with a unique key (id) that is used to establish a link to one or more vectors in a sketch.

No Additional Properties

name Required

Type: string

Relatively short name value that is commonly, although not always, also used as a label value in sketches, e.g., RESIDENTIAL OFFICE.

Must be at least 1 characters long

Must be at most 50 characters long

Type: string

Description can be a significantly longer value than the title. It is not typically displayed in a sketch drawing but carries additional data for the CAMA system.

Must be at least 1 characters long

Must be at most 255 characters long

Type: integer

Unique in a single lookupData this is used for sorting the list of lookups in a client application

Value must be greater or equal to 0

Type: object

Styles are used to draw sketch segments correctly. The styles are linked to segments by the parent id key for a lookup.

No Additional Properties

Any additional attributes that are needed for the lookup.

attributes

Type: array of object

Generic collection of zero or more attributes with a key and value

Same definition as attributes
Type: array of object

Each item of this array must be:

Type: object
No Additional Properties

value Required

Type: string

Example:

"Georgia, serif"
Type: array of object

Each item of this array must be:

Type: object
No Additional Properties

name Required

Type: string

value Required

Type: object

rgbHexColor

Type: string

A three or six character representation of an RGB value in hexadecimal.

Same definition as rgbHexColor
Type: array of object

Each item of this array must be:

Type: object
No Additional Properties

name Required

value Required

Type: array of object

Each item of this array must be:

Type: object
No Additional Properties

value Required

Type: integer Default: 1
Type: array of object

Each item of this array must be:

Type: object
No Additional Properties

value Required

Type: array of integer

Follows the SVG standard for defining dashed line patterns.

Each item of this array must be:

Type: array of object

Each item of this array must be:

Type: object
No Additional Properties

value Required

Type: object

pattern

Type: object

Defines a pattern using the specified elements and style.

No Additional Properties
Type: integer

Value must be greater or equal to 0

Type: integer

Value must be greater or equal to 0

sketches Required

Type: array

Each item of this array must be:

Type: object

A sketch is a collection of segments and related metadata that can be rendered as a standalone view of all--or part of--an assessable property. Depending on the capabilities of the CAMA system, there may but just one, or multiple sketches in an SDS document.

No Additional Properties

id Required

Type: integer

The sketch ID must be unique in the collection of sketches

label Required

Type: string

The sketch label is a name for a sketch that a human can read and understand, e.g., 'Building #1'.

Must be at least 1 characters long

Must be at most 50 characters long

segments Required

Type: array

A sketch has zero or more segments.

Must contain a minimum of 0 items

Each item of this array must be:

Type: object

A segment is a logical piece of a sketch. It typically represents a segment of a structure that has characteristics affecting the assessed value of a property. For example, a segment might be a bedroom, or a patio, or an entire section of a large building. Segments are composed of vectors and carry their own summary area and perimeter

No Additional Properties

id Required

Type: object
No Additional Properties

position Required

Type: object

A point with an location in two dimensional space. The units of the coordinate are unspecified, coming instead from the parent sketch.

Same definition as position
Type: number Default: 0

Value must be greater or equal to 0 and lesser or equal to 360

Type: enum (of string) Default: "overridden"

Must be one of:

  • "centered"
  • "overridden"

values Required

Type: array

Each item of this array must be:

Type: object
No Additional Properties

lookupCode Required


This should be a valid lookup id key present in the configuration.lookupCollection[].lookupData.lookups in this SDS document.

lookupId

Type: string

A unique identifier for a lookup, e.g., MH4, ROFFICEA.

Must be at least 1 characters long

Must be at most 20 characters long

text Required

Type: string

Label text is what is typically displayed on the sketch as the visible text annotating a segment or vector.

Must be at least 1 characters long

Must be at most 255 characters long

Type: object
No Additional Properties
Type: object

rgbHexColor

Type: string

A three or six character representation of an RGB value in hexadecimal.

Must match regular expression: ^#([\da-fA-F]{3}){1,2}$
Examples:

"#ffffff"
"#fff"
Type: number

Value must be greater or equal to 0

Type: enum (of string)

Must be one of:

  • "normal"
  • "italic"
Type: array

A segment is comprised of a collection or one or more vectors

Each item of this array must be:

Type: object
No Additional Properties

origin Required


The origin point for a drawing command is very similar to the move command in SVG: it's like positioning your pen on the page ready to draw. So the origin is the first coordinate of any subsequent sequence of drawing commands.

point-2d

Type: object

A point with an location in two dimensional space. The units of the coordinate are unspecified, coming instead from the parent sketch.

Same definition as position

commands Required

Type: array

Following the spirit of standards like HTML Canvas and Scalable Vector Graphics (SVG), sketch commands describe how to draw elements on the page rather than describing the geometry itself. For example, rather than define a line as two coordinate pairs (start and end), the line command assumes an existing starting point, and its job is to 'draw a straight line to an end point`.

Each item of this array must be:

Type: object

styledLine

Type: object
No Additional Properties

line Required

Type: object

A line is defined--somewhat paradoxically--using a single 2-dimensional point, which is the ending point of that line. The starting point of the line is either (a) the origin point of the sketch (typically [0,0]) or (b) the origin point for the vector containing the line, or (c) the endpoint of the line immediately proceeding the current line. In other words, if a line defines only it's end point then something else must be defining it's starting point, even if somewhat indirectly.

No Additional Properties
Type: object

Drawing commands result in length values being calculated for edges. The appearance of dimension labels can be configured for vectors or individual commands.

Same definition as dimensionLabel

styledArc

Type: object
No Additional Properties

arc Required

Type: object

A simple two-point arc with a height and direction

No Additional Properties
Type: enum (of string) Default: "clockwise"

Rotation with respect to the bearing of a line

Must be one of:

  • "clockwise"
  • "counterclockwise"
Type: object

Drawing commands result in length values being calculated for edges. The appearance of dimension labels can be configured for vectors or individual commands.

Same definition as dimensionLabel
Type: enum (of string) Default: "positive"

Vectors having positive area add their area to the calculated area of the segment to which they belong. Vectors having negative areas subtract from total calculated segment area.

Must be one of:

  • "positive"
  • "negative"
Type: enum (of string) Default: "sketched"

A vector can be something that is sketched to represent a real-world shape. That is sketched. A vector can also be a placeholder for a real-world structure or segment of a structure. In that case the drawing type does not typically represent the real world thing, e.g., it's a symbol or a square. A placeholder may even have no visual representation at all beyond a label on the sketch.

Must be one of:

  • "sketched"
  • "placeholder"
Type: object

Drawing commands result in length values being calculated for edges. The appearance of dimension labels can be configured for vectors or individual commands.

No Additional Properties
Type: enum (of string) Default: "inside"

Must be one of:

  • "inside"
  • "outside"
Type: enum (of string) Default: "visible"

Showing or hiding something in a sketch is a visual treatment only. The element, such as a dimension or label, is still encoded in the SDS document. It is just not visible in a sketch that a user sees.

Must be one of:

  • "visible"
  • "hidden"
Type: object

Areas are alway positive because the way that they are used in calculations depends on their areaType rather than the sign (+/-) of their value.

Same definition as area
Type: array of object

Generic collection of zero or more attributes with a key and value

Each item of this array must be:

Type: object
No Additional Properties

key Required

Type: string

Must be at least 1 characters long

value Required

Type: string, number, object, boolean or array
Type: number Default: 100

The boundary for a segment can optionally be set in 'ground units' (see unitsOfMeasure and systemOfMeasure). This has the effect of setting the square of ground within which the segment should be defined. For example, setting boundarySize to 50 if the unitsOfMeasure are feet indicates that the segment should not extend outside of the 50x50 foot square with an origin of [0,0]. Note that this value does have a default but may be ignore if the boundaryConstrainedCapability is disabled in the SDS document configuration settings.

Type: integer

Page on which the item appears. The set of pages in a sketch is determined by collecting a list of unique page numbers in the child objects in that sketch. For example, if there are two values in a sketch of segment[0].page = 1 and segment[1].page = 4 then the sketch will have two pages with non-consecutive page numbers. The same can be true for notes in a sketch: they can in effect 'create' pages by referencing a page number.

Value must be greater or equal to 1

Type: object

Areas are alway positive because the way that they are used in calculations depends on their areaType rather than the sign (+/-) of their value.

scopedNumber

Type: object

A value such as area or perimeter that has both an explicit value and a record of how the value was derived.

No Additional Properties
Type: enum (of string) Default: "computed"

The methodology used to create the data held in an attribute. The primary distinction is between data that is computed through a repeatable algorithm, and data that is manually overridden by a human. A typical case would be an area that is automatically calculated by a sketch application vs. a value for an area that is typed by a human because it is considered more relevant to the assessment process.

Must be one of:

  • "computed"
  • "overridden"
Type: object

scopedNumber

Type: object

A value such as area or perimeter that has both an explicit value and a record of how the value was derived.

Same definition as scopedNumber

A segment may represent an outbuilding. Downstream consumers may treat these segments differently but the only difference inside the SDS document is that lookups for labeling and styling explicitly coming from the configuration.outbuildingLookups list. So the segment.label.lookupCode value must exist in that lookup data list rather than the regular configuration.lookupData list.

domain

Type: enum (of string)

A domain is a broad term for a collection of segment types or lookup types. For example, 'outbuildings' are a whole class of things that belong approximately in the same 'domain'.

Same definition as domain
Type: array

Each item of this array must be:

Type: object

Notes are not associated with segments. They are free-form text positioned on a specific page of a sketch.

No Additional Properties

keycode Required

Type: string

Unique code or identifier representing the note within a sketch. By convention it takes the form 'page#/note#', e.g., '0/1' but it can be any string value.

Must be at least 1 characters long

Must be at most 10 characters long

text Required

Type: string

The label text visible to a user on the sketch surface.

Must be at least 1 characters long

Must be at most 255 characters long

page Required

Type: integer

Page on which the item appears. The set of pages in a sketch is determined by collecting a list of unique page numbers in the child objects in that sketch. For example, if there are two values in a sketch of segment[0].page = 1 and segment[1].page = 4 then the sketch will have two pages with non-consecutive page numbers. The same can be true for notes in a sketch: they can in effect 'create' pages by referencing a page number.

Same definition as page

position Required

Type: object

A point with an location in two dimensional space. The units of the coordinate are unspecified, coming instead from the parent sketch.

No Additional Properties
Example:

{
    "x": 0,
    "y": 0
}