> ## Documentation Index
> Fetch the complete documentation index at: https://api.buildingswell.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Create an order from a route

> Build a new order for a project by applying a route, which brings the route's whole structure with it. This is the normal way to start work that follows a standard process.



## OpenAPI

````yaml /openapi.yaml post /concepts/orders/from-route
openapi: 3.0.3
info:
  title: BuildingSwell Public API
  version: 2.0.0
  description: >
    The BuildingSwell v2 public API. Every request needs an `X-API-Key` header,
    and

    every key is scoped to one organization, so you only ever see your own data.


    Base URL: `https://app.buildingswell.com/api/v2`


    Most resources share the same CRUD and query shape. Read the

    [standard endpoints](/guides/standard-endpoints) and

    [querying](/guides/querying) guides once and the rest of this reference
    follows

    the same rules. For what a delete actually removes, see

    [archiving and deleting](/guides/archiving-and-deleting).
servers:
  - url: https://{instance}/api/v2
    description: Your BuildingSwell instance
    variables:
      instance:
        default: app.buildingswell.com
        description: Your BuildingSwell host
security:
  - ApiKeyAuth: []
tags:
  - name: Projects
    description: Customer jobs, and the archive behavior they share with most resources.
  - name: Stages
    description: Reusable shop stations, scoped to a department.
  - name: Deliverables
    description: >-
      The work tree: orders, routes, phases, components, stages, steps, and QC
      steps.
  - name: Work sessions
    description: Time logged by one person against one deliverable.
  - name: Dependencies
    description: Scheduling links between deliverables.
  - name: Documents
    description: Files attached to orders.
  - name: QC
    description: QC templates and the inspection sets filled from them.
  - name: People (Workers)
    description: Your workforce roster. Called People in the app and `worker` in the API.
  - name: Timesheets
    description: Read-only view over attendance and work sessions.
  - name: Codes
    description: Cost, union, and per diem code lists. Referenced by value, not by id.
  - name: Roles
    description: Permission roles, and the statements that make them up.
  - name: Users
    description: >-
      People with a BuildingSwell login. Called Users in the app and
      `organization-member` in the API.
  - name: Concepts
    description: Deliverable writes with the nesting rules enforced.
  - name: Items
    description: Material and part definitions, purchasing units, and availability.
  - name: Item vendors
    description: Supplier SKUs linked to items.
  - name: Inventory stock
    description: Read-only quantities by item and location.
  - name: Inventory transactions
    description: The inventory ledger and its posting rules.
  - name: Inventory allocations
    description: Read-only reservations for orders and projects.
  - name: BOM lines
    description: Planned material inputs for routes, orders, and projects.
  - name: Production outputs
    description: Declarations of manufactured outputs.
  - name: Units of measure
    description: Reusable names and abbreviations for quantities.
  - name: Vendors
    description: Suppliers, manufacturers, and subcontractors.
  - name: Locations
    description: Department and project locations for storage and delivery.
  - name: Deliveries
    description: Inbound receipts, outbound trips, and transfers.
  - name: Delivery lines
    description: Material and ad-hoc manifest lines.
  - name: Trucks
    description: Fleet vehicles and their capacity.
  - name: Contacts
    description: Drivers, receivers, and other business contacts.
  - name: Project contacts
    description: Links between projects and contacts.
  - name: Teams
    description: Read-only department teams.
  - name: Shifts
    description: Read-only department shifts.
  - name: Departments (shops)
    description: Read-only departments, called shops in the API.
  - name: Custom properties
    description: Organization property definitions and values on orders.
paths:
  /concepts/orders/from-route:
    post:
      tags:
        - Concepts
      summary: Create an order from a route
      description: >-
        Build a new order for a project by applying a route, which brings the
        route's whole structure with it. This is the normal way to start work
        that follows a standard process.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - routeId
                - projectId
                - name
              properties:
                routeId:
                  type: string
                  format: uuid
                  description: Route to instantiate.
                projectId:
                  type: string
                  format: uuid
                  description: Project the order belongs to.
                name:
                  type: string
                  description: Name for the new order.
                identifier:
                  type: string
                  description: >-
                    Your own identifier. Generated as `ORD-` when you leave it
                    out.
                quantity:
                  type: integer
                  description: How many the order covers.
                  default: 1
                dueDate:
                  type: string
                  format: date-time
                  description: When the order is due.
      responses:
        '201':
          description: The new order's context.
          content:
            application/json:
              schema:
                type: object
                properties:
                  orderId:
                    type: string
                    format: uuid
                    description: The new order.
                  order:
                    $ref: '#/components/schemas/ConceptNode'
                  rollup:
                    $ref: '#/components/schemas/TreeRollup'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          $ref: '#/components/responses/Conflict'
        '429':
          $ref: '#/components/responses/RateLimited'
