Havenly

Havenly is an online interior-design platform that connects clients with professional designers for virtual and in-person home-decorating services. Clients take a style quiz, match with a designer, collaborate on 3D room renderings, and shop curated furniture and decor from partner brands at exclusive prices. Havenly also offers AI-assisted design. The company exposes a REST API (documented publicly via Postman at api-docs.havenly.com) covering users and profiles, addresses, design boards and board products, a vendor product catalog (vendor variants), attribute types, board feedback, and user opinions/likes. Authentication is OAuth2 (password grant) returning a Bearer token; HAL+JSON responses use page/limit pagination and zf-doctrine-querybuilder query filters. Havenly is backed by 500 Global and Foundry Group.

Havenly publishes 1 API on the APIs.io network. Tagged areas include Company, Interior Design, Home Decor, Furniture, and E-Commerce.

Havenly’s developer surface includes documentation, API reference, pricing, signup flow, engineering blog, support, and 9 more developer resources.

34.1/100 thin Agent 32/100 agent aware Full breakdown ↓
scored 2026-07-20 · rubric v0.4
1 APIs 0 Features
CompanyInterior DesignHome DecorFurnitureE-CommerceMarketplaceDesignRetailAI

API Rating

API Evangelist API Evangelist Rating How this is scored →
scored 2026-07-20 · rubric v0.4
Composite quality — 34.1/100 · thin
Contract Quality 13.5 / 25
Developer Ergonomics 5.7 / 20
Commercial Clarity 8.9 / 20
Operational Transparency 0.0 / 13
Governance 0.0 / 12
Discoverability 6.0 / 10
Agent readiness — 32/100 · agent aware
Machine-Readable Contract 18 / 18
Agentic Access Contract 0 / 15
MCP Server 0 / 12
Machine-Readable Auth 10 / 10
Idempotency 0 / 9
Stable Error Semantics 0 / 8
Request/Response Examples 0 / 7
Rate-Limit Signaling 0 / 7
Typed Event Surface 0 / 6
Agent Skills 5 / 5
Well-Known Catalog 0 / 4
Consent & Bot Identity 0 / 3
Improve this rating by publishing the missing artifacts — every area above can be raised, and the full rubric is at apis.io/rating/. This rating is computed from github.com/api-evangelist/havenly: open an issue to ask a question, or submit a pull request to add artifacts. Want it done for you? Prioritized profiling — $2,500 →

APIs

Havenly API

REST API powering the Havenly interior-design platform: users and profiles, addresses, design boards and board products, vendor product variants (catalog), attribute types, boar...

Collections

Havenly API

POSTMAN

Resources

Get Started 2

Portal, sign-up, and the first successful call

Documentation 2

Reference material describing how the API behaves

Agent Surfaces 2

MCP servers, agent skills, and machine-readable catalogs

Access & Security 2

Authentication, authorization, and security posture

Operate 2

Status, limits, changes, and where to get help

Commercial 3

Pricing, plans, and the legal terms of use

Company 2

The organization behind the API

Source (apis.yml)

apis.yml Raw ↑
info:
  _postman_id: 72109199-4348-4d08-32e0-12c7d404319d
  name: Havenly API
  description: "<html><head></head><body><p>This is documentation to the Havenly API. IDs, names, emails found here are not\
    \ real and requests from the examples will need to be modified slightly to work (ie edited to use real IDs, passwords,\
    \ etc.)<br><br></p>\n<p>If you have feedback on this API we'd love to hear it! <a href=\"mailto:developers@havenly.com\"\
    > Click here to shoot us an email!</a>\n<br><br>\nHappy designing!</p>\n<h1 id=\"authentication\">Authentication</h1>\n\
    How to authenticate.<br>\nWhat is our outh method?\n\n<h1 id=\"query-filters\">Query filters</h1>\nWe use zf-doctrine-query\
    \ builder for query filters. Their documentation can be found \n<a href=\"https://github.com/zfcampus/zf-doctrine-querybuilder/blob/master/README.md\"\
    >here</a>\n\n<h1 id=\"tips-and-tricks\">Tips and Tricks</h1>\nEnvironment specific templates.<br>\nIn the process of working\
    \ with our API you will end up needing to switch environments and user types very frequently. An easy way to do this is\
    \ to have a template for each environment and each user type in that environment.<br>\nFor example:<br>\nTemplate of Local\
    \ (admin) would have<br>\n<li>api_url: http://api.havenly.local</li>\n<li>username: im+an+admin@havenly.com</li>\n<br><br>\n\
    This would then allow you to select that environment template and now all of your requests will operate as an admin against\
    \ the local dev setup.\n<br><br><br>\nFor testing payment methods in non-prod environments you can use any number of the\
    \ credit cards documented by Stripe (our payment processor). Their documentation can be found <a href=\"https://stripe.com/docs/testing#cards\"\
    >here</a>.</body></html>"
  schema: https://schema.getpostman.com/json/collection/v2.0.0/collection.json
  toc:
  - content: Authentication
    slug: authentication
  - content: Query filters
    slug: query-filters
  - content: Tips and Tricks
    slug: tips-and-tricks
  owner: '661087'
  collectionId: 72109199-4348-4d08-32e0-12c7d404319d
  publishedId: 6Yu1c7D
  public: true
  customColor:
    top-bar: FFFFFF
    right-sidebar: 1C2233
    highlight: a1adb7
  publishDate: '2017-03-16T05:10:41.000Z'
