# Comparison of Connector Selector and Hanger Selector: Endpoint & Request Model Differences

## Table of Contents

- [A. Endpoints](#a-endpoints)
- [B. Request Model](#b-request-model)
  - [1. Joist (Flush Top)](#1-joist-flush-top)
  - [2. Truss (Flush Bottom)](#2-truss-flush-bottom)
  - [3. Multi-Truss (Flush Bottom)](#3-multi-truss-flush-bottom)
- [C. ENUM's](#c-enums)


## A. Endpoints

The Hanger Selector endpoint merges the Joist and Truss endpoints into a single endpoint. The request type is determined
by the value of `flushOption`: `TOP` for Joist (Flush Top) or `BOTTOM` for Truss/Multi-Truss (Flush Bottom).

| Type | Connector Selector Endpoint | Hanger Selector Endpoint |
|  --- | --- | --- |
| Joist (Flush Top) | POST - /api/Hangers | POST - /hanger-selector/hangers |
| Joist (Flush Top) - Get multiple | POST - /api/Hangers/GetMultiple | POST - /hanger-selector/get-multiple |
| Truss/Multi-Truss (Flush Bottom) | POST -/api/TrussHangers | POST - /hanger-selector/hangers |
| Truss/Multi-Truss (Flush Bottom) - Get multiple | POST -/api/TrussHangers/GetMultiple | POST - /hanger-selector/get-multiple |
| Reasons why specific models aren't returned |  | POST - /hanger-selector/why-not |


## B. Request Model

The request model has been changed based on the differences between the Connector Selector and Hanger Selector
endpoints.

### 1. Joist (Flush Top)

table
thead
tr
th
Joist Model - Connector Selector
th
Flush Top Model - Hanger Selector
th
Note
tbody
tr
td
td
pre
code
"flushOption": "TOP"
td
span
NEW
br
• New field name 
code
flushOption
, which can be 
code
TOP
 or 
code
BOTTOM
, to determine whether the request is for Joist (Flush Top) or Truss/Multi-Truss (Flush Bottom).
tr
td
td
pre
code
"ansitpi": 0
td
span
NEW
br
• Add new field 
code
ansitpi
 (optional) support for Truss/Multi-Truss (Flush Bottom) request
tr
td
pre
code
"filters": {
  "depth": 0,
  "series": "",
  "webStiffeners": 0,
  "width": 0
}
td
pre
code
"filters": {
  "depth": 0,
  "model": "",
  "series": "",
  "webStiffeners": 0,
  "width": 0
}
td
span
NEW
br
• Add new field 
code
model
 inside the filter model, to support filter by model name
tr
td
pre
code
"headerMember": {
  "depth": 3.5,
  "material": 1,
  "ply": 1,
  "topChord": 1,
  "width": 1.5
}
td
pre
code
"carryingMember": {
  "depth": 3.5,
  "kingHeight": 0,
  "kingWidth": 0,
  "material": 1,
  "ply": 1,
  "topChord": 1,
  "topChordPly": 0,
  "width": 1.5
}
td
span
NEW
br

        • Add new field 
code
kingHeight
 (optional) support for Truss/Multi-Truss (Flush Bottom) request
br

        • Add new field 
code
kingWidth
 (optional) support for Truss/Multi-Truss (Flush Bottom) request
br

        • Add new field 
code
topChordPly
 (optional) support for Truss/Multi-Truss (Flush Bottom) request
br
br
span
UPDATED
br

        • Rename 
code
headerMember
 to 
code
carryingMember
tr
td
pre
code
"joistMember": {
  "angle": {
    "skewAngle": 0,
    "skewType": 0,
    "slopeAngle": 0,
    "slopeType": 0
  },
  "depth": 3.5,
  "loads": {
    "load": 100,
    "uplift": 125
  },
  "material": 1,
  "ply": 1,
  "width": 1.5
}
td
pre
code
"carriedMembers": [
  {
    "angle": {
      "skewAngle": 0,
      "skewType": 0,
      "slopeAngle": 0,
      "slopeType": 0
    },
    "depth": 3.5,
    "loads": {
      "load": 100,
      "uplift": 125
    },
    "material": 1,
    "ply": 1,
    "width": 1.5
  }
]
td
span
UPDATED
br

        • Rename 
code
joistMember
 to 
code
carriedMembers
br

        • Refactored 
code
joistMember
 from a single object to a list of objects.
      
tr
td
pre
code
"manufacturer": 0
td
td
span
REMOVED
br
• Remove the field 
code
manufacturer
 from the request.
br
The default value is: 
code
SST_SIMPSON
tr
td
pre
code
"buildingCode": 20
td
pre
code
"buildingCode": 20
td
tr
td
pre
code
"concealed": 0
td
pre
code
"concealed": 0
td
tr
td
pre
code
"fastenerType": 0
td
pre
code
"fastenerType": 0
td
tr
td
pre
code
"designInformations": {
  "downloadDurationType": 100,
  "upliftLoadDurationType": 100
}
td
pre
code
"designInformations": {
  "downloadDurationType": 100,
  "upliftLoadDurationType": 100
}
td
tr
td
pre
code
"hangerOptions": {
  "topFlangeOptions": {
    "topFlangeOffset": 0,
    "topFlangeOpenClosedAngle": 0,
    "topFlangeOpenClosedType": 0,
    "topFlangeSlopedDownAngle": 0,
    "topFlangeSlopedDownType": 0
  }
}
td
pre
code
"hangerOptions": {
  "topFlangeOptions": {
    "topFlangeOffset": 0,
    "topFlangeOpenClosedAngle": 0,
    "topFlangeOpenClosedType": 0,
    "topFlangeSlopedDownAngle": 0,
    "topFlangeSlopedDownType": 0
  }
}
td
tr
td
pre
code
"ledger": 0
td
pre
code
"ledger": 0
td
tr
td
pre
code
"style": 0
td
pre
code
"style": 0
td
tr
td
pre
code
"sort": 0
td
pre
code
"sort": 0
td
### 2. Truss (Flush Bottom)

table
thead
tr
th
Truss Model - Connector Selector
th
Flush Bottom Model - Hanger Selector
th
Note
tbody
tr
td
td
pre
code
"flushOption": "BOTTOM"
td
span
NEW
br
• New field name 
code
flushOption
, which can be 
code
TOP
 or 
code
BOTTOM
, to determine whether the request is for Joist (Flush Top) or Truss/Multi-Truss (Flush Bottom).
tr
td
td
pre
code
"hangerOptions": null
td
span
NEW
br
• Add new field 
code
hangerOptions
 (optional) support for Joist (Flush Top) request
tr
td
pre
code
"filters": {
  "depth": 0,
  "series": "",
  "webStiffeners": 0,
  "width": 0
}
td
pre
code
"filters": {
  "depth": 0,
  "model": "",
  "series": "",
  "webStiffeners": 0,
  "width": 0
}
td
span
NEW
br
• Add new field 
code
model
 inside the filter model, to support filter by model name
tr
td
pre
code
"girder": {
  "depth": 9.25,
  "kingHeight": 0,
  "kingWidth": 0,
  "material": 5,
  "ply": 1,
  "topChordPly": 0,
  "width": 1.5
}
td
pre
code
"carryingMember": {
  "depth": 9.25,
  "kingHeight": 0,
  "kingWidth": 0,
  "material": 5,
  "ply": 1,
  "topChord": 0,
  "topChordPly": 0,
  "width": 1.5
}
td
span
NEW
br

        • Add new field 
code
topChord
 (optional) support for Joist (Flush Top) request
br
◦ Typical use case, 4x2 Floor Trusses
br
br
span
UPDATED
br

        • Rename 
code
girder
 to 
code
carryingMember
tr
td
pre
code
"truss": [
  {
    "angle": {
      "skewAngle": 0,
      "skewType": 0,
      "slopeAngle": 0,
      "slopeType": 0
    },
    "depth": 7,
    "loads": {
      "load": 100,
      "uplift": 125
    },
    "material": 5,
    "ply": 1,
    "width": 1.5
  }
]
td
pre
code
"carriedMembers": [
  {
    "angle": {
      "skewAngle": 0,
      "skewType": 0,
      "slopeAngle": 0,
      "slopeType": 0
    },
    "depth": 7,
    "loads": {
      "load": 100,
      "uplift": 125
    },
    "material": 5,
    "ply": 1,
    "width": 1.5
  }
]
td
span
UPDATED
br
• Rename 
code
truss
 to 
code
carriedMembers
tr
td
pre
code
"manufacturer": 0
td
td
span
REMOVED
br
• Remove the field 
code
manufacturer
 from the request.
br
The default value is: 
code
SST_SIMPSON
tr
td
pre
code
"ansitpi": 0
td
pre
code
"ansitpi": 0
td
tr
td
pre
code
"buildingCode": 20
td
pre
code
"buildingCode": 20
td
tr
td
pre
code
"concealed": 0
td
pre
code
"concealed": 0
td
tr
td
pre
code
"designInformations": {
  "downloadDurationType": 100,
  "upliftLoadDurationType": 100
}
td
pre
code
"designInformations": {
  "downloadDurationType": 100,
  "upliftLoadDurationType": 100
}
td
tr
td
pre
code
"fastenerType": 0
td
pre
code
"fastenerType": 0
td
tr
td
pre
code
"ledger": 0
td
pre
code
"ledger": 0
td
tr
td
pre
code
"style": 0
td
pre
code
"style": 0
td
tr
td
pre
code
"sort": 0
td
pre
code
"sort": 0
td
### 3. Multi-Truss (Flush Bottom)

table
thead
tr
th
Truss Model - Connector Selector
th
Flush Bottom Model - Hanger Selector
th
Note
tbody
tr
td
td
pre
code
"flushOption": "BOTTOM"
td
span
NEW
br
• New field name 
code
flushOption
, which can be 
code
TOP
 or 
code
BOTTOM
, to determine whether the request is for Joist (Flush Top) or Truss/Multi-Truss (Flush Bottom).
tr
td
td
pre
code
"hangerOptions": null
td
span
NEW
br
• Add new field 
code
hangerOptions
 (optional) support for Joist (Flush Top) request
tr
td
pre
code
"filters": {
  "depth": 0,
  "series": "",
  "webStiffeners": 0,
  "width": 0
}
td
pre
code
"filters": {
  "depth": 0,
  "model": "",
  "series": "",
  "webStiffeners": 0,
  "width": 0
}
td
span
NEW
br
• Add new field 
code
model
 inside the filter model, to support filter by model name
tr
td
pre
code
"girder": {
  "depth": 9.25,
  "kingHeight": 0,
  "kingWidth": 0,
  "material": 5,
  "ply": 1,
  "topChordPly": 0,
  "width": 1.5
}
td
pre
code
"carryingMember": {
  "depth": 9.25,
  "kingHeight": 0,
  "kingWidth": 0,
  "material": 5,
  "ply": 1,
  "topChord": 0,
  "topChordPly": 0,
  "width": 1.5
}
td
span
NEW
br

        • Add new field 
code
topChord
 (optional) support for Joist (Flush Top) request
br
◦ Typical use case, 4x2 Floor Trusses
br
br
span
UPDATED
br

        • Rename 
code
girder
 to 
code
carryingMember
tr
td
pre
code
"truss": [
  {
    "angle": {
      "skewAngle": 45,
      "skewType": 1,
      "slopeAngle": 0,
      "slopeType": 0
    },
    "depth": 5.5,
    "loads": {
      "load": 0,
      "uplift": 0
    },
    "material": 5,
    "ply": 1,
    "width": 1.5
  },
  {
    "angle": {
      "skewAngle": 0,
      "skewType": 0,
      "slopeAngle": 0,
      "slopeType": 0
    },
    "depth": 5.5,
    "loads": {
      "load": 0,
      "uplift": 0
    },
    "material": 5,
    "ply": 1,
    "width": 1.5
  },
  {
    "angle": {
      "skewAngle": 45,
      "skewType": 2,
      "slopeAngle": 0,
      "slopeType": 0
    },
    "depth": 5.5,
    "loads": {
      "load": 0,
      "uplift": 0
    },
    "material": 5,
    "ply": 1,
    "width": 1.5
  }
]
td
pre
code
"carriedMembers": [
  {
    "angle": {
      "skewAngle": 45,
      "skewType": 1,
      "slopeAngle": 0,
      "slopeType": 0
    },
    "depth": 5.5,
    "loads": {
      "load": 0,
      "uplift": 0
    },
    "material": 5,
    "ply": 1,
    "width": 1.5
  },
  {
    "angle": {
      "skewAngle": 0,
      "skewType": 0,
      "slopeAngle": 0,
      "slopeType": 0
    },
    "depth": 5.5,
    "loads": {
      "load": 0,
      "uplift": 0
    },
    "material": 5,
    "ply": 1,
    "width": 1.5
  },
  {
    "angle": {
      "skewAngle": 45,
      "skewType": 2,
      "slopeAngle": 0,
      "slopeType": 0
    },
    "depth": 5.5,
    "loads": {
      "load": 0,
      "uplift": 0
    },
    "material": 5,
    "ply": 1,
    "width": 1.5
  }
]
td
span
UPDATED
br
• Rename 
code
truss
 to 
code
carriedMembers
 and refactored from a single object to a list of objects. (Multi-truss)
tr
td
pre
code
"manufacturer": 0
td
td
span
REMOVED
br
• Remove the field 
code
manufacturer
 from the request.
br
The default value is: 
code
SST_SIMPSON
tr
td
pre
code
"ansitpi": 0
td
pre
code
"ansitpi": 0
td
tr
td
pre
code
"buildingCode": 20
td
pre
code
"buildingCode": 20
td
tr
td
pre
code
"concealed": 0
td
pre
code
"concealed": 0
td
tr
td
pre
code
"designInformations": {
  "downloadDurationType": 100,
  "upliftLoadDurationType": 100
}
td
pre
code
"designInformations": {
  "downloadDurationType": 100,
  "upliftLoadDurationType": 100
}
td
tr
td
pre
code
"fastenerType": 0
td
pre
code
"fastenerType": 0
td
tr
td
pre
code
"ledger": 0
td
pre
code
"ledger": 0
td
tr
td
pre
code
"style": 0
td
pre
code
"style": 0
td
tr
td
pre
code
"sort": 0
td
pre
code
"sort": 0
td
## C. ENUM's

Similar to what’s above, some of the ENUM’s have been updated as well. Mostly purging out unused ENUM’s.

* New:
  * WhyNotReason
  * JoistSelectorSpecies ENUM's
* Reduced: SSTConnectorError
* Removed ENUM’s for:
  * SST_MANUFACTURER
  * SSTHGR_SORT
  * SST_NAIL
    * `SST_Nail_58Anchor_Generic (value 264)`
    * `SST_Nail_12Anchor_Generic (value 263)`
  * Multi-Ply Join
  * Roof to Wall