components:
  schemas:
    ConceptNode:
      type: object
      description: >-
        A deliverable as the concepts layer returns it: the node's own fields
        plus its resolved concept context.
      properties:
        id:
          type: string
          format: uuid
          description: Node id.
        identifier:
          type: string
          description: Human-readable id.
        name:
          type: string
          description: Node name.
        type:
          type: string
          enum:
            - order
            - route
            - overhead
            - template-phase
            - phase
            - component
            - stage
            - step
            - qcstep
          description: Concept this node represents.
        parentId:
          type: string
          format: uuid
          description: Node directly above this one.
          nullable: true
        rootParentId:
          type: string
          format: uuid
          description: Root of the tree.
          nullable: true
        quantity:
          type: integer
          description: How many of this node the work covers.
        cycleTimeSec:
          type: integer
          description: Cycle time per unit, in seconds.
        durationSec:
          type: integer
          description: Total duration, in seconds.
        peopleNum:
          type: integer
          description: How many people the node is planned for.
        costCode:
          type: string
          description: Cost code.
          nullable: true
        data:
          type: object
          description: Per-concept fields for this `type`.
          additionalProperties: true
        computed:
          $ref: '#/components/schemas/DeliverableComputed'
    TreeRollup:
      type: object
      description: Counts and flags rolled up across a whole tree.
      properties:
        nodeCount:
          type: integer
          description: Nodes in the tree.
        byType:
          type: object
          description: Node count per `type`.
          additionalProperties: true
        byStatus:
          type: object
          description: Node count per progress status.
          additionalProperties: true
        edges:
          type: integer
          description: Dependency links in the tree.
        late:
          type: integer
          description: Nodes past their date.
        atRisk:
          type: integer
          description: Nodes trending late.
        onHold:
          type: integer
          description: Nodes on hold.
        currentPhases:
          type: array
          items:
            type: string
            description: Phase name.
          description: Phases on the active work frontier.
        currentStageIds:
          type: array
          items:
            type: string
            format: uuid
            description: Station id.
          description: Stations on the active work frontier.
    DeliverableComputed:
      description: >-
        Values BuildingSwell derives from the tree on every read. All read-only:
        anything you send here is ignored.
      type: object
      properties:
        rootType:
          type: string
          enum:
            - order
            - route
            - overhead
            - template-phase
            - phase
            - component
            - stage
            - step
            - qcstep
            - group
          description: '`type` of the root node of this tree.'
          nullable: true
        fullName:
          type: array
          description: Name breadcrumb from the root down to this node.
          items:
            type: string
            description: Node name.
        fullPath:
          type: array
          description: Id breadcrumb from the root down to this node.
          items:
            type: string
            format: uuid
            description: Node id.
        shopId:
          type: string
          format: uuid
          description: >-
            Department that applies to this node, inherited from the nearest
            ancestor when the node does not set one. `null` means
            cross-department.
          nullable: true
        phasesPath:
          type: array
          description: Phase names in this node's ancestry.
          items:
            type: string
            description: Phase name.
        phase:
          type: string
          description: Nearest phase name above this node.
          nullable: true
        currentChildren:
          type: array
          description: Summary of the node's direct children.
          items:
            type: object
            description: One direct child.
            properties:
              id:
                type: string
                format: uuid
                description: Child id.
              name:
                type: string
                description: Child name.
              stageId:
                type: string
                format: uuid
                description: Station the child links to, when it is a stage node.
                nullable: true
              type:
                type: string
                enum:
                  - order
                  - route
                  - overhead
                  - template-phase
                  - phase
                  - component
                  - stage
                  - step
                  - qcstep
                description: Child type.
        containedStageIds:
          type: array
          description: Every station anywhere beneath this node.
          items:
            type: string
            format: uuid
            description: Station id.
            nullable: true
        containedPhaseNames:
          type: array
          description: Every phase name anywhere beneath this node.
          items:
            type: string
            description: Phase name.
        containedCurrentStageIds:
          type: array
          description: Stations beneath this node that sit on the active work frontier.
          items:
            type: string
            format: uuid
            description: Station id.
            nullable: true
        containedCurrentPhaseNames:
          type: array
          description: Phase names beneath this node that sit on the active work frontier.
          items:
            type: string
            description: Phase name.
        currentStageIds:
          type: array
          description: >-
            Stations on this node's own active work frontier. Filter it with the
            `jinco` operator.
          items:
            type: string
            format: uuid
            description: Station id.
        currentPhaseNames:
          type: array
          description: Phase names on this node's own active work frontier.
          items:
            type: string
            description: Phase name.
        combinedWorkerIds:
          type: array
          description: Everyone assigned anywhere beneath this node.
          items:
            type: string
            format: uuid
            description: Person id.
        combinedTagIds:
          type: array
          description: Every tag anywhere beneath this node.
          items:
            type: string
            description: Tag id.
        workerIds:
          type: array
          description: People assigned directly to this node.
          items:
            type: string
            format: uuid
            description: Person id.
        tags:
          type: array
          description: Tags on this node itself.
          items:
            type: string
            description: Tag id.
        isLeaf:
          type: boolean
          description: '`true` when the node has no children.'
          default: true
        projectId:
          type: string
          format: uuid
          description: Project this tree belongs to.
          nullable: true
        date:
          type: string
          description: Effective date for the node.
          nullable: true
        isAtRisk:
          type: boolean
          description: '`true` when the node is trending late.'
          default: false
        isLate:
          type: boolean
          description: '`true` when the node has missed its date.'
          default: false
        effectiveDueDate:
          type: string
          description: Due date that applies, whether set here or inherited.
          nullable: true
        effectiveDueDateIsInherited:
          type: boolean
          description: '`true` when the due date comes from an ancestor.'
          default: false
        effectiveDueDateIsLate:
          type: boolean
          description: '`true` when the effective due date has passed.'
          default: false
        hasReworkedStages:
          type: boolean
          description: '`true` when any stage beneath this node has been reworked.'
          default: false
        groupIds:
          type: array
          items:
            type: string
            format: uuid
          readOnly: true
          description: >-
            IDs of group deliverables containing this node. Maintained from
            group.data.itemIds.
    Error:
      type: object
      properties:
        error:
          type: object
          properties:
            message:
              type: string
              description: What went wrong, in plain language.
            code:
              type: string
              enum:
                - BAD_REQUEST
                - UNAUTHORIZED
                - FORBIDDEN
                - NOT_FOUND
                - CONFLICT
                - VALIDATION
                - UNIQUE_VIOLATION
                - FK_VIOLATION
                - RATE_LIMITED
                - INTERNAL
              description: >-
                Stable machine-readable code. Branch on this rather than on the
                message text.
            requestId:
              type: string
              description: Id for this request. Quote it when you contact support.
            details:
              type: array
              items:
                type: object
                description: One field-level problem.
                properties:
                  path:
                    type: string
                    description: Field that failed, for example `data.stageId`.
                  message:
                    type: string
                    description: Why it failed.
                  code:
                    type: string
                    description: Validation code.
              description: Per-field problems. Present on validation failures only.
            missingPermissions:
              type: array
              items:
                type: string
                description: Permission name.
              description: Permissions your key is missing. Present on `403` only.
        context:
          type: object
          description: Extra context for the error. Usually empty.
          additionalProperties: true
  responses:
    BadRequest:
      description: >-
        The request was malformed or failed validation. Check `error.details`
        for the fields at fault.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Unauthorized:
      description: The `X-API-Key` header is missing or the key is invalid.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Forbidden:
      description: >-
        Your key lacks the permission for this call. `error.missingPermissions`
        lists what is needed.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    NotFound:
      description: No record with that id in your organization.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Conflict:
      description: >-
        The write conflicts with existing data: a duplicate unique value
        (`UNIQUE_VIOLATION`), or a related record that blocks it
        (`FK_VIOLATION`).
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    RateLimited:
      description: >-
        Too many requests. Read `RateLimit-Reset` for when to retry. This
        response also carries a top-level `message` alongside `error`.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-API-Key
      description: >-
        Organization-scoped API key. Create one in the BuildingSwell app under
        Organization settings, API keys.

````