item:
- name: ' Authentication'
  item:
  - name: Authentication
    event:
    - listen: test
      script:
        type: text/javascript
        exec:
        - var jsonData = JSON.parse(responseBody);
        - tests["Has Bearer Token"] = jsonData.token_type === 'Bearer';
        - ''
        - postman.setEnvironmentVariable("token", jsonData.access_token);
    id: 9ebe4f02-e8bf-94ed-169f-d33e87a98e8e
    request:
      method: POST
      header:
      - key: Accept
        value: application/json
      - key: Content-Type
        value: application/json
      body:
        mode: raw
        raw: "{\n  \"grant_type\": \"password\",\n  \"username\": \"{{username}}\",\n  \"password\": \"testtest\",\n  \"client_id\"\
          : \"postman\"\n}"
      url: '{{api_url}}/oauth'
      description: '<p>This route is used to authenticate against the Havenly API as a user.</p>

        '
      urlObject:
        path:
        - oauth
        host:
        - '{{api_url}}'
        query: []
        variable: []
    response: []
    _postman_id: 9ebe4f02-e8bf-94ed-169f-d33e87a98e8e
  - name: Facebook Authentication
    event:
    - listen: test
      script:
        type: text/javascript
        exec:
        - var jsonData = JSON.parse(responseBody);
        - tests["Has Bearer Token"] = jsonData.token_type === 'Bearer';
        - ''
        - postman.setEnvironmentVariable("token", jsonData.access_token);
    id: 49c62e70-1239-3ea5-fa6e-9dafdc52db36
    request:
      method: POST
      header:
      - key: Accept
        value: application/json
      - key: Content-Type
        value: application/json
      - key: Authorization
        value: Basic aGF2ZW5seWFwcDo=
      body:
        mode: raw
        raw: "{\n  \"grant_type\": \"facebook\",\n  \"fb_token\": \"EAADxCCTfT8UBALJSk1RKp0SC3D7frahB8loLjbXHI6nrfy3SpPvtCSZBOflvcqdokmprCZBFPiR2mVZCnW2qGEFg9JPNI8ZCxdXUxUjuMdjDSQDYqY9Q0HvAcGVLklfRRPtmZAoZBVrXD0qLOSU1aooJW7hsansrcZD\"\
          \n}"
      url: '{{api_url}}/oauth'
      description: '<p>This route is used to authenticate against the Havenly API as a facebook user.</p>

        '
      urlObject:
        path:
        - oauth
        host:
        - '{{api_url}}'
        query: []
        variable: []
    response: []
    _postman_id: 49c62e70-1239-3ea5-fa6e-9dafdc52db36
  - name: External OAuth Authentication
    event:
    - listen: test
      script:
        id: baaf347b-19b7-40d0-b448-3ae5fb9d625d
        type: text/javascript
        exec:
        - ''
    id: 7e683be5-cc7b-b191-4180-fe6950ec6e42
    request:
      method: POST
      header:
      - key: Accept
        value: application/json
      - key: Content-Type
        value: application/json
      body:
        mode: raw
        raw: "{\n  \"grant_type\": \"external_oauth\",\n  \"client_id\": \"postman\",\n  \"provider\": \"airbnb\",\n  \"access_token\"\
          : \"40xdf4fvdotrpnwv6tkuroaze\"\n}"
      url: '{{api_url}}/oauth'
      description: '<p>This route is used to authenticate against the Havenly API as an Airbnb user.</p>

        '
      urlObject:
        path:
        - oauth
        host:
        - '{{api_url}}'
        query: []
        variable: []
    response:
    - id: 72474663-c714-0507-dc2d-1ac72b4ba9dd
      name: 400 Bad Request (Missing or invalid client_id)
      originalRequest:
        method: POST
        header:
        - key: Accept
          value: application/json
          disabled: false
        - key: Content-Type
          value: application/json
          disabled: false
        - key: Authorization
          value: Bearer 12bee851211493876e18a0510402ed17a7db075f
          disabled: false
        body:
          mode: raw
          raw: "{\n  \"grant_type\": \"external_oauth\",\n  \"provider\": \"airbnb\",\n  \"access_token\": \"40xdf4fvdotrpnwv6tkuroaze\"\
            \n}"
        url: '{{api_url}}/oauth'
      status: invalid_client
      code: 400
      _postman_previewlanguage: json
      header:
      - key: Connection
        value: keep-alive
        name: Connection
        description: ''
      - key: Content-Type
        value: application/problem+json
        name: Content-Type
        description: ''
      - key: Date
        value: Mon, 08 Jan 2018 20:37:15 GMT
        name: Date
        description: ''
      - key: Server
        value: nginx/1.10.3 (Ubuntu)
        name: Server
        description: ''
      - key: Transfer-Encoding
        value: chunked
        name: Transfer-Encoding
        description: ''
      cookie:
      - expires: Tue Jan 19 2038 03:14:07 GMT+0000 (Coordinated Universal Time)
        httpOnly: false
        domain: havenly.local
        path: /
        secure: false
        value: Q2FrZQ%3D%3D.NzJiYWJiMDA4MDA2NjVhNDRhNjc5NDEwMzVlMDc3YjcyNjkzOGY3MGU2MTJjZGQwMGIzMjU1Njc5ZmVjYzZkYuSUcslSx4Nyt0NuGNZi8lHh%2FLEO6z%2F7JSVHizHX0ddsS313UEmgdZarMCjYzf6yzw%3D%3D
        key: session_external_cookie[auth-redirect]
      - expires: Tue Jan 19 2038 03:14:07 GMT+0000 (Coordinated Universal Time)
        httpOnly: false
        domain: havenly.local
        path: /
        secure: false
        value: Q2FrZQ%3D%3D.MTUyOTBjNjUyMzkzY2ZhOTU2OThmNzBlZjI0N2I0YTJkOTM1YjIzNjEzNDE1NzZlNjU4MzVmZjczYTE0NWE3Ob1%2FXNqmsAQ1A3Zyx3T4KocM9VpTDzwsFA81hKWEN%2BVfbr8cl2s0N3aKzdoTOhiqIKGIWR%2F1qVSEQ0bB462JbWnb%2BUs6i4hBRECL9asUVxoFGIjhm7ITn5nAWz3f0MDP4q%2BUfUnW1bKYlDNoaPvE%2B1hXfAlQd718qfqICna7%2BOLm
        key: session_external_cookie[transaction_traffic_source]
      responseTime: '796'
      body: '{"type":"http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html","title":"invalid_client","status":400,"detail":"Client
        credentials were not found in the headers or body"}'
    - id: e0eb30ac-2218-bb02-7408-807d7f85dbb5
      name: External OAuth Authentication
      originalRequest:
        method: POST
        header:
        - key: Accept
          value: application/json
          disabled: false
        - key: Content-Type
          value: application/json
          disabled: false
        - key: Authorization
          value: Bearer 12bee851211493876e18a0510402ed17a7db075f
          disabled: false
        body:
          mode: raw
          raw: "{\n  \"grant_type\": \"external_oauth\",\n  \"client_id\": \"postman\",\n  \"provider\": \"airbnb\",\n  \"\
            access_token\": \"40xdf4fvdotrpnwv6tkuroaze\"\n}"
        url: '{{api_url}}/oauth'
      status: OK
      code: 200
      _postman_previewlanguage: json
      header:
      - key: Cache-Control
        value: no-store
        name: Cache-Control
        description: ''
      - key: Connection
        value: keep-alive
        name: Connection
        description: ''
      - key: Content-Type
        value: application/json
        name: Content-Type
        description: ''
      - key: Date
        value: Mon, 08 Jan 2018 20:34:49 GMT
        name: Date
        description: ''
      - key: Pragma
        value: no-cache
        name: Pragma
        description: ''
      - key: Server
        value: nginx/1.10.3 (Ubuntu)
        name: Server
        description: ''
      - key: Transfer-Encoding
        value: chunked
        name: Transfer-Encoding
        description: ''
      cookie:
      - expires: Tue Jan 19 2038 03:14:07 GMT+0000 (Coordinated Universal Time)
        httpOnly: false
        domain: havenly.local
        path: /
        secure: false
        value: Q2FrZQ%3D%3D.NzJiYWJiMDA4MDA2NjVhNDRhNjc5NDEwMzVlMDc3YjcyNjkzOGY3MGU2MTJjZGQwMGIzMjU1Njc5ZmVjYzZkYuSUcslSx4Nyt0NuGNZi8lHh%2FLEO6z%2F7JSVHizHX0ddsS313UEmgdZarMCjYzf6yzw%3D%3D
        key: session_external_cookie[auth-redirect]
      - expires: Tue Jan 19 2038 03:14:07 GMT+0000 (Coordinated Universal Time)
        httpOnly: false
        domain: havenly.local
        path: /
        secure: false
        value: Q2FrZQ%3D%3D.MTUyOTBjNjUyMzkzY2ZhOTU2OThmNzBlZjI0N2I0YTJkOTM1YjIzNjEzNDE1NzZlNjU4MzVmZjczYTE0NWE3Ob1%2FXNqmsAQ1A3Zyx3T4KocM9VpTDzwsFA81hKWEN%2BVfbr8cl2s0N3aKzdoTOhiqIKGIWR%2F1qVSEQ0bB462JbWnb%2BUs6i4hBRECL9asUVxoFGIjhm7ITn5nAWz3f0MDP4q%2BUfUnW1bKYlDNoaPvE%2B1hXfAlQd718qfqICna7%2BOLm
        key: session_external_cookie[transaction_traffic_source]
      responseTime: '1151'
      body: '{"access_token":"5ca13702fca48ed153984d963a683a96cfcaf405","expires_in":3600,"token_type":"Bearer","scope":null,"refresh_token":"3d31c190d2c875a40049d614c5aee7e98f3e24bc"}'
    _postman_id: 7e683be5-cc7b-b191-4180-fe6950ec6e42
  id: e70b1205-d558-7977-ce65-9a7c11524e71
  description: '<p>Authentication is the first piece to many of the Havenly API routes found here. Although not all of them
    require auth, it is required for most, so understanding the oauth flow is important.</p>

    '
  _postman_id: e70b1205-d558-7977-ce65-9a7c11524e71
- name: Addresses
  item:
  - name: Addresses (collection)
    id: 3328f4fb-f846-f98a-203c-ac8d5812324e
    request:
      method: GET
      header:
      - key: Authorization
        value: Bearer {{token}}
      - key: Accept
        value: application/json
      body:
        mode: formdata
        formdata: []
      url: '{{api_url}}/addresses'
      description: '<p>Get all addresses associated to the user.</p>

        '
      urlObject:
        path:
        - addresses
        host:
        - '{{api_url}}'
        query: []
        variable: []
    response: []
    _postman_id: 3328f4fb-f846-f98a-203c-ac8d5812324e
  id: a3c86327-0ff0-6bfd-ce8b-aa7a7d3c8780
  description: '<p>Routes/endpoints to manage a user''s addresses</p>

    '
  _postman_id: a3c86327-0ff0-6bfd-ce8b-aa7a7d3c8780
- name: Attribute Types
  item:
  - name: Fetch Attribute Types (Collection)
    id: 16f46f85-2e7d-51b9-7f71-b088ce049940
    request:
      method: GET
      header:
      - key: Authorization
        value: Bearer {{token}}
      - key: Accept
        value: application/json
      body:
        mode: formdata
        formdata: []
      url: '{{api_url}}/attribute-types'
      description: '<p>Get a list of all the attribute types.</p>

        '
      urlObject:
        path:
        - attribute-types
        host:
        - '{{api_url}}'
        query: []
        variable: []
    response:
    - id: cad59249-1a61-9e5c-dd36-e6569930158b
      name: attribute type collection
      originalRequest:
        method: GET
        header:
        - key: Authorization
          value: Bearer {{token}}
          type: text
          enabled: true
          disabled: false
        - key: Accept
          value: application/json
          type: text
          enabled: true
          disabled: false
        body:
          mode: formdata
          formdata: []
        url: '{{api_url}}/attribute-types'
      status: OK
      code: 200
      _postman_previewlanguage: json
      header:
      - key: Connection
        value: keep-alive
        name: Connection
        description: ''
      - key: Content-Type
        value: application/hal+json
        name: Content-Type
        description: ''
      - key: Date
        value: Wed, 29 Mar 2017 04:35:50 GMT
        name: Date
        description: ''
      - key: Server
        value: nginx/1.10.0 (Ubuntu)
        name: Server
        description: ''
      - key: Transfer-Encoding
        value: chunked
        name: Transfer-Encoding
        description: ''
      cookie: []
      responseTime: '705'
      body: '{"count":6,"total":6,"collectionTotal":6,"_links":{"self":{"href":"http:\/\/api.havenly.local\/attribute-types?page=1"},"first":{"href":"http:\/\/api.havenly.local\/attribute-types"},"last":{"href":"http:\/\/api.havenly.local\/attribute-types?page=1"}},"_embedded":{"attribute_type":[{"id":1,"title":"color","created":null,"modified":null,"attributes":{},"_links":{"self":{"href":"http:\/\/api.havenly.local\/attribute-types\/1"}}},{"id":2,"title":"material","created":null,"modified":null,"attributes":{},"_links":{"self":{"href":"http:\/\/api.havenly.local\/attribute-types\/2"}}},{"id":3,"title":"dimensions","created":null,"modified":null,"attributes":{},"_links":{"self":{"href":"http:\/\/api.havenly.local\/attribute-types\/3"}}},{"id":4,"title":"pattern","created":null,"modified":null,"attributes":{},"_links":{"self":{"href":"http:\/\/api.havenly.local\/attribute-types\/4"}}},{"id":5,"title":"size","created":null,"modified":null,"attributes":{},"_links":{"self":{"href":"http:\/\/api.havenly.local\/attribute-types\/5"}}},{"id":6,"title":"weight","created":null,"modified":null,"attributes":{},"_links":{"self":{"href":"http:\/\/api.havenly.local\/attribute-types\/6"}}}]},"page_count":1,"page_size":25,"total_items":6,"page":1}'
    _postman_id: 16f46f85-2e7d-51b9-7f71-b088ce049940
  id: a920b486-1d89-464c-2f79-2852ebe04597
  _postman_id: a920b486-1d89-464c-2f79-2852ebe04597
  description: ''
- name: Board Feedback
  item:
  - name: Board Feedback (collection)
    event:
    - listen: test
      script:
        type: text/javascript
        exec:
        - tests["Status code is 200"] = responseCode.code === 200;
    id: 4e3f0795-9e0e-8bcc-df8c-0d00ae25a3e1
    request:
      method: GET
      header:
      - key: Authorization
        value: Bearer {{token}}
      - key: Accept
        value: application/json
      body:
        mode: formdata
        formdata:
        - key: grant_type
          value: password
          type: text
        - key: username
          value: '{{username}}'
          type: text
        - key: password
          value: testtest
          type: text
        - key: client_id
          value: postman
          type: text
      url: '{{api_url}}/board-feedback'
      description: '<p>Get all board feedback for the authed user.</p>

        '
      urlObject:
        path:
        - board-feedback
        host:
        - '{{api_url}}'
        query: []
        variable: []
    response: []
    _postman_id: 4e3f0795-9e0e-8bcc-df8c-0d00ae25a3e1
  - name: Create Board Feedback
    event:
    - listen: test
      script:
        type: text/javascript
        exec:
        - tests["Status code is 200"] = responseCode.code === 200;
    id: a2b3e348-1e22-ed0e-2b2e-b7e1883bdea3
    request:
      method: POST
      header:
      - key: Authorization
        value: Bearer {{token}}
      - key: Content-Type
        value: application/json
      - key: Accept
        value: application/json
      body:
        mode: raw
        raw: "{\n  \"board\": 123456789,\n  \"question\": 123,\n  \"answer\": \"New answer and questionboard combo (not really)\"\
          \n}"
      url: '{{api_url}}/board-feedback'
      description: '<p>Create a piece of board feedback</p>

        '
      urlObject:
        path:
        - board-feedback
        host:
        - '{{api_url}}'
        query: []
        variable: []
    response: []
    _postman_id: a2b3e348-1e22-ed0e-2b2e-b7e1883bdea3
  - name: Board Feedback By ID
    event:
    - listen: test
      script:
        type: text/javascript
        exec:
        - tests["Status code is 200"] = responseCode.code === 200;
    id: d94edcdf-dc2d-f20f-b482-b49e381593cb
    request:
      method: GET
      header:
      - key: Authorization
        value: Bearer {{token}}
      - key: Content-Type
        value: application/json
      - key: Accept
        value: application/json
      body:
        mode: formdata
        formdata:
        - key: grant_type
          value: password
          type: text
        - key: username
          value: '{{username}}'
          type: text
        - key: password
          value: testtest
          type: text
        - key: client_id
          value: postman
          type: text
      url: '{{api_url}}/board-feedback/123456789'
      description: '<p>Get a single entity of board feedback by ID.</p>

        '
      urlObject:
        path:
        - board-feedback
        - '123456789'
        host:
        - '{{api_url}}'
        query: []
        variable: []
    response: []
    _postman_id: d94edcdf-dc2d-f20f-b482-b49e381593cb
  - name: Remove a piece of board feedback
    id: 5e6187a4-a022-53c3-2580-46c405a35318
    request:
      method: DELETE
      header:
      - key: Authorization
        value: Bearer {{token}}
      - key: Content-Type
        value: application/json
      - key: Accept
        value: application/json
      body:
        mode: formdata
        formdata: []
      url: '{{api_url}}/board-feedback/1'
      description: '<p>This deletes board feedback by ID.</p>

        '
      urlObject:
        path:
        - board-feedback
        - '1'
        host:
        - '{{api_url}}'
        query: []
        variable: []
    response: []
    _postman_id: 5e6187a4-a022-53c3-2580-46c405a35318
  id: 6fc28b00-b95d-0aea-8e54-2ad35bbb79b7
  description: '<p>Board feedback is what we use to gauge how well a designer did on an idea for a user. The routes contained
    here are for managing board feedback</p>

    '
  _postman_id: 6fc28b00-b95d-0aea-8e54-2ad35bbb79b7
- name: Board Feedback Questions
  item:
  - name: Board Feedback Questions (collection)
    event:
    - listen: test
      script:
        type: text/javascript
        exec:
        - var jsonData = JSON.parse(responseBody);
        - tests["Has Bearer Token"] = jsonData.token_type === 'Bearer';
        - ''
        - postman.setEnvironmentVariable("token", jsonData.access_token);
    id: 8a71ce61-211c-1768-8447-b7434fb37570
    request:
      method: GET
      header:
      - key: Authorization
        value: Bearer {{token}}
      - key: Content-Type
        value: application/json
      - key: Accept
        value: application/json
      body:
        mode: formdata
        formdata:
        - key: grant_type
          value: password
          type: text
        - key: username
          value: '{{username}}'
          type: text
        - key: password
          value: testtest
          type: text
        - key: client_id
          value: postman
          type: text
      url: '{{api_url}}/board-feedback-questions'
      description: '<p>Get all board feedback questions</p>

        '
      urlObject:
        path:
        - board-feedback-questions
        host:
        - '{{api_url}}'
        query: []
        variable: []
    response:
    - id: 6e5e6d5c-377d-a2ad-d362-19206cdf289b
      name: board feedback questions collection
      originalRequest:
        method: GET
        header:
        - key: Authorization
          value: Bearer {{token}}
          enabled: true
          disabled: false
        - key: Content-Type
          value: application/json
          enabled: true
          description: The mime type of this content
          disabled: false
        - key: Accept
          value: application/json
          enabled: true
          disabled: false
        body:
          mode: formdata
          formdata:
          - key: grant_type
            value: password
            type: text
          - key: username
            value: '{{username}}'
            type: text
          - key: password
            value: testtest
            type: text
          - key: client_id
            value: postman
            type: text
        url: '{{api_url}}/board-feedback-questions'
      status: OK
      code: 200
      _postman_previewlanguage: json
      header:
      - key: Connection
        value: keep-alive
        name: Connection
        description: ''
      - key: Content-Type
        value: application/hal+json
        name: Content-Type
        description: ''
      - key: Date
        value: Wed, 29 Mar 2017 04:30:21 GMT
        name: Date
        description: ''
      - key: Server
        value: nginx/1.10.0 (Ubuntu)
        name: Server
        description: ''
      - key: Transfer-Encoding
        value: chunked
        name: Transfer-Encoding
        description: ''
      cookie: []
      responseTime: '486'
      body: '{"count":20,"total":20,"collectionTotal":20,"_links":{"self":{"href":"http:\/\/api.havenly.local\/board-feedback-questions?page=1"},"first":{"href":"http:\/\/api.havenly.local\/board-feedback-questions"},"last":{"href":"http:\/\/api.havenly.local\/board-feedback-questions?page=1"}},"_embedded":{"board_feedback_questions":[{"id":1,"title":"Low
        quality items","question":"Which items appear to be low quality?","placeholder":"For example: \u0022Some of these
        pieces look cheap to me. The rug looks like it won\u0027t last - too thin.\u0022","isPositive":false,"created":null,"modified":null,"type":null,"_embedded":{"boardTypes":[{"id":15,"name":"Final
        Concept","_links":{"self":{"href":"http:\/\/api.havenly.local\/board-types\/15"}}},{"id":1,"name":"Concept","_links":{"self":{"href":"http:\/\/api.havenly.local\/board-types\/1"}}},{"id":3,"name":"Final
        Design","_links":{"self":{"href":"http:\/\/api.havenly.local\/board-types\/3"}}}]},"_links":{"self":{"href":"http:\/\/api.havenly.local\/board-feedback-questions\/1"}}},{"id":2,"title":"Don\u0027t
        love the colors","question":"How can we improve the color scheme?","placeholder":"For example: \u0022This is way too
        dark and gray. I want neutrals but I want brighter and lighter neutrals like whites.\u0022","isPositive":false,"created":null,"modified":null,"type":null,"_embedded":{"boardTypes":[{"id":15,"name":"Final
        Concept","_links":{"self":{"href":"http:\/\/api.havenly.local\/board-types\/15"}}},{"id":1,"name":"Concept","_links":{"self":{"href":"http:\/\/api.havenly.local\/board-types\/1"}}},{"id":3,"name":"Final
        Design","_links":{"self":{"href":"http:\/\/api.havenly.local\/board-types\/3"}}}]},"_links":{"self":{"href":"http:\/\/api.havenly.local\/board-feedback-questions\/2"}}},{"id":3,"title":"Not
        my style","question":"How can we get closer to your style?","placeholder":"For example: \u0022This is way too bohemian
        and eclectic for me. I want it to be modern with a few fun, eclectic accents.\u0022","isPositive":false,"created":null,"modified":null,"type":null,"_embedded":{"boardTypes":[{"id":15,"name":"Final
        Concept","_links":{"self":{"href":"http:\/\/api.havenly.local\/board-types\/15"}}},{"id":1,"name":"Concept","_links":{"self":{"href":"http:\/\/api.havenly.local\/board-types\/1"}}},{"id":3,"name":"Final
        Design","_links":{"self":{"href":"http:\/\/api.havenly.local\/board-types\/3"}}}]},"_links":{"self":{"href":"http:\/\/api.havenly.local\/board-feedback-questions\/3"}}},{"id":4,"title":"Underwhelming","question":"What
        feels underwhelming to you?","placeholder":"For example: \u0022The sofa and pillows do not excite me. They feels way
        too safe and plain. I want them to make a statement.\u0022","isPositive":false,"created":null,"modified":null,"type":null,"_embedded":{"boardTypes":[{"id":15,"name":"Final
        Concept","_links":{"self":{"href":"http:\/\/api.havenly.local\/board-types\/15"}}},{"id":1,"name":"Concept","_links":{"self":{"href":"http:\/\/api.havenly.local\/board-types\/1"}}},{"id":3,"name":"Final
        Design","_links":{"self":{"href":"http:\/\/api.havenly.local\/board-types\/3"}}}]},"_links":{"self":{"href":"http:\/\/api.havenly.local\/board-feedback-questions\/4"}}},{"id":5,"title":"Core
        pieces are missing","question":"Which pieces are missing from this design?","placeholder":"For example: \u0022I mentioned
        I need curtains. I don\u0027t see those in the design.\u0022","isPositive":false,"created":null,"modified":null,"type":null,"_embedded":{"boardTypes":[{"id":15,"name":"Final
        Concept","_links":{"self":{"href":"http:\/\/api.havenly.local\/board-types\/15"}}},{"id":1,"name":"Concept","_links":{"self":{"href":"http:\/\/api.havenly.local\/board-types\/1"}}},{"id":3,"name":"Final
        Design","_links":{"self":{"href":"http:\/\/api.havenly.local\/board-types\/3"}}}]},"_links":{"self":{"href":"http:\/\/api.havenly.local\/board-feedback-questions\/5"}}},{"id":6,"title":"Out
        of my price range","question":"What\u0027s out of your price range?","placeholder":"For example: \u0022I would never
        pay that much for a lamp. Please show me less expensive options.\u0022","isPositive":false,"created":null,"modified":null,"type":null,"_embedded":{"boardTypes":[{"id":15,"name":"Final
        Concept","_links":{"self":{"href":"http:\/\/api.havenly.local\/board-types\/15"}}},{"id":1,"name":"Concept","_links":{"self":{"href":"http:\/\/api.havenly.local\/board-types\/1"}}},{"id":3,"name":"Final
        Design","_links":{"self":{"href":"http:\/\/api.havenly.local\/board-types\/3"}}}]},"_links":{"self":{"href":"http:\/\/api.havenly.local\/board-feedback-questions\/6"}}},{"id":7,"title":"The
        vibe is off","question":"How can we improve the vibe?","placeholder":"For example: \u0022This feels too casual. I
        want a room that is more tailored and sophisticated.\u0022","isPositive":false,"created":null,"modified":null,"type":null,"_embedded":{"boardTypes":[{"id":15,"name":"Final
        Concept","_links":{"self":{"href":"http:\/\/api.havenly.local\/board-types\/15"}}},{"id":1,"name":"Concept","_links":{"self":{"href":"http:\/\/api.havenly.local\/board-types\/1"}}},{"id":3,"name":"Final
        Design","_links":{"self":{"href":"http:\/\/api.havenly.local\/board-types\/3"}}}]},"_links":{"self":{"href":"http:\/\/api.havenly.local\/board-feedback-questions\/7"}}},{"id":8,"title":"Not
        practical for my lifestyle","question":"How can we better design for your lifestyle?","placeholder":"For example:
        \u0022I have a dog and 2 kids. That gets messy! A white sofa is not functional for my lifestyle.\u0022","isPositive":false,"created":null,"modified":null,"type":null,"_embedded":{"boardTypes":[{"id":15,"name":"Final
        Concept","_links":{"self":{"href":"http:\/\/api.havenly.local\/board-types\/15"}}},{"id":1,"name":"Concept","_links":{"self":{"href":"http:\/\/api.havenly.local\/board-types\/1"}}},{"id":3,"name":"Final
        Design","_links":{"self":{"href":"http:\/\/api.havenly.local\/board-types\/3"}}}]},"_links":{"self":{"href":"http:\/\/api.havenly.local\/board-feedback-questions\/8"}}},{"id":9,"title":"Scale
        is off","question":"Which items look out of scale?","placeholder":"For example: \u0022My room is tiny, so this will
        not work in my space. There is no way that table will fit in the corner.\u0022","isPositive":false,"created":null,"modified":null,"type":null,"_embedded":{"boardTypes":[{"id":3,"name":"Final
        Design","_links":{"self":{"href":"http:\/\/api.havenly.local\/board-types\/3"}}}]},"_links":{"self":{"href":"http:\/\/api.havenly.local\/board-feedback-questions\/9"}}},{"id":10,"title":"Don\u0027t
        love the layout","question":"What layout is ideal for you?","placeholder":"For example: \u0022I prefer my bed by the
        window. I\u0027ve tried this layout and it doesn\u0027t work.\u0022","isPositive":false,"created":null,"modified":null,"type":null,"_embedded":{"boardTypes":[{"id":3,"name":"Final
        Design","_links":{"self":{"href":"http:\/\/api.havenly.local\/board-types\/3"}}}]},"_links":{"self":{"href":"http:\/\/api.havenly.local\/board-feedback-questions\/10"}}},{"id":11,"title":"Love
        the colors","question":null,"placeholder":null,"isPositive":true,"created":null,"modified":null,"type":null,"_embedded":{"boardTypes":[{"id":15,"name":"Final
        Concept","_links":{"self":{"href":"http:\/\/api.havenly.local\/board-types\/15"}}},{"id":1,"name":"Concept","_links":{"self":{"href":"http:\/\/api.havenly.local\/board-types\/1"}}},{"id":3,"name":"Final
        Design","_links":{"self":{"href":"http:\/\/api.havenly.local\/board-types\/3"}}}]},"_links":{"self":{"href":"http:\/\/api.havenly.local\/board-feedback-questions\/11"}}},{"id":12,"title":"Good
        quality","question":null,"placeholder":null,"isPositive":true,"created":null,"modified":null,"type":null,"_embedded":{"boardTypes":[{"id":15,"name":"Final
        Concept","_links":{"self":{"href":"http:\/\/api.havenly.local\/board-types\/15"}}},{"id":1,"name":"Concept","_links":{"self":{"href":"http:\/\/api.havenly.local\/board-types\/1"}}},{"id":3,"name":"Final
        Design","_links":{"self":{"href":"http:\/\/api.havenly.local\/board-types\/3"}}}]},"_links":{"self":{"href":"http:\/\/api.havenly.local\/board-feedback-questions\/12"}}},{"id":13,"title":"The
        vibe is right","question":null,"placeholder":null,"isPositive":true,"created":null,"modified":null,"type":null,"_embedded":{"boardTypes":[{"id":15,"name":"Final
        Concept","_links":{"self":{"href":"http:\/\/api.havenly.local\/board-types\/15"}}},{"id":1,"name":"Concept","_links":{"self":{"href":"http:\/\/api.havenly.local\/board-types\/1"}}},{"id":3,"name":"Final
        Design","_links":{"self":{"href":"http:\/\/api.havenly.local\/board-types\/3"}}}]},"_links":{"self":{"href":"http:\/\/api.havenly.local\/board-feedback-questions\/13"}}},{"id":14,"title":"Matches
        my style","question":null,"placeholder":null,"isPositive":true,"created":null,"modified":null,"type":null,"_embedded":{"boardTypes":[{"id":15,"name":"Final
        Concept","_links":{"self":{"href":"http:\/\/api.havenly.local\/board-types\/15"}}},{"id":1,"name":"Concept","_links":{"self":{"href":"http:\/\/api.havenly.local\/board-types\/1"}}},{"id":3,"name":"Final
        Design","_links":{"self":{"href":"http:\/\/api.havenly.local\/board-types\/3"}}}]},"_links":{"self":{"href":"http:\/\/api.havenly.local\/board-feedback-questions\/14"}}},{"id":15,"title":"Price
        is on point","question":null,"placeholder":null,"isPositive":true,"created":null,"modified":null,"type":null,"_embedded":{"boardTypes":[{"id":15,"name":"Final
        Concept","_links":{"self":{"href":"http:\/\/api.havenly.local\/board-types\/15"}}},{"id":1,"name":"Concept","_links":{"self":{"href":"http:\/\/api.havenly.local\/board-types\/1"}}},{"id":3,"name":"Final
        Design","_links":{"self":{"href":"http:\/\/api.havenly.local\/board-types\/3"}}}]},"_links":{"self":{"href":"http:\/\/api.havenly.local\/board-feedback-questions\/15"}}},{"id":16,"title":"Layout
        looks right","question":null,"placeholder":null,"isPositive":true,"created":null,"modified":null,"type":null,"_embedded":{"boardTypes":[{"id":3,"name":"Final
        Design","_links":{"self":{"href":"http:\/\/api.havenly.local\/board-types\/3"}}}]},"_links":{"self":{"href":"http:\/\/api.havenly.local\/board-feedback-questions\/16"}}},{"id":17,"title":null,"question":"How
        else can we improve this concept?","placeholder":null,"isPositive":false,"created":null,"modified":null,"type":null,"_embedded":{"boardTypes":[{"

# --- truncated at 32 KB (124 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/havenly/refs/heads/main/apis.yml