openapi: 3.0.1
info:
title: Measurabl Core API
version: v0
description: '## Quick Start Guide
1. Authorize using your client credentials (key and secret).
2. Make a `GET /core/v0/portfolios` request (under the Portfolios section) to get a list of available portfolios.
3. Obtain the proper portfolio_id (id) in which you need to get/create data for.
4. This `portfolio_id` will be required for all other reoccurring requests.
* [Authentication](https://support.measurabl.com/hc/en-us/articles/15889532915085-How-do-I-authenticate-with-Measurabl-s-Core-API-)
* [Release Notes](https://api.measurabl.com/release_notes)
* [Usage/Rate Limits](https://support.measurabl.com/hc/en-us/articles/15889355100429-Core-API-Usage-Rate-Limits)
* [Pagination & Filtering](https://support.measurabl.com/hc/en-us/articles/15889550313101-Core-API-Pagination-Filtering-Requests)
* [Code Examples](https://github.com/Measurabl/measurabl_api_code_samples)
### Response Format
Each endpoint response complies with the [JSON-API Specification](https://jsonapi.org/) which has many available [client
libraries](https://jsonapi.org/implementations/#client-libraries).
'
components:
schemas:
json_api:
oneOf:
- $ref: '#/components/schemas/success'
- $ref: '#/components/schemas/failure'
- $ref: '#/components/schemas/info'
success:
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/data'
included:
description: To reduce the number of HTTP requests, servers **MAY** allow responses that include related resources
along with the requested primary resources. Such responses are called 'compound documents'.
type: array
items:
$ref: '#/components/schemas/resource'
uniqueItems: true
meta:
$ref: '#/components/schemas/meta'
links:
description: Link members related to the primary data.
allOf:
- $ref: '#/components/schemas/links'
- $ref: '#/components/schemas/pagination'
jsonapi:
$ref: '#/components/schemas/jsonapi'
additionalProperties: false
failure:
type: object
required:
- errors
properties:
errors:
type: array
items:
$ref: '#/components/schemas/error'
uniqueItems: true
meta:
$ref: '#/components/schemas/meta'
jsonapi:
$ref: '#/components/schemas/jsonapi'
links:
$ref: '#/components/schemas/links'
additionalProperties: false
info:
type: object
required:
- meta
properties:
meta:
$ref: '#/components/schemas/meta'
links:
$ref: '#/components/schemas/links'
jsonapi:
$ref: '#/components/schemas/jsonapi'
additionalProperties: false
meta:
description: Non-standard meta-information that can not be represented as an attribute or relationship.
type: object
additionalProperties: true
data:
description: The document's 'primary data' is a representation of the resource or collection of resources targeted by
a request.
anyOf:
- $ref: '#/components/schemas/resource'
- description: An array of resource objects, an array of resource identifier objects, or an empty array ([]), for requests
that target resource collections.
type: array
items:
$ref: '#/components/schemas/resource'
uniqueItems: true
- description: null if the request is one that might correspond to a single resource, but doesn't currently.
nullable: true
resource:
description: '''Resource objects'' appear in a JSON:API document to represent resources.'
type: object
required:
- type
- id
properties:
type:
type: string
id:
type: string
attributes:
$ref: '#/components/schemas/attributes'
relationships:
$ref: '#/components/schemas/relationships'
links:
$ref: '#/components/schemas/links'
meta:
$ref: '#/components/schemas/meta'
additionalProperties: false
relationshipLinks:
description: A resource object **MAY** contain references to other resource objects ('relationships'). Relationships
may be to-one or to-many. Relationships can be specified by including a member in a resource's links object.
type: object
properties:
self:
$ref: '#/components/schemas/link'
related:
$ref: '#/components/schemas/link'
additionalProperties: true
links:
type: object
additionalProperties:
$ref: '#/components/schemas/link'
link:
description: 'A link **MUST** be represented as either: a string containing the link''s URL or a link object.'
oneOf:
- description: A string containing the link's URL.
type: string
format: uri-reference
nullable: true
- type: object
required:
- href
properties:
href:
description: A string containing the link's URL.
type: string
format: uri-reference
meta:
$ref: '#/components/schemas/meta'
attributes:
description: Members of the attributes object ('attributes') represent information about the resource object in which
it's defined.
type: object
additionalProperties: true
relationships:
description: Members of the relationships object ('relationships') represent references from the resource object in
which it's defined to other resource objects.
type: object
properties:
links:
$ref: '#/components/schemas/relationshipLinks'
data:
description: Member, whose value represents 'resource linkage'.
oneOf:
- $ref: '#/components/schemas/relationshipToOne'
- $ref: '#/components/schemas/relationshipToMany'
meta:
$ref: '#/components/schemas/meta'
additionalProperties: true
relationshipToOne:
description: References to other resource objects in a to-one ('relationship'). Relationships can be specified by including
a member in a resource's links object.
anyOf:
- $ref: '#/components/schemas/empty'
- $ref: '#/components/schemas/linkage'
relationshipToMany:
description: An array of objects each containing 'type' and 'id' members for to-many relationships.
type: array
items:
$ref: '#/components/schemas/linkage'
uniqueItems: true
empty:
description: Describes an empty to-one relationship.
nullable: true
linkage:
description: The 'type' and 'id' to non-empty members.
type: object
required:
- type
- id
properties:
type:
type: string
id:
type: string
meta:
$ref: '#/components/schemas/meta'
additionalProperties: false
pagination:
type: object
properties:
first:
description: The first page of data
type: string
format: uri-reference
x-nullable: true
last:
description: The last page of data
type: string
format: uri-reference
x-nullable: true
prev:
description: The previous page of data
type: string
format: uri-reference
x-nullable: true
next:
description: The next page of data
type: string
format: uri-reference
x-nullable: true
jsonapi:
description: An object describing the server's implementation
type: object
properties:
version:
type: string
meta:
$ref: '#/components/schemas/meta'
additionalProperties: false
error:
type: object
properties:
id:
description: A unique identifier for this particular occurrence of the problem.
type: string
links:
$ref: '#/components/schemas/links'
status:
description: The HTTP status code applicable to this problem, expressed as a string value.
type: string
code:
description: An application-specific error code, expressed as a string value.
type: string
title:
description: A short, human-readable summary of the problem. It **SHOULD NOT** change from occurrence to occurrence
of the problem, except for purposes of localization.
type: string
detail:
description: A human-readable explanation specific to this occurrence of the problem.
type: string
source:
type: object
properties:
pointer:
description: A JSON Pointer [RFC6901] to the associated entity in the request document [e.g. '/data' for a primary
data object, or '/data/attributes/title' for a specific attribute].
type: string
parameter:
description: A string indicating which query parameter caused the error.
type: string
meta:
$ref: '#/components/schemas/meta'
additionalProperties: false
securitySchemes:
OAuth2:
type: oauth2
flows:
clientCredentials:
tokenUrl: https://api.measurabl.com/token
scopes: {}
paths:
/core/v0/portfolios/{portfolio_id}/buildings:
post:
summary: Adds a building to a specified portfolio
tags:
- Buildings
security:
- OAuth2: []
parameters:
- name: portfolio_id
in: path
description: 'Example: bb97d075-a826-4001-b4bb-2dbab87e2b72'
required: true
schema:
type: string
responses:
'200':
description: Creates a portfolio specific building
content:
application/vnd.api+json:
example:
data:
id: 99b0e527-a662-4121-b2bf-dc59f2ad9a28
type: buildings
attributes:
estarId: null
name: Test Building
addressLine1: 900 Spear Avenue
addressLine2: ''
addressCity: San Francisco
addressState: CA
addressProvince: null
addressZip: '94105'
addressCountry: United States
yearBuilt: null
buildingClass: C
primaryPropertyType: Data Center
floorAreaSqFt: 20000
customId: null
boughtDate: '2026-01-16'
soldDate: null
isSingleTenant: false
percentOwned: 80.0
isActive: false
updatedAt: '2026-04-01 00:00:00'
links:
self: /portfolios/74468b82-3bb8-4f8e-a4a8-8dd69efeb4cc/buildings/99b0e527-a662-4121-b2bf-dc59f2ad9a28
schema:
$ref: '#/components/schemas/json_api'
'404':
description: Not Found
content:
application/vnd.api+json:
example:
errors:
- status: '404'
title: Not Found
detail: Could not find building 0a86c55e-18eb-4ba0-80fe-3fa949e22303 in portfolio 818c909b-f251-4666-a428-28c7b865cba3
schema:
$ref: '#/components/schemas/json_api'
'401':
description: Unauthorized Request
content:
application/vnd.api+json:
example:
errors:
- status: '401'
title: Unauthorized
detail: Unauthorized Request
schema:
$ref: '#/components/schemas/json_api'
'400':
description: Bad Request
content:
application/vnd.api+json:
example:
errors:
- status: '400'
title: Bad Request
detail: An invalid UUID parameter was submitted with the request (portfolio_id)
schema:
$ref: '#/components/schemas/json_api'
'502':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '502'
title: Bad Gateway
detail: A Measurabl Server is down, please try again later
schema:
$ref: '#/components/schemas/json_api'
'500':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '500'
title: Internal Server Error
detail: An error occurred with the request
schema:
$ref: '#/components/schemas/json_api'
'503':
description: Service Unavailable
content:
application/vnd.api+json:
example:
errors:
- status: '503'
title: Service Unavailable
detail: A Measurabl Server is currently unavailable, please try again later
schema:
$ref: '#/components/schemas/json_api'
'408':
description: Request Timeout
content:
application/vnd.api+json:
example:
errors:
- status: '408'
title: Request Timeout
detail: The request you made has timed out
schema:
$ref: '#/components/schemas/json_api'
'429':
description: Too many requests
content:
application/vnd.api+json:
example:
errors:
- status: '429'
title: Too Many Requests
detail: Rate Limit Exceeded
schema:
$ref: '#/components/schemas/json_api'
'403':
description: unauthorized request
content:
application/vnd.api+json:
example:
errors:
- status: '403'
title: Forbidden
detail: 'A valid auth token is required.
POST to ''/token'' with a valid ''key'' and ''secret'' to get an auth token.
'
schema:
$ref: '#/components/schemas/json_api'
requestBody:
content:
application/vnd.api+json:
schema:
type: object
properties:
data:
type: object
properties:
type:
type: string
attributes:
type: object
properties:
name:
type: string
addressLine1:
type: string
addressLine2:
type: string
addressCity:
type: string
addressState:
type: string
addressProvince:
type: string
addressZip:
type: string
addressCountry:
type: string
yearBuilt:
type: integer
buildingClass:
type: string
primaryPropertyType:
type: string
floorAreaSqFt:
type: integer
customId:
type: string
boughtDate:
type: string
soldDate:
type: string
isSingleTenant:
type: boolean
percentOwned:
type: float
isActive:
type: boolean
required:
- name
- addressLine1
- addressCity
- addressState
- addressZip
- addressCountry
- primaryPropertyType
- floorAreaSqFt
example:
data:
type: buildings
attributes:
name: API Test Building
addressLine1: 900 Spear Avenue
addressLine2: ''
addressCity: San Francisco
addressState: CA
addressProvince: null
addressZip: '94105'
addressCountry: United States
yearBuilt: 1980
buildingClass: C
primaryPropertyType: Data Center
floorAreaSqFt: 20000.0
customId: null
boughtDate: '2026-03-29'
soldDate: null
isSingleTenant: false
percentOwned: 80.0
isActive: false
required: true
description: Request body used to create a building associated with a portfolio
get:
summary: Returns a paginated list of buildings for a specified portfolio or fund
tags:
- Buildings
security:
- OAuth2: []
parameters:
- name: portfolio_id
in: path
description: "UUID of either the parent portfolio or fund
\n Example: 73755608-a99d-40d9-94df-09d8ff67e7cd"
required: true
- name: filter
in: query
description: "Filter by any attribute available via the endpoint.\n
\n - updatedAt=ge=2022-11-01T00:00\
\ will query for buildings that were updated at or after the set date and UTC time.
\n - yearbuilt==1969\
\ will query for buildings that have a year built specifically in 1969.
\n
"
schema:
type: string
- name: page
in: query
default: 1
schema:
type: integer
- name: size
in: query
description: The max page size is limited to 200 returned results
default: 25
schema:
type: integer
responses:
'200':
description: portfolio or fund with buildings found
content:
application/vnd.api+json:
example:
data:
- id: 4008cd95-4aeb-4019-b387-c0a7377fa58e
type: buildings
attributes:
estarId: 34137899
name: Bug Test
addressLine1: 123 Bug St
addressLine2: ''
addressCity: San Diego
addressState: CA
addressProvince: null
addressZip: '92104'
addressCountry: United States
yearBuilt: 1969
buildingClass: null
primaryPropertyType: Movie Theater
floorAreaSqFt: 25000
customId: null
boughtDate: '2025-09-01'
soldDate: null
isSingleTenant: true
percentOwned: 100.0
isActive: true
updatedAt: '2026-05-16 00:00:00'
links:
self: /portfolios/8472cd20-dfca-498e-8d1e-95efc92f56c9/buildings/4008cd95-4aeb-4019-b387-c0a7377fa58e
- id: 4f05c66f-ab07-455d-8c06-91b099b6e486
type: buildings
attributes:
estarId: 33212337
name: Parent Building 3
addressLine1: 1007 1st St St
addressLine2: ''
addressCity: Stilwater
addressState: MN
addressProvince: null
addressZip: '55082'
addressCountry: United States
yearBuilt: 1869
buildingClass: null
primaryPropertyType: Financial Office
floorAreaSqFt: 750
customId: null
boughtDate: '2026-07-02'
soldDate: null
isSingleTenant: false
percentOwned: 50.0
isActive: true
updatedAt: '2026-01-16 00:00:00'
links:
self: /portfolios/8472cd20-dfca-498e-8d1e-95efc92f56c9/buildings/4f05c66f-ab07-455d-8c06-91b099b6e486
- id: 7813777b-addb-449d-8117-1ed2c8578a72
type: buildings
attributes:
estarId: 25849582
name: Meter Test 1zzz
addressLine1: 111 Meter St
addressLine2: ''
addressCity: San Diego
addressState: CA
addressProvince: null
addressZip: '92111'
addressCountry: United States
yearBuilt: 1969
buildingClass: null
primaryPropertyType: Office
floorAreaSqFt: 0
customId: null
boughtDate: '2026-02-23'
soldDate: null
isSingleTenant: true
percentOwned: 100.0
isActive: false
updatedAt: '2026-07-11 00:00:00'
links:
self: /portfolios/8472cd20-dfca-498e-8d1e-95efc92f56c9/buildings/7813777b-addb-449d-8117-1ed2c8578a72
- id: c150197f-2890-4b64-9020-c75be80b4f92
type: buildings
attributes:
estarId: 37741951
name: A Cool Building
addressLine1: 123 Meter Blvd
addressLine2: ''
addressCity: San Diego
addressState: ''
addressProvince: Uhh
addressZip: '92120'
addressCountry: Japan
yearBuilt: 1969
buildingClass: null
primaryPropertyType: Senior Care Community
floorAreaSqFt: 16531
customId: null
boughtDate: '2025-07-16'
soldDate: null
isSingleTenant: false
percentOwned: 70.5
isActive: true
updatedAt: '2026-01-20 00:00:00'
links:
self: /portfolios/8472cd20-dfca-498e-8d1e-95efc92f56c9/buildings/c150197f-2890-4b64-9020-c75be80b4f92
- id: 0f560852-e88d-4ecf-87c2-cf8c9e13c8d5
type: buildings
attributes:
estarId: 82538285
name: Warehouse Distribution Center
addressLine1: 123 Warehouse Dr
addressLine2: ''
addressCity: San Diego
addressState: CA
addressProvince: null
addressZip: '92120'
addressCountry: United States
yearBuilt: 1969
buildingClass: null
primaryPropertyType: Distribution Center
floorAreaSqFt: 1111
customId: null
boughtDate: '2026-03-20'
soldDate: null
isSingleTenant: true
percentOwned: 100.0
isActive: true
updatedAt: '2026-02-02 00:00:00'
links:
self: /portfolios/8472cd20-dfca-498e-8d1e-95efc92f56c9/buildings/0f560852-e88d-4ecf-87c2-cf8c9e13c8d5
links:
self: /portfolios/8472cd20-dfca-498e-8d1e-95efc92f56c9/buildings
meta:
page:
number: 1
size: 100
totalPages: 7
totalElements: 654
schema:
$ref: '#/components/schemas/json_api'
'404':
description: Not Found
content:
application/vnd.api+json:
example:
errors:
- status: '404'
title: Not Found
detail: 'Unknown portfolio UUID: a38f4ec4-c303-4deb-ac02-dcdd586cbdf2'
schema:
$ref: '#/components/schemas/json_api'
'401':
description: Unauthorized Request
content:
application/vnd.api+json:
example:
errors:
- status: '401'
title: Unauthorized
detail: Unauthorized Request
schema:
$ref: '#/components/schemas/json_api'
'400':
description: Bad Request
content:
application/vnd.api+json:
example:
errors:
- status: '400'
title: Bad Request
detail: An invalid UUID parameter was submitted with the request (portfolio_id)
schema:
$ref: '#/components/schemas/json_api'
'502':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '502'
title: Bad Gateway
detail: A Measurabl Server is down, please try again later
schema:
$ref: '#/components/schemas/json_api'
'500':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '500'
title: Internal Server Error
detail: An error occurred with the request
schema:
$ref: '#/components/schemas/json_api'
'503':
description: Service Unavailable
content:
application/vnd.api+json:
example:
errors:
- status: '503'
title: Service Unavailable
detail: A Measurabl Server is currently unavailable, please try again later
schema:
$ref: '#/components/schemas/json_api'
'408':
description: Request Timeout
content:
application/vnd.api+json:
example:
errors:
- status: '408'
title: Request Timeout
detail: The request you made has timed out
schema:
$ref: '#/components/schemas/json_api'
'429':
description: Too many requests
content:
application/vnd.api+json:
example:
errors:
- status: '429'
title: Too Many Requests
detail: Rate Limit Exceeded
schema:
$ref: '#/components/schemas/json_api'
'403':
description: unauthorized request
content:
application/vnd.api+json:
example:
errors:
- status: '403'
title: Forbidden
detail: 'A valid auth token is required.
POST to ''/token'' with a valid ''key'' and ''secret'' to get an auth token.
'
schema:
$ref: '#/components/schemas/json_api'
/core/v0/portfolios/{portfolio_id}/buildings/{building_id}:
delete:
summary: Removes a building from a specified portfolio
tags:
- Buildings
security:
- OAuth2: []
parameters:
- name: portfolio_id
in: path
description: 'Example: a6e32f0e-5f5f-4497-b024-11f9d6f200ca'
required: true
schema:
type: string
- name: building_id
in: path
description: 'Example: 01327933-9400-4c64-81be-2e5af129d495'
required: true
schema:
type: string
responses:
'204':
description: Building Deleted Successfully
content:
application/vnd.api+json:
example: ''
'404':
description: Not Found
content:
application/vnd.api+json:
example:
errors:
- status: '404'
title: Not Found
detail: Could not find building 07603756-06de-445c-ac8d-45d65a70f91a in portfolio cfb2bfe0-ce8d-44ab-8897-21c573c220a8
schema:
$ref: '#/components/schemas/json_api'
'401':
description: Unauthorized Request
content:
application/vnd.api+json:
example:
errors:
- status: '401'
title: Unauthorized
detail: Unauthorized Request
schema:
$ref: '#/components/schemas/json_api'
'400':
description: Bad Request
content:
application/vnd.api+json:
example:
errors:
- status: '400'
title: Bad Request
detail: An invalid UUID parameter was submitted with the request (portfolio_id)
schema:
$ref: '#/components/schemas/json_api'
'502':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '502'
title: Bad Gateway
detail: A Measurabl Server is down, please try again later
schema:
$ref: '#/components/schemas/json_api'
'500':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '500'
title: Internal Server Error
detail: An error occurred with the request
schema:
$ref: '#/components/schemas/json_api'
'503':
description: Service Unavailable
content:
application/vnd.api+json:
example:
errors:
- status: '503'
title: Service Unavailable
detail: A Measurabl Server is currently unavailable, please try again later
schema:
$ref: '#/components/schemas/json_api'
'408':
description: Request Timeout
content:
application/vnd.api+json:
example:
errors:
- status: '408'
title: Request Timeout
detail: The request you made has timed out
schema:
$ref: '#/components/schemas/json_api'
'429':
description: Too many requests
content:
application/vnd.api+json:
example:
errors:
- status: '429'
title: Too Many Requests
detail: Rate Limit Exceeded
schema:
$ref: '#/components/schemas/json_api'
'403':
description: unauthorized request
content:
application/vnd.api+json:
example:
errors:
- status: '403'
title: Forbidden
detail: 'A valid auth token is required.
POST to ''/token'' with a valid ''key'' and ''secret'' to get an auth token.
'
schema:
$ref: '#/components/schemas/json_api'
get:
summary: Returns details of a specific building for a specified portfolio or fund
tags:
- Buildings
security:
- OAuth2: []
parameters:
- name: portfolio_id
in: path
description: "UUID of either the parent portfolio or fund
\n Example: e2302549-cd8b-4098-91f5-a70ead86df4d"
required: true
schema:
type: string
- name: building_id
in: path
description: "UUID of the building
\n Example: c3c076ae-8360-4d85-876a-ba85fd6a4bab"
required: true
schema:
type: string
responses:
'200':
description: Returns Portfolio or Fund specific building
content:
application/vnd.api+json:
example:
data:
id: 97b68ae1-ebf2-473f-915a-46767d22dbd7
type: buildings
attributes:
estarId: null
name: Test Building
addressLine1: 900 Spear Avenue
addressLine2: Suite 100
addressCity: San Francisco
addressState: CA
addressProvince: null
addressZip: '94106'
addressCountry: United States
yearBuilt: null
buildingClass: C
primaryPropertyType: Data Center
floorAreaSqFt: 20000
customId: null
boughtDate: '2026-04-27'
soldDate: null
isSingleTenant: true
percentOwned: 100.0
isActive: false
updatedAt: '2026-05-24 00:00:00'
links:
self: /portfolios/11da1a92-6794-4258-85ec-4db64a192151/buildings/97b68ae1-ebf2-473f-915a-46767d22dbd7
schema:
$ref: '#/components/schemas/json_api'
'404':
description: Not Found
content:
application/vnd.api+json:
example:
errors:
- status: '404'
title: Not Found
detail: Could not find building cedac608-4426-4b84-ad7f-198b9dc0ad61 in portfolio b9efda9d-96a9-4695-8682-dcb63505173e
schema:
$ref: '#/components/schemas/json_api'
'401':
description: Unauthorized Request
content:
application/vnd.api+json:
example:
errors:
- status: '401'
title: Unauthorized
detail: Unauthorized Request
schema:
$ref: '#/components/schemas/json_api'
'400':
description: Bad Request
content:
application/vnd.api+json:
example:
errors:
- status: '400'
title: Bad Request
detail: An invalid UUID parameter was submitted with the request (portfolio_id)
schema:
$ref: '#/components/schemas/json_api'
'502':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '502'
title: Bad Gateway
detail: A Measurabl Server is down, please try again later
schema:
$ref: '#/components/schemas/json_api'
'500':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '500'
title: Internal Server Error
detail: An error occurred with the request
schema:
$ref: '#/components/schemas/json_api'
'503':
description: Service Unavailable
content:
application/vnd.api+json:
example:
errors:
- status: '503'
title: Service Unavailable
detail: A Measurabl Server is currently unavailable, please try again later
schema:
$ref: '#/components/schemas/json_api'
'408':
description: Request Timeout
content:
application/vnd.api+json:
example:
errors:
- status: '408'
title: Request Timeout
detail: The request you made has timed out
schema:
$ref: '#/components/schemas/json_api'
'429':
description: Too many requests
content:
application/vnd.api+json:
example:
errors:
- status: '429'
title: Too Many Requests
detail: Rate Limit Exceeded
schema:
$ref: '#/components/schemas/json_api'
'403':
description: unauthorized request
content:
application/vnd.api+json:
example:
errors:
- status: '403'
title: Forbidden
detail: 'A valid auth token is required.
POST to ''/token'' with a valid ''key'' and ''secret'' to get an auth token.
'
schema:
$ref: '#/components/schemas/json_api'
patch:
summary: Updates a building's attributes in a specified portfolio
tags:
- Buildings
security:
- OAuth2: []
parameters:
- name: portfolio_id
in: path
description: 'Example: 7a1eec7b-1372-40ac-92eb-aeacd4687260'
required: true
schema:
type: string
- name: building_id
in: path
description: 'Example: eaf5b11d-5b5c-41c9-a0d8-ad5eb69f1e31'
required: true
schema:
type: string
responses:
'200':
description: Updated specific building
content:
application/vnd.api+json:
example:
data:
id: 12b71fb7-cd54-467f-9e5f-844067c2214a
type: buildings
attributes:
estarId: null
name: Test Building - Updated
addressLine1: 900 Spear Avenue
addressLine2: Suite 100
addressCity: San Francisco
addressState: CA
addressProvince: null
addressZip: '94106'
addressCountry: United States
yearBuilt: null
buildingClass: C
primaryPropertyType: Data Center
floorAreaSqFt: null
customId: null
boughtDate: '2025-12-08'
soldDate: null
isSingleTenant: false
percentOwned: 25.5
isActive: false
updatedAt: '2026-04-05 00:00:00'
links:
self: /portfolios/8aa7765d-fa4a-44a3-bb87-c3d7dc82e874/buildings/12b71fb7-cd54-467f-9e5f-844067c2214a
schema:
$ref: '#/components/schemas/json_api'
'404':
description: Not Found
content:
application/vnd.api+json:
example:
errors:
- status: '404'
title: Not Found
detail: Could not find building 57b6e33b-800c-4d52-9865-5b5d18467e20 in portfolio 14e67f51-1d56-4b60-9bce-e95361a7bde6
schema:
$ref: '#/components/schemas/json_api'
'401':
description: Unauthorized Request
content:
application/vnd.api+json:
example:
errors:
- status: '401'
title: Unauthorized
detail: Unauthorized Request
schema:
$ref: '#/components/schemas/json_api'
'400':
description: Bad Request
content:
application/vnd.api+json:
example:
errors:
- status: '400'
title: Bad Request
detail: An invalid UUID parameter was submitted with the request (portfolio_id)
schema:
$ref: '#/components/schemas/json_api'
'502':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '502'
title: Bad Gateway
detail: A Measurabl Server is down, please try again later
schema:
$ref: '#/components/schemas/json_api'
'500':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '500'
title: Internal Server Error
detail: An error occurred with the request
schema:
$ref: '#/components/schemas/json_api'
'503':
description: Service Unavailable
content:
application/vnd.api+json:
example:
errors:
- status: '503'
title: Service Unavailable
detail: A Measurabl Server is currently unavailable, please try again later
schema:
$ref: '#/components/schemas/json_api'
'408':
description: Request Timeout
content:
application/vnd.api+json:
example:
errors:
- status: '408'
title: Request Timeout
detail: The request you made has timed out
schema:
$ref: '#/components/schemas/json_api'
'429':
description: Too many requests
content:
application/vnd.api+json:
example:
errors:
- status: '429'
title: Too Many Requests
detail: Rate Limit Exceeded
schema:
$ref: '#/components/schemas/json_api'
'403':
description: unauthorized request
content:
application/vnd.api+json:
example:
errors:
- status: '403'
title: Forbidden
detail: 'A valid auth token is required.
POST to ''/token'' with a valid ''key'' and ''secret'' to get an auth token.
'
schema:
$ref: '#/components/schemas/json_api'
requestBody:
content:
application/vnd.api+json:
schema:
type: object
properties:
data:
type: object
properties:
id:
type: string
type:
type: string
attributes:
type: object
properties:
name:
type: string
addressLine1:
type: string
addressLine2:
type: string
addressCity:
type: string
addressState:
type: string
addressProvince:
type: string
addressZip:
type: string
addressCountry:
type: string
yearBuilt:
type: integer
buildingClass:
type: string
customId:
type: string
boughtDate:
type: string
soldDate:
type: string
isSingleTenant:
type: boolean
percentOwned:
type: float
isActive:
type: boolean
required:
- id
- type
example:
data:
id: 2f0aed9f-0bb1-45b8-88fe-eba74dd87dee
type: buildings
attributes:
name: Test Building - Updated
addressLine1: 900 Spear Avenue
addressLine2: ''
addressCity: San Francisco
addressState: CA
addressProvince: null
addressZip: '94105'
addressCountry: United States
yearBuilt: 1980
buildingClass: C
customId: null
boughtDate: '2026-03-11'
soldDate: null
isSingleTenant: false
percentOwned: 25.5
isActive: false
required: true
description: Request body used to update a specific building
/core/v0/portfolios/{portfolio_id}/certification_types:
get:
summary: Returns a list of all relevant certifications for a specified portfolio
tags:
- Certification Types
security:
- OAuth2: []
parameters:
- name: portfolio_id
in: path
description: "UUID of either the parent portfolio or fund
\n Example: 3cc2664f-1d91-4114-abb1-16e2b27258eb"
required: true
schema:
type: string
- name: page
in: query
default: 1
schema:
type: integer
- name: size
in: query
description: The max page size is limited to 200 returned results
default: 25
schema:
type: integer
responses:
'200':
description: Portfolio's list of relevant certifications
content:
application/vnd.api+json:
example:
data:
- id: 44aac460-fdae-49e6-aea6-429eccb9df06
type: certificationTypes
attributes:
name: BEAM Plus - New Buildings
custom: true
links:
self: /portfolios/531e68f4-b2cb-4c24-a3b9-65eed0fe2259/certification-types/44aac460-fdae-49e6-aea6-429eccb9df06
- id: 58230c8d-97ca-463f-9853-f07fb8f229b2
type: certificationTypes
attributes:
name: BEAM Plus - Interior
custom: true
links:
self: /portfolios/531e68f4-b2cb-4c24-a3b9-65eed0fe2259/certification-types/58230c8d-97ca-463f-9853-f07fb8f229b2
- id: c81c7152-a03a-48be-96f5-a8069135e600
type: certificationTypes
attributes:
name: Energy Star Custom
custom: false
links:
self: /portfolios/531e68f4-b2cb-4c24-a3b9-65eed0fe2259/certification-types/c81c7152-a03a-48be-96f5-a8069135e600
links:
self: /portfolios/531e68f4-b2cb-4c24-a3b9-65eed0fe2259/certification-types/?size=2&page=1
first: /portfolios/531e68f4-b2cb-4c24-a3b9-65eed0fe2259/certification-types/?size=2&page=1
last: /portfolios/531e68f4-b2cb-4c24-a3b9-65eed0fe2259/certification-types/?size=2&page=2
next: /portfolios/531e68f4-b2cb-4c24-a3b9-65eed0fe2259/certification-types/?size=2&page=2
meta:
page:
number: 1
size: 2
totalPages: 2
totalElements: 3
schema:
$ref: '#/components/schemas/json_api'
'404':
description: Not Found
content:
application/vnd.api+json:
example:
errors:
- status: '404'
title: Not Found
detail: Could not find portfolio 52c04b5b-3f04-489e-b836-11beb68fd4e2
schema:
$ref: '#/components/schemas/json_api'
'401':
description: Unauthorized Request
content:
application/vnd.api+json:
example:
errors:
- status: '401'
title: Unauthorized
detail: Unauthorized Request
schema:
$ref: '#/components/schemas/json_api'
'400':
description: Bad Request
content:
application/vnd.api+json:
example:
errors:
- status: '400'
title: Bad Request
detail: An invalid UUID parameter was submitted with the request (portfolio_id)
schema:
$ref: '#/components/schemas/json_api'
'502':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '502'
title: Bad Gateway
detail: A Measurabl Server is down, please try again later
schema:
$ref: '#/components/schemas/json_api'
'500':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '500'
title: Internal Server Error
detail: An error occurred with the request
schema:
$ref: '#/components/schemas/json_api'
'503':
description: Service Unavailable
content:
application/vnd.api+json:
example:
errors:
- status: '503'
title: Service Unavailable
detail: A Measurabl Server is currently unavailable, please try again later
schema:
$ref: '#/components/schemas/json_api'
'408':
description: Request Timeout
content:
application/vnd.api+json:
example:
errors:
- status: '408'
title: Request Timeout
detail: The request you made has timed out
schema:
$ref: '#/components/schemas/json_api'
'429':
description: Too many requests
content:
application/vnd.api+json:
example:
errors:
- status: '429'
title: Too Many Requests
detail: Rate Limit Exceeded
schema:
$ref: '#/components/schemas/json_api'
'403':
description: unauthorized request
content:
application/vnd.api+json:
example:
errors:
- status: '403'
title: Forbidden
detail: 'A valid auth token is required.
POST to ''/token'' with a valid ''key'' and ''secret'' to get an auth token.
'
schema:
$ref: '#/components/schemas/json_api'
/core/v0/portfolios/{portfolio_id}/buildings/{building_id}/certifications:
post:
summary: Creates a certification for a specified building
tags:
- Certifications
security:
- OAuth2: []
parameters:
- name: portfolio_id
in: path
description: 'Example: d20abdff-fa4c-46ff-8f01-c1abc65876e4'
required: true
schema:
type: string
- name: building_id
in: path
description: 'Example: d55f00d7-a869-4746-bba5-8a6d0b69bfc7'
required: true
schema:
type: string
responses:
'200':
description: Portfolio or Fund / Building specific certification
content:
application/vnd.api+json:
example:
data:
id: aaa65918-9d51-48df-8938-c5b5a0a4f0e5
type: certifications
attributes:
isCustomType: false
certificationType: AirRated AirScore
certificationDate: '2026-03-11'
expirationDate: '2026-04-11'
importedAt: '2023-02-11 11:33:45'
importState: CONFIRMED
isWholeBuilding: false
notes: some notes
dataSource: MANUAL
accoladeLevel: null
updatedAt: '2025-08-24 23:05:44'
relationships:
building:
data:
id: 563767b4-b30a-41ee-8695-0c8f0a5d9eae
type: buildings
links:
self: /portfolios/302d8703-a3e1-4c7f-807f-3a3e2cfa0a72/buildings/563767b4-b30a-41ee-8695-0c8f0a5d9eae
links:
self: /portfolios/302d8703-a3e1-4c7f-807f-3a3e2cfa0a72/buildings/563767b4-b30a-41ee-8695-0c8f0a5d9eae/certifications/aaa65918-9d51-48df-8938-c5b5a0a4f0e5
schema:
$ref: '#/components/schemas/json_api'
'404':
description: Not Found
content:
application/vnd.api+json:
example:
errors:
- status: '404'
title: Not Found
detail: Could not find building ffb87450-2001-4453-9b38-2370746f1cf8 in portfolio db9f7ef3-3503-4851-8bd9-73c42bf45744
schema:
$ref: '#/components/schemas/json_api'
'401':
description: Unauthorized Request
content:
application/vnd.api+json:
example:
errors:
- status: '401'
title: Unauthorized
detail: Unauthorized Request
schema:
$ref: '#/components/schemas/json_api'
'400':
description: Bad Request
content:
application/vnd.api+json:
example:
errors:
- status: '400'
title: Bad Request
detail: An invalid UUID parameter was submitted with the request (portfolio_id)
schema:
$ref: '#/components/schemas/json_api'
'502':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '502'
title: Bad Gateway
detail: A Measurabl Server is down, please try again later
schema:
$ref: '#/components/schemas/json_api'
'500':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '500'
title: Internal Server Error
detail: An error occurred with the request
schema:
$ref: '#/components/schemas/json_api'
'503':
description: Service Unavailable
content:
application/vnd.api+json:
example:
errors:
- status: '503'
title: Service Unavailable
detail: A Measurabl Server is currently unavailable, please try again later
schema:
$ref: '#/components/schemas/json_api'
'408':
description: Request Timeout
content:
application/vnd.api+json:
example:
errors:
- status: '408'
title: Request Timeout
detail: The request you made has timed out
schema:
$ref: '#/components/schemas/json_api'
'429':
description: Too many requests
content:
application/vnd.api+json:
example:
errors:
- status: '429'
title: Too Many Requests
detail: Rate Limit Exceeded
schema:
$ref: '#/components/schemas/json_api'
'403':
description: unauthorized request
content:
application/vnd.api+json:
example:
errors:
- status: '403'
title: Forbidden
detail: 'A valid auth token is required.
POST to ''/token'' with a valid ''key'' and ''secret'' to get an auth token.
'
schema:
$ref: '#/components/schemas/json_api'
requestBody:
content:
application/vnd.api+json:
schema:
type: object
properties:
data:
type: object
properties:
attributes:
type: object
properties:
isCustomType:
type: boolean
certificationType:
type: string
certificationDate:
type: string
expirationDate:
type: string
isWholeBuilding:
type: boolean
notes:
type: string
accoladeLevel:
type: string
required:
- isCustomType
- certificationType
- certificationDate
- isWholeBuilding
- dataSource
example:
data:
type: certifications
attributes:
isCustomType: true
certificationType: AirRated AirScore
certificationDate: '2023-03-08'
expirationDate: '2023-04-08'
isWholeBuilding: true
notes: Some notes
accoladeLevel: null
required: true
description: Request body used to create a certification associated with a building
get:
summary: Returns a specified buildings list of certifications
tags:
- Certifications
security:
- OAuth2: []
parameters:
- name: portfolio_id
in: path
description: 'UUID of either the parent portfolio or fund
Example: d778dc3f-480e-4e68-b16a-3ddd5964dd58'
required: true
schema:
type: string
- name: building_id
in: path
description: 'Example: cc334c38-e033-4ee1-a4be-d29d399fc121'
required: true
schema:
type: string
- name: page
in: query
default: 1
schema:
type: integer
- name: size
in: query
description: The max page size is limited to 200 returned results
default: 25
schema:
type: integer
responses:
'200':
description: Portfolio or Fund / Building list of certifications
content:
application/vnd.api+json:
example:
data:
- id: b939f005-9db2-4bef-a5fb-b03bfcd260c9
type: certifications
attributes:
isCustomType: false
certificationType: AirRated AirScore
certificationDate: '2026-05-11'
expirationDate: '2026-08-28'
importedAt: '2025-08-31 10:58:20'
importState: CONFIRMED
isWholeBuilding: true
notes: some notes
dataSource: MANUAL
accoladeLevel: null
updatedAt: '2026-06-15 20:41:52'
relationships:
building:
data:
id: be33ecd5-b7a9-435b-b527-af2dbab6ab1b
type: buildings
links:
self: /portfolios/62e6603a-ecb4-4603-98af-9331712d67db/buildings/be33ecd5-b7a9-435b-b527-af2dbab6ab1b
links:
self: /portfolios/62e6603a-ecb4-4603-98af-9331712d67db/buildings/be33ecd5-b7a9-435b-b527-af2dbab6ab1b/certifications/b939f005-9db2-4bef-a5fb-b03bfcd260c9
- id: 5d7cd904-bf88-4f20-8120-eca5dcde87cb
type: certifications
attributes:
isCustomType: false
certificationType: CALGreen
certificationDate: '2026-01-22'
expirationDate: '2026-11-22'
importedAt: '2026-02-16 14:18:44'
importState: CONFIRMED
isWholeBuilding: false
notes: some notes
dataSource: MANUAL
accoladeLevel: null
updatedAt: '2025-10-05 16:27:28'
relationships:
building:
data:
id: be33ecd5-b7a9-435b-b527-af2dbab6ab1b
type: buildings
links:
self: /portfolios/62e6603a-ecb4-4603-98af-9331712d67db/buildings/be33ecd5-b7a9-435b-b527-af2dbab6ab1b
links:
self: /portfolios/62e6603a-ecb4-4603-98af-9331712d67db/buildings/be33ecd5-b7a9-435b-b527-af2dbab6ab1b/certifications/5d7cd904-bf88-4f20-8120-eca5dcde87cb
links:
self: /portfolios/62e6603a-ecb4-4603-98af-9331712d67db/buildings/be33ecd5-b7a9-435b-b527-af2dbab6ab1b/certifications/?size=2&page=1
first: /portfolios/62e6603a-ecb4-4603-98af-9331712d67db/buildings/be33ecd5-b7a9-435b-b527-af2dbab6ab1b/certifications/?size=2&page=1
last: /portfolios/62e6603a-ecb4-4603-98af-9331712d67db/buildings/be33ecd5-b7a9-435b-b527-af2dbab6ab1b/certifications/?size=2&page=2
next: /portfolios/62e6603a-ecb4-4603-98af-9331712d67db/buildings/be33ecd5-b7a9-435b-b527-af2dbab6ab1b/certifications/?size=2&page=2
meta:
page:
number: 1
size: 2
totalPages: 2
totalElements: 3
schema:
$ref: '#/components/schemas/json_api'
'404':
description: Not Found
content:
application/vnd.api+json:
example:
errors:
- status: '404'
title: Not Found
detail: Could not find building 1bbecc9c-36f2-469e-8ec0-c4617e998e27 in portfolio 00206cfd-8e3e-4da4-8704-7c2ffb87b33a
schema:
$ref: '#/components/schemas/json_api'
'401':
description: Unauthorized Request
content:
application/vnd.api+json:
example:
errors:
- status: '401'
title: Unauthorized
detail: Unauthorized Request
schema:
$ref: '#/components/schemas/json_api'
'400':
description: Bad Request
content:
application/vnd.api+json:
example:
errors:
- status: '400'
title: Bad Request
detail: An invalid UUID parameter was submitted with the request (portfolio_id)
schema:
$ref: '#/components/schemas/json_api'
'502':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '502'
title: Bad Gateway
detail: A Measurabl Server is down, please try again later
schema:
$ref: '#/components/schemas/json_api'
'500':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '500'
title: Internal Server Error
detail: An error occurred with the request
schema:
$ref: '#/components/schemas/json_api'
'503':
description: Service Unavailable
content:
application/vnd.api+json:
example:
errors:
- status: '503'
title: Service Unavailable
detail: A Measurabl Server is currently unavailable, please try again later
schema:
$ref: '#/components/schemas/json_api'
'408':
description: Request Timeout
content:
application/vnd.api+json:
example:
errors:
- status: '408'
title: Request Timeout
detail: The request you made has timed out
schema:
$ref: '#/components/schemas/json_api'
'429':
description: Too many requests
content:
application/vnd.api+json:
example:
errors:
- status: '429'
title: Too Many Requests
detail: Rate Limit Exceeded
schema:
$ref: '#/components/schemas/json_api'
'403':
description: unauthorized request
content:
application/vnd.api+json:
example:
errors:
- status: '403'
title: Forbidden
detail: 'A valid auth token is required.
POST to ''/token'' with a valid ''key'' and ''secret'' to get an auth token.
'
schema:
$ref: '#/components/schemas/json_api'
/core/v0/portfolios/{portfolio_id}/buildings/{building_id}/certifications/{certification_id}:
delete:
summary: Deletes a specific certification for a specified building
tags:
- Certifications
security:
- OAuth2: []
parameters:
- name: portfolio_id
in: path
description: 'UUID for the parent portfolio
Example: 9adf9e65-906f-421c-a31a-752f6d581ef5'
required: true
schema:
type: string
- name: building_id
in: path
description: 'Example: dc1b99db-835f-4f19-a24c-76af69ddaba8'
required: true
schema:
type: string
- name: certification_id
in: path
description: 'Example: 886c166e-dee3-4336-96ac-0c709ac8bb97'
required: true
schema:
type: string
responses:
'204':
description: Certification Deleted Successfully
content:
application/vnd.api+json:
example: ''
'400':
description: Bad Request
content:
application/vnd.api+json:
example:
errors:
- status: '400'
title: Bad Request
detail: An invalid UUID parameter was submitted with the request (portfolio_id)
schema:
$ref: '#/components/schemas/json_api'
'404':
description: Not Found
content:
application/vnd.api+json:
example:
errors:
- status: '404'
title: Not Found
detail: Could not find certification e8532e47-4566-4ce1-a3db-64e1777cbbdb in building 72daa0ad-31ba-4a63-928c-e6376fdcb541
in portfolio 07fafb58-bc23-4bba-a632-bbc063b378a5
schema:
$ref: '#/components/schemas/json_api'
'401':
description: Unauthorized Request
content:
application/vnd.api+json:
example:
errors:
- status: '401'
title: Unauthorized
detail: Unauthorized Request
schema:
$ref: '#/components/schemas/json_api'
'502':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '502'
title: Bad Gateway
detail: A Measurabl Server is down, please try again later
schema:
$ref: '#/components/schemas/json_api'
'500':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '500'
title: Internal Server Error
detail: An error occurred with the request
schema:
$ref: '#/components/schemas/json_api'
'503':
description: Service Unavailable
content:
application/vnd.api+json:
example:
errors:
- status: '503'
title: Service Unavailable
detail: A Measurabl Server is currently unavailable, please try again later
schema:
$ref: '#/components/schemas/json_api'
'408':
description: Request Timeout
content:
application/vnd.api+json:
example:
errors:
- status: '408'
title: Request Timeout
detail: The request you made has timed out
schema:
$ref: '#/components/schemas/json_api'
'429':
description: Too many requests
content:
application/vnd.api+json:
example:
errors:
- status: '429'
title: Too Many Requests
detail: Rate Limit Exceeded
schema:
$ref: '#/components/schemas/json_api'
'403':
description: unauthorized request
content:
application/vnd.api+json:
example:
errors:
- status: '403'
title: Forbidden
detail: 'A valid auth token is required.
POST to ''/token'' with a valid ''key'' and ''secret'' to get an auth token.
'
schema:
$ref: '#/components/schemas/json_api'
get:
summary: Returns a specific certification for a specific building
tags:
- Certifications
security:
- OAuth2: []
parameters:
- name: portfolio_id
in: path
description: 'UUID of either the parent portfolio or fund
Example: 21897b9b-251f-4714-9a36-75e2850c2541'
required: true
schema:
type: string
- name: building_id
in: path
description: 'Example: 4aa69684-4dd5-4508-8863-2ee64c332d35'
required: true
schema:
type: string
- name: certification_id
in: path
description: 'Example: 84424a54-cba2-4a79-b933-5a622be1e02d'
required: true
schema:
type: string
responses:
'200':
description: Portfolio or Fund / Building specific certification
content:
application/vnd.api+json:
example:
data:
id: 8f352409-3363-4588-acd7-dd630be13a53
type: certifications
attributes:
isCustomType: true
certificationType: AirRated AirScore
certificationDate: '2026-02-19'
expirationDate: '2026-03-19'
importedAt: '2022-09-06 11:32:27'
importState: CONFIRMED
isWholeBuilding: true
notes: some notes
dataSource: MANUAL
accoladeLevel: null
updatedAt: '2026-02-26 23:42:16'
relationships:
building:
data:
id: 28996107-e091-4104-9d69-8b2d822a0eee
type: buildings
links:
self: /portfolios/b2ab271d-d4bd-4e44-9e97-96acadd91650/buildings/28996107-e091-4104-9d69-8b2d822a0eee
links:
self: /portfolios/b2ab271d-d4bd-4e44-9e97-96acadd91650/buildings/28996107-e091-4104-9d69-8b2d822a0eee/certifications/8f352409-3363-4588-acd7-dd630be13a53
schema:
$ref: '#/components/schemas/json_api'
'404':
description: Not Found
content:
application/vnd.api+json:
example:
errors:
- status: '404'
title: Not Found
detail: Could not find certification f4c8b15a-1d17-4e4d-a621-ac07349d2711 in building 8c8d1f77-94a0-48a4-9a1b-cb119569ef3c
in portfolio d29b173b-1831-4122-bea6-a17fa61bcbcd
schema:
$ref: '#/components/schemas/json_api'
'401':
description: Unauthorized Request
content:
application/vnd.api+json:
example:
errors:
- status: '401'
title: Unauthorized
detail: Unauthorized Request
schema:
$ref: '#/components/schemas/json_api'
'400':
description: Bad Request
content:
application/vnd.api+json:
example:
errors:
- status: '400'
title: Bad Request
detail: An invalid UUID parameter was submitted with the request (portfolio_id)
schema:
$ref: '#/components/schemas/json_api'
'502':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '502'
title: Bad Gateway
detail: A Measurabl Server is down, please try again later
schema:
$ref: '#/components/schemas/json_api'
'500':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '500'
title: Internal Server Error
detail: An error occurred with the request
schema:
$ref: '#/components/schemas/json_api'
'503':
description: Service Unavailable
content:
application/vnd.api+json:
example:
errors:
- status: '503'
title: Service Unavailable
detail: A Measurabl Server is currently unavailable, please try again later
schema:
$ref: '#/components/schemas/json_api'
'408':
description: Request Timeout
content:
application/vnd.api+json:
example:
errors:
- status: '408'
title: Request Timeout
detail: The request you made has timed out
schema:
$ref: '#/components/schemas/json_api'
'429':
description: Too many requests
content:
application/vnd.api+json:
example:
errors:
- status: '429'
title: Too Many Requests
detail: Rate Limit Exceeded
schema:
$ref: '#/components/schemas/json_api'
'403':
description: unauthorized request
content:
application/vnd.api+json:
example:
errors:
- status: '403'
title: Forbidden
detail: 'A valid auth token is required.
POST to ''/token'' with a valid ''key'' and ''secret'' to get an auth token.
'
schema:
$ref: '#/components/schemas/json_api'
patch:
summary: Updates a specific certification for a specified building
tags:
- Certifications
security:
- OAuth2: []
parameters:
- name: portfolio_id
in: path
description: 'UUID for the parent portfolio
Example: c8c8cde1-5f75-47f1-9612-a22954b9707e'
required: true
schema:
type: string
- name: building_id
in: path
description: 'Example: 773c9980-d70f-45ca-b25c-f5200c99cc41'
required: true
schema:
type: string
- name: certification_id
in: path
description: 'Example: 61bdee9d-e27f-48cc-abb6-4d053bf31a50'
required: true
schema:
type: string
responses:
'200':
description: Portfolio or Fund / Building Specific Certification Updated
content:
application/vnd.api+json:
example:
data:
id: 570c293d-4598-4a70-8ca1-cf18b6a21b16
type: certifications
attributes:
isCustomType: false
certificationType: AirRated AirScore
certificationDate: '2025-11-17'
expirationDate: '2025-12-17'
importedAt: '2023-04-19 13:44:03'
importState: null
isWholeBuilding: false
notes: some notes
dataSource: MANUAL
accoladeLevel: null
updatedAt: '2026-06-17 23:25:51'
relationships:
building:
data:
id: 70da3099-210a-46d2-b670-4a7975923b5d
type: buildings
links:
self: /portfolios/93d9dfe4-7f13-4e6e-b83b-10c4647f7ed7/buildings/70da3099-210a-46d2-b670-4a7975923b5d
links:
self: /portfolios/93d9dfe4-7f13-4e6e-b83b-10c4647f7ed7/buildings/70da3099-210a-46d2-b670-4a7975923b5d/certifications/570c293d-4598-4a70-8ca1-cf18b6a21b16
schema:
$ref: '#/components/schemas/json_api'
'404':
description: Not Found
content:
application/vnd.api+json:
example:
errors:
- status: '404'
title: Not Found
detail: Could not find certification eebee92f-bdb2-408f-876f-afb44d9b1648 for building 69b99cee-93a2-4b82-a5c5-abfef9863be0
in portfolio d105b088-9397-4dcb-bb36-867d315af75f
schema:
$ref: '#/components/schemas/json_api'
'401':
description: Unauthorized Request
content:
application/vnd.api+json:
example:
errors:
- status: '401'
title: Unauthorized
detail: Unauthorized Request
schema:
$ref: '#/components/schemas/json_api'
'400':
description: Bad Request
content:
application/vnd.api+json:
example:
errors:
- status: '400'
title: Bad Request
detail: An invalid UUID parameter was submitted with the request (portfolio_id)
schema:
$ref: '#/components/schemas/json_api'
'502':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '502'
title: Bad Gateway
detail: A Measurabl Server is down, please try again later
schema:
$ref: '#/components/schemas/json_api'
'500':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '500'
title: Internal Server Error
detail: An error occurred with the request
schema:
$ref: '#/components/schemas/json_api'
'503':
description: Service Unavailable
content:
application/vnd.api+json:
example:
errors:
- status: '503'
title: Service Unavailable
detail: A Measurabl Server is currently unavailable, please try again later
schema:
$ref: '#/components/schemas/json_api'
'408':
description: Request Timeout
content:
application/vnd.api+json:
example:
errors:
- status: '408'
title: Request Timeout
detail: The request you made has timed out
schema:
$ref: '#/components/schemas/json_api'
'429':
description: Too many requests
content:
application/vnd.api+json:
example:
errors:
- status: '429'
title: Too Many Requests
detail: Rate Limit Exceeded
schema:
$ref: '#/components/schemas/json_api'
'403':
description: unauthorized request
content:
application/vnd.api+json:
example:
errors:
- status: '403'
title: Forbidden
detail: 'A valid auth token is required.
POST to ''/token'' with a valid ''key'' and ''secret'' to get an auth token.
'
schema:
$ref: '#/components/schemas/json_api'
requestBody:
content:
application/vnd.api+json:
schema:
type: object
properties:
data:
type: object
properties:
id:
type: string
type:
type: string
attributes:
type: object
properties:
certificationDate:
type: string
expirationDate:
type: string
importState:
type: string
isWholeBuilding:
type: boolean
notes:
type: string
accoladeLevel:
type: string
required:
- id
- type
example:
data:
id: 07dcbd6f-d6f0-4a35-abfd-654792c42a9a
type: certifications
attributes:
certificationDate: '2023-04-19'
expirationDate: '2024-04-18'
importState: null
isWholeBuilding: true
notes: Updated notes
accoladeLevel: null
updatedAt: '2025-11-07 01:27:00'
required: true
description: Request body used to update a specific certification
/core/v0/portfolios/{portfolio_id}/buildings/{building_id}/certifications/{certification_id}/relationships:
patch:
summary: Assigns a specific certification to a specified space or list of spaces
tags:
- Space Certifications
security:
- OAuth2: []
parameters:
- name: portfolio_id
in: path
description: 'UUID for the parent portfolio
Example: ea278d77-7232-464c-989e-ca5f3ab40b4d'
required: true
schema:
type: string
- name: building_id
in: path
description: 'Example: 84f34431-69df-4686-8695-ceab0841d0dd'
required: true
schema:
type: string
- name: certification_id
in: path
description: 'Example: 0a8ea329-70a6-4e5d-9c88-9584b5da221f'
required: true
schema:
type: string
responses:
'204':
description: Certification Assigned Successfully to the Specified Space
content:
application/vnd.api+json:
example: ''
'404':
description: Not Found
content:
application/vnd.api+json:
example:
errors:
- status: '404'
title: Not Found
detail: Could not find certification da6f0bb1-f55c-4ace-827f-dd8f543ea873 for building dbc59f7f-acb4-41b9-b59e-d3baaf166104
in portfolio cef194d6-33e0-4b69-81df-72517a92c053
schema:
$ref: '#/components/schemas/json_api'
'401':
description: Unauthorized Request
content:
application/vnd.api+json:
example:
errors:
- status: '401'
title: Unauthorized
detail: Unauthorized Request
schema:
$ref: '#/components/schemas/json_api'
'400':
description: Bad Request
content:
application/vnd.api+json:
example:
errors:
- status: '400'
title: Bad Request
detail: An invalid UUID parameter was submitted with the request (portfolio_id)
schema:
$ref: '#/components/schemas/json_api'
'502':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '502'
title: Bad Gateway
detail: A Measurabl Server is down, please try again later
schema:
$ref: '#/components/schemas/json_api'
'500':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '500'
title: Internal Server Error
detail: An error occurred with the request
schema:
$ref: '#/components/schemas/json_api'
'503':
description: Service Unavailable
content:
application/vnd.api+json:
example:
errors:
- status: '503'
title: Service Unavailable
detail: A Measurabl Server is currently unavailable, please try again later
schema:
$ref: '#/components/schemas/json_api'
'408':
description: Request Timeout
content:
application/vnd.api+json:
example:
errors:
- status: '408'
title: Request Timeout
detail: The request you made has timed out
schema:
$ref: '#/components/schemas/json_api'
'429':
description: Too many requests
content:
application/vnd.api+json:
example:
errors:
- status: '429'
title: Too Many Requests
detail: Rate Limit Exceeded
schema:
$ref: '#/components/schemas/json_api'
'403':
description: unauthorized request
content:
application/vnd.api+json:
example:
errors:
- status: '403'
title: Forbidden
detail: 'A valid auth token is required.
POST to ''/token'' with a valid ''key'' and ''secret'' to get an auth token.
'
schema:
$ref: '#/components/schemas/json_api'
requestBody:
content:
application/vnd.api+json:
schema:
type: object
properties:
data:
type: object
properties:
type:
type: string
id:
type: string
required:
- id
- type
example:
data:
- type: spaces
id: 0869c43c-9199-4e0f-a3bd-7a243454654e
required: true
description: Request body used to assign an existing certification to a specified space or list of spaces
/core/v0/portfolios/{portfolio_id}/funds/{fund_id}/relationships:
patch:
summary: Assigns existing buildings to a specific fund in a specified portfolio
tags:
- Funds Buildings
security:
- OAuth2: []
parameters:
- name: portfolio_id
in: path
description: 'UUID for the parent portfolio
Example: 61b03d30-3ad8-4ddc-8fbc-b25b7d5b49d0'
required: true
schema:
type: string
- name: fund_id
in: path
description: 'Example: 8da040e6-5a10-4110-ba1a-af12b6eec513'
required: true
schema:
type: string
responses:
'204':
description: Building(s) Assigned Successfully to the Specified Fund
content:
application/vnd.api+json:
example: ''
'404':
description: Not Found
content:
application/vnd.api+json:
example:
errors:
- status: '404'
title: Not Found
detail: Could not find fund b7392138-49cd-4a20-9571-bd15a8581318 in portfolio 72fa5225-592e-4792-a937-10fb44695246
schema:
$ref: '#/components/schemas/json_api'
'401':
description: Unauthorized Request
content:
application/vnd.api+json:
example:
errors:
- status: '401'
title: Unauthorized
detail: Unauthorized Request
schema:
$ref: '#/components/schemas/json_api'
'400':
description: Bad Request
content:
application/vnd.api+json:
example:
errors:
- status: '400'
title: Bad Request
detail: An invalid UUID parameter was submitted with the request (portfolio_id)
schema:
$ref: '#/components/schemas/json_api'
'502':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '502'
title: Bad Gateway
detail: A Measurabl Server is down, please try again later
schema:
$ref: '#/components/schemas/json_api'
'500':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '500'
title: Internal Server Error
detail: An error occurred with the request
schema:
$ref: '#/components/schemas/json_api'
'503':
description: Service Unavailable
content:
application/vnd.api+json:
example:
errors:
- status: '503'
title: Service Unavailable
detail: A Measurabl Server is currently unavailable, please try again later
schema:
$ref: '#/components/schemas/json_api'
'408':
description: Request Timeout
content:
application/vnd.api+json:
example:
errors:
- status: '408'
title: Request Timeout
detail: The request you made has timed out
schema:
$ref: '#/components/schemas/json_api'
'429':
description: Too many requests
content:
application/vnd.api+json:
example:
errors:
- status: '429'
title: Too Many Requests
detail: Rate Limit Exceeded
schema:
$ref: '#/components/schemas/json_api'
'403':
description: unauthorized request
content:
application/vnd.api+json:
example:
errors:
- status: '403'
title: Forbidden
detail: 'A valid auth token is required.
POST to ''/token'' with a valid ''key'' and ''secret'' to get an auth token.
'
schema:
$ref: '#/components/schemas/json_api'
requestBody:
content:
application/vnd.api+json:
schema:
type: object
properties:
data:
type: object
properties:
type:
type: string
id:
type: string
required:
- id
- type
example:
data:
- type: buildings
id: b7509982-54cf-4b3e-84fd-da94ddc7e676
required: true
description: Request body used to assign existing buildings to a specific fund
/core/v0/portfolios/{portfolio_id}/funds:
post:
summary: Creates a new fund for a specified portfolio
tags:
- Funds
security:
- OAuth2: []
parameters:
- name: portfolio_id
in: path
description: 'Example: c56289c7-a0a9-4c30-9ca6-92246fba35c6'
required: true
schema:
type: string
responses:
'200':
description: Fund created
content:
application/vnd.api+json:
example:
data:
id: 9e6f159b-68ab-4c92-a132-b788d9aed66c
type: funds
attributes:
name: New Fund Name
createdAt: '2026-07-16T13:21:22Z'
updatedAt: '2026-07-16T13:21:22Z'
schema:
$ref: '#/components/schemas/json_api'
'400':
description: Bad Request
content:
application/vnd.api+json:
example:
errors:
- status: '400'
title: Bad Request
detail: An invalid UUID parameter was submitted with the request (portfolio_id)
schema:
$ref: '#/components/schemas/json_api'
'500':
description: An internal error has occurred
content:
application/vnd.api+json:
example:
errors:
- status: '500'
title: Internal Server Error
detail: An error occurred with the request
schema:
$ref: '#/components/schemas/json_api'
'401':
description: Unauthorized Request
content:
application/vnd.api+json:
example:
errors:
- status: '401'
title: Unauthorized
detail: Unauthorized AppType or Product required for this request
schema:
$ref: '#/components/schemas/json_api'
'429':
description: Too Many Requests
content:
application/vnd.api+json:
example:
errors:
- status: '429'
title: Too Many Requests
detail: Rate Limit Exceeded
schema:
$ref: '#/components/schemas/json_api'
'502':
description: Bad Gateway
content:
application/vnd.api+json:
example:
errors:
- status: '502'
title: Bad Gateway
detail: A Measurabl Server is down, please try again later
schema:
$ref: '#/components/schemas/json_api'
'408':
description: Request timeout
content:
application/vnd.api+json:
example:
errors:
- status: '408'
title: Request Timeout
detail: The request you made has timed out
schema:
$ref: '#/components/schemas/json_api'
'404':
description: Account not found
content:
application/vnd.api+json:
example:
errors:
- status: '404'
title: Account not found
detail: The specified account does not exist
schema:
$ref: '#/components/schemas/json_api'
'403':
description: unauthorized request
content:
application/vnd.api+json:
example:
errors:
- status: '403'
title: Forbidden
detail: 'A valid auth token is required.
POST to ''/token'' with a valid ''key'' and ''secret'' to get an auth token.
'
schema:
$ref: '#/components/schemas/json_api'
requestBody:
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
type:
type: string
attributes:
type: object
properties:
name:
type: string
required:
- name
example:
data:
type: funds
attributes:
name: New Fund Name
required: true
description: Request body used to create a fund for a specified portfolio
get:
summary: Returns a list of all funds for a specified portfolio
tags:
- Funds
security:
- OAuth2: []
parameters:
- name: portfolio_id
in: path
description: 'Example: a892099b-d3e8-40be-b94e-7cffc2b0bf0c'
required: true
schema:
type: string
responses:
'200':
description: Return a list of all funds for a portfolio
content:
application/vnd.api+json:
example:
data:
- id: 5e63ab63-dab7-4fe0-af56-88c327f39f01
type: funds
attributes:
name: Venture Capital & Private Equity
createdAt: '2026-07-16T13:21:24Z'
updatedAt: '2026-07-16T13:21:24Z'
- id: 77583d84-cc62-41ce-a817-75b398b65c63
type: funds
attributes:
name: Management Consulting
createdAt: '2026-07-16T13:21:24Z'
updatedAt: '2026-07-16T13:21:24Z'
- id: fc8f34b3-ef06-463d-8e97-a8be9964a7e9
type: funds
attributes:
name: Printing
createdAt: '2026-07-16T13:21:24Z'
updatedAt: '2026-07-16T13:21:24Z'
- id: 99549d1d-59f0-472a-9e6a-68f529bbe57c
type: funds
attributes:
name: Apparel & Fashion
createdAt: '2026-07-16T13:21:24Z'
updatedAt: '2026-07-16T13:21:24Z'
meta:
total_count: 4
item_count: 5000
page_count: 1
current_page: 1
prev_page: null
next_page: null
last_page: 1
from_record: 1
to_record: 4
links:
self: /api/v1/core/accounts/2cccce28-516c-4677-a5b1-aabef3de1c7e/portfolios/76f06c43-8675-4c62-b18d-1b57f0eca633/funds
prev: null
next: null
schema:
$ref: '#/components/schemas/json_api'
'400':
description: Bad Request
content:
application/vnd.api+json:
example:
errors:
- status: '400'
title: Internal Server Error
detail: Bad Request
schema:
$ref: '#/components/schemas/json_api'
'500':
description: An internal error has occurred
content:
application/vnd.api+json:
example:
errors:
- status: '500'
title: Internal Server Error
detail: An error occurred with the request
schema:
$ref: '#/components/schemas/json_api'
'401':
description: Unauthorized Request
content:
application/vnd.api+json:
example:
errors:
- status: '401'
title: Unauthorized
detail: Unauthorized AppType or Product required for this request
schema:
$ref: '#/components/schemas/json_api'
'429':
description: Too Many Requests
content:
application/vnd.api+json:
example:
errors:
- status: '429'
title: Too Many Requests
detail: Rate Limit Exceeded
schema:
$ref: '#/components/schemas/json_api'
'502':
description: Bad Gateway
content:
application/vnd.api+json:
example:
errors:
- status: '502'
title: Bad Gateway
detail: A Measurabl Server is down, please try again later
schema:
$ref: '#/components/schemas/json_api'
'408':
description: Request timeout
content:
application/vnd.api+json:
example:
errors:
- status: '408'
title: Request Timeout
detail: The request you made has timed out
schema:
$ref: '#/components/schemas/json_api'
'404':
description: Account not found
content:
application/vnd.api+json:
example:
errors:
- status: '404'
title: Account not found
detail: The specified account does not exist
schema:
$ref: '#/components/schemas/json_api'
'403':
description: unauthorized request
content:
application/vnd.api+json:
example:
errors:
- status: '403'
title: Forbidden
detail: 'A valid auth token is required.
POST to ''/token'' with a valid ''key'' and ''secret'' to get an auth token.
'
schema:
$ref: '#/components/schemas/json_api'
/core/v0/portfolios/{portfolio_id}/funds/{fund_id}:
delete:
summary: Deletes a specific fund in a specified portfolio
tags:
- Funds
security:
- OAuth2: []
parameters:
- name: portfolio_id
in: path
description: 'Example: 47fb960c-9087-433f-9720-08af1e9991a1'
required: true
schema:
type: string
- name: fund_id
in: path
description: 'Example: d2daf7f6-936f-4900-9dac-dbeba3e065f4'
required: true
schema:
type: string
responses:
'204':
description: Deletes a specific fund for a portfolio
content:
application/vnd.api+json:
example: ''
'400':
description: Bad Request
content:
application/vnd.api+json:
example:
errors:
- status: '400'
title: Bad Request
detail: An invalid UUID parameter was submitted with the request (portfolio_id)
schema:
$ref: '#/components/schemas/json_api'
'500':
description: An internal error has occurred
content:
application/vnd.api+json:
example:
errors:
- status: '500'
title: Internal Server Error
detail: An error occurred with the request
schema:
$ref: '#/components/schemas/json_api'
'401':
description: Unauthorized Request
content:
application/vnd.api+json:
example:
errors:
- status: '401'
title: Unauthorized
detail: Unauthorized AppType or Product required for this request
schema:
$ref: '#/components/schemas/json_api'
'429':
description: Too Many Requests
content:
application/vnd.api+json:
example:
errors:
- status: '429'
title: Too Many Requests
detail: Rate Limit Exceeded
schema:
$ref: '#/components/schemas/json_api'
'502':
description: Bad Gateway
content:
application/vnd.api+json:
example:
errors:
- status: '502'
title: Bad Gateway
detail: A Measurabl Server is down, please try again later
schema:
$ref: '#/components/schemas/json_api'
'408':
description: Request timeout
content:
application/vnd.api+json:
example:
errors:
- status: '408'
title: Request Timeout
detail: The request you made has timed out
schema:
$ref: '#/components/schemas/json_api'
'404':
description: Account not found
content:
application/vnd.api+json:
example:
errors:
- status: '404'
title: Account not found
detail: The specified account does not exist
schema:
$ref: '#/components/schemas/json_api'
'403':
description: unauthorized request
content:
application/vnd.api+json:
example:
errors:
- status: '403'
title: Forbidden
detail: 'A valid auth token is required.
POST to ''/token'' with a valid ''key'' and ''secret'' to get an auth token.
'
schema:
$ref: '#/components/schemas/json_api'
get:
summary: Returns details of a specific fund in a specified portfolio
tags:
- Funds
security:
- OAuth2: []
parameters:
- name: portfolio_id
in: path
description: 'Example: 8852637c-4cc2-4e00-ad68-040cd35cc9a9'
required: true
schema:
type: string
- name: fund_id
in: path
description: 'Example: 184b780b-65d8-458a-84f1-eac6808c6e58'
required: true
schema:
type: string
responses:
'200':
description: Returns a specific fund for a portfolio
content:
application/vnd.api+json:
example:
data:
id: d52b600c-5a3d-4c31-9f1a-03b913e6fcc3
type: funds
attributes:
name: Business Supplies and Equipment
createdAt: '2026-07-16T13:21:25Z'
updatedAt: '2026-07-16T13:21:25Z'
schema:
$ref: '#/components/schemas/json_api'
'400':
description: Bad Request
content:
application/vnd.api+json:
example:
errors:
- status: '400'
title: Bad Request
detail: An invalid UUID parameter was submitted with the request (portfolio_id)
schema:
$ref: '#/components/schemas/json_api'
'500':
description: An internal error has occurred
content:
application/vnd.api+json:
example:
errors:
- status: '500'
title: Internal Server Error
detail: An error occurred with the request
schema:
$ref: '#/components/schemas/json_api'
'401':
description: Unauthorized Request
content:
application/vnd.api+json:
example:
errors:
- status: '401'
title: Unauthorized
detail: Unauthorized AppType or Product required for this request
schema:
$ref: '#/components/schemas/json_api'
'429':
description: Too Many Requests
content:
application/vnd.api+json:
example:
errors:
- status: '429'
title: Too Many Requests
detail: Rate Limit Exceeded
schema:
$ref: '#/components/schemas/json_api'
'502':
description: Bad Gateway
content:
application/vnd.api+json:
example:
errors:
- status: '502'
title: Bad Gateway
detail: A Measurabl Server is down, please try again later
schema:
$ref: '#/components/schemas/json_api'
'408':
description: Request timeout
content:
application/vnd.api+json:
example:
errors:
- status: '408'
title: Request Timeout
detail: The request you made has timed out
schema:
$ref: '#/components/schemas/json_api'
'404':
description: Account not found
content:
application/vnd.api+json:
example:
errors:
- status: '404'
title: Account not found
detail: The specified account does not exist
schema:
$ref: '#/components/schemas/json_api'
'403':
description: unauthorized request
content:
application/vnd.api+json:
example:
errors:
- status: '403'
title: Forbidden
detail: 'A valid auth token is required.
POST to ''/token'' with a valid ''key'' and ''secret'' to get an auth token.
'
schema:
$ref: '#/components/schemas/json_api'
/core/v0/portfolios/{portfolio_id}/buildings/{building_id}/meters:
post:
summary: Creates an energy or water meter for a specified building
tags:
- Energy and Water Meters
security:
- OAuth2: []
parameters:
- name: portfolio_id
in: path
description: 'Example: f0c9271f-ca15-48b2-b489-3bbef3905da6'
required: true
schema:
type: string
- name: building_id
in: path
description: 'Example: 52839c1a-5b3c-49f5-93b7-768d06e7b371'
required: true
schema:
type: string
responses:
'200':
description: Portfolio/Building specific meter
content:
application/vnd.api+json:
example:
data:
id: 787c6b27-e893-44e1-a6dd-799a908bdd1a
type: meters
attributes:
estarMeterId: null
meterType: Electric
units: kWh (thousand Watt-hours)
name: New Meter
mode: TENANT_PAID_BY_TENANT
servesExteriorAreas: false
renewableOffsite: false
trackingInstrument: Non-grid-connected low-carbon heat, steam, or cooling generation owned by company
activationDate: '2025-10-25'
deactivationDate: '2026-10-25'
autoActivationDate: false
currency: USD
intermittent: false
updatedAt: '2025-08-11 00:00:00'
relationships:
building:
data:
id: c8d5fd75-e760-4802-bf56-4ff861b2b954
type: buildings
links:
self: /portfolios/7db8efe8-dd9a-474c-8687-cc187b81fdf3/buildings/c8d5fd75-e760-4802-bf56-4ff861b2b954
links:
self: /portfolios/7db8efe8-dd9a-474c-8687-cc187b81fdf3/buildings/c8d5fd75-e760-4802-bf56-4ff861b2b954/meters/7f9af74c-17a5-4949-8ec8-ef9beffc06ea
schema:
$ref: '#/components/schemas/json_api'
'404':
description: Not Found
content:
application/vnd.api+json:
example:
errors:
- status: '404'
title: Not Found
detail: Could not find building 304130c0-06a7-47fb-8238-11f1403e73a6 in portfolio 2c15cd85-c6da-4c3f-be79-421346b4df13
schema:
$ref: '#/components/schemas/json_api'
'401':
description: Unauthorized Request
content:
application/vnd.api+json:
example:
errors:
- status: '401'
title: Unauthorized
detail: Unauthorized Request
schema:
$ref: '#/components/schemas/json_api'
'400':
description: Bad Request
content:
application/vnd.api+json:
example:
errors:
- status: '400'
title: Bad Request
detail: An invalid UUID parameter was submitted with the request (portfolio_id)
schema:
$ref: '#/components/schemas/json_api'
'502':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '502'
title: Bad Gateway
detail: A Measurabl Server is down, please try again later
schema:
$ref: '#/components/schemas/json_api'
'500':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '500'
title: Internal Server Error
detail: An error occurred with the request
schema:
$ref: '#/components/schemas/json_api'
'503':
description: Service Unavailable
content:
application/vnd.api+json:
example:
errors:
- status: '503'
title: Service Unavailable
detail: A Measurabl Server is currently unavailable, please try again later
schema:
$ref: '#/components/schemas/json_api'
'408':
description: Request Timeout
content:
application/vnd.api+json:
example:
errors:
- status: '408'
title: Request Timeout
detail: The request you made has timed out
schema:
$ref: '#/components/schemas/json_api'
'429':
description: Too many requests
content:
application/vnd.api+json:
example:
errors:
- status: '429'
title: Too Many Requests
detail: Rate Limit Exceeded
schema:
$ref: '#/components/schemas/json_api'
'403':
description: unauthorized request
content:
application/vnd.api+json:
example:
errors:
- status: '403'
title: Forbidden
detail: 'A valid auth token is required.
POST to ''/token'' with a valid ''key'' and ''secret'' to get an auth token.
'
schema:
$ref: '#/components/schemas/json_api'
requestBody:
content:
application/vnd.api+json:
schema:
type: object
properties:
data:
type: object
properties:
attributes:
type: object
properties:
meterType:
type: string
units:
type: string
name:
type: string
mode:
type: string
servesExteriorAreas:
type: boolean
renewableOffsite:
type: boolean
trackingInstrument:
type: string
activationDate:
type: string
deactivationDate:
type: string
autoActivationDate:
type: boolean
currency:
type: string
intermittent:
type: boolean
required:
- meterType
- units
- name
- mode
- renewableOffsite
- currency
example:
data:
type: meters
attributes:
meterType: Electric
units: kWh (thousand Watt-hours)
name: New Meter
mode: TENANT_PAID_BY_TENANT
servesExteriorAreas: true
renewableOffsite: true
trackingInstrument: Non-grid-connected low-carbon heat, steam, or cooling generation owned by company
activationDate: '2022-01-01'
deactivationDate: null
autoActivationDate: true
currency: USD
intermittent: false
required: true
description: Request body used to create a meter associated with a building
get:
summary: Returns a list of meters (energy or water) for a specified building
tags:
- Energy and Water Meters
security:
- OAuth2: []
parameters:
- name: portfolio_id
in: path
description: "UUID of either the parent portfolio or fund
\n Example: 03165e30-0e76-42d5-b47e-a302b488dbdf"
required: true
schema:
type: string
- name: building_id
in: path
description: 'Example: 22a90c0c-df32-4591-9d35-0b50bf45a481'
required: true
schema:
type: string
- name: filter
in: query
description: "Filter by any attribute available via the endpoint.
\n \n \
\ - updatedAt=ge=2022-10-14T00:00 will query for Energy & Water Meters that were updated\
\ at or after the set date and UTC time.
\n - servesExteriorAreas==true will\
\ query for only those meters that serve exterior areas.
\n
"
schema:
type: string
- name: page
in: query
default: 1
schema:
type: integer
- name: size
in: query
description: The max page size is limited to 200 returned results
default: 25
schema:
type: integer
responses:
'200':
description: Portfolio or Fund / Building specific meter
content:
application/vnd.api+json:
example:
data:
- id: f2bccde2-3363-447f-a74d-3101220fabc9
type: meters
attributes:
estarMeterId: 93760805
meterType: Electric
units: kBtu (thousand Btu)
name: Electric Grid Meter2
mode: TENANT_PAID_BY_LANDLORD
servesExteriorAreas: false
renewableOffsite: true
trackingInstrument: null
activationDate: '2024-09-29'
deactivationDate: null
autoActivationDate: false
currency: USD
intermittent: false
updatedAt: '2026-06-11 00:00:00'
relationships:
building:
data:
id: a29db54c-1253-4f92-be82-cabb6e42bf0b
type: buildings
links:
self: /portfolios/c8d5f56e-8ca9-4346-bc9c-8c36c2bcbbd7/buildings/a29db54c-1253-4f92-be82-cabb6e42bf0b
links:
self: /portfolios/c8d5f56e-8ca9-4346-bc9c-8c36c2bcbbd7/buildings/a29db54c-1253-4f92-be82-cabb6e42bf0b/meters/f2bccde2-3363-447f-a74d-3101220fabc9
- id: e684f24b-6485-4114-8aa4-649667ab0001
type: meters
attributes:
estarMeterId: 17576231
meterType: Electric on Site Wind
units: kWh (thousand Watt-hours)
name: wind1
mode: TENANT_PAID_BY_LANDLORD
servesExteriorAreas: true
renewableOffsite: false
trackingInstrument: Grid-connected low-carbon electricity generation owned by company; no instruments
created
activationDate: '2025-04-28'
deactivationDate: null
autoActivationDate: true
currency: USD
intermittent: true
updatedAt: '2026-03-17 00:00:00'
relationships:
building:
data:
id: a29db54c-1253-4f92-be82-cabb6e42bf0b
type: buildings
links:
self: /portfolios/c8d5f56e-8ca9-4346-bc9c-8c36c2bcbbd7/buildings/a29db54c-1253-4f92-be82-cabb6e42bf0b
links:
self: /portfolios/c8d5f56e-8ca9-4346-bc9c-8c36c2bcbbd7/buildings/a29db54c-1253-4f92-be82-cabb6e42bf0b/meters/e684f24b-6485-4114-8aa4-649667ab0001
- id: cc0ffdc1-5653-43d0-8773-ab56e5419f31
type: meters
attributes:
estarMeterId: 72112820
meterType: District Chilled Water - Absorption Chiller using Natural Gas
units: GJ
name: valid3
mode: TENANT_PAID_BY_LANDLORD
servesExteriorAreas: false
renewableOffsite: false
trackingInstrument: null
activationDate: '2023-12-13'
deactivationDate: null
autoActivationDate: true
currency: USD
intermittent: false
updatedAt: '2026-07-10 00:00:00'
relationships:
building:
data:
id: a29db54c-1253-4f92-be82-cabb6e42bf0b
type: buildings
links:
self: /portfolios/c8d5f56e-8ca9-4346-bc9c-8c36c2bcbbd7/buildings/a29db54c-1253-4f92-be82-cabb6e42bf0b
links:
self: /portfolios/c8d5f56e-8ca9-4346-bc9c-8c36c2bcbbd7/buildings/a29db54c-1253-4f92-be82-cabb6e42bf0b/meters/cc0ffdc1-5653-43d0-8773-ab56e5419f31
- id: b32b22bf-9a6e-421b-97e0-eb2221f67904
type: meters
attributes:
estarMeterId: 87581006
meterType: Wood
units: GJ
name: Wood
mode: TENANT_PAID_BY_LANDLORD
servesExteriorAreas: true
renewableOffsite: true
trackingInstrument: null
activationDate: '2023-12-11'
deactivationDate: null
autoActivationDate: true
currency: USD
intermittent: true
updatedAt: '2026-06-20 00:00:00'
relationships:
building:
data:
id: a29db54c-1253-4f92-be82-cabb6e42bf0b
type: buildings
links:
self: /portfolios/c8d5f56e-8ca9-4346-bc9c-8c36c2bcbbd7/buildings/a29db54c-1253-4f92-be82-cabb6e42bf0b
links:
self: /portfolios/c8d5f56e-8ca9-4346-bc9c-8c36c2bcbbd7/buildings/a29db54c-1253-4f92-be82-cabb6e42bf0b/meters/b32b22bf-9a6e-421b-97e0-eb2221f67904
- id: de71b945-0772-4b89-94e7-a62d85e103cc
type: meters
attributes:
estarMeterId: 82873615
meterType: Wood
units: GJ
name: Wood2
mode: TENANT_PAID_BY_LANDLORD
servesExteriorAreas: true
renewableOffsite: false
trackingInstrument: null
activationDate: '2024-11-26'
deactivationDate: null
autoActivationDate: true
currency: USD
intermittent: true
updatedAt: '2026-06-19 00:00:00'
relationships:
building:
data:
id: a29db54c-1253-4f92-be82-cabb6e42bf0b
type: buildings
links:
self: /portfolios/c8d5f56e-8ca9-4346-bc9c-8c36c2bcbbd7/buildings/a29db54c-1253-4f92-be82-cabb6e42bf0b
links:
self: /portfolios/c8d5f56e-8ca9-4346-bc9c-8c36c2bcbbd7/buildings/a29db54c-1253-4f92-be82-cabb6e42bf0b/meters/de71b945-0772-4b89-94e7-a62d85e103cc
links:
self: /core/v0/portfolios/c8d5f56e-8ca9-4346-bc9c-8c36c2bcbbd7/buildings/a29db54c-1253-4f92-be82-cabb6e42bf0b/meters?size=5&page=3
first: /core/v0/portfolios/c8d5f56e-8ca9-4346-bc9c-8c36c2bcbbd7/buildings/a29db54c-1253-4f92-be82-cabb6e42bf0b/meters?size=5&page=1
last: /core/v0/portfolios/c8d5f56e-8ca9-4346-bc9c-8c36c2bcbbd7/buildings/a29db54c-1253-4f92-be82-cabb6e42bf0b/meters?size=5&page=8
next: /core/v0/portfolios/c8d5f56e-8ca9-4346-bc9c-8c36c2bcbbd7/buildings/a29db54c-1253-4f92-be82-cabb6e42bf0b/meters?size=5&page=4
prev: /core/v0/portfolios/c8d5f56e-8ca9-4346-bc9c-8c36c2bcbbd7/buildings/a29db54c-1253-4f92-be82-cabb6e42bf0b/meters?size=5&page=2
meta:
page:
number: 3
size: 100
totalPages: 8
totalElements: 730
schema:
$ref: '#/components/schemas/json_api'
'404':
description: Not Found
content:
application/vnd.api+json:
example:
errors:
- status: '404'
title: Not Found
detail: Could not find building d7b2f3e6-8a4e-418f-bec5-e0359e57c886 in portfolio bc3a3951-4c18-4102-aadb-8db890e10461
schema:
$ref: '#/components/schemas/json_api'
'401':
description: Unauthorized Request
content:
application/vnd.api+json:
example:
errors:
- status: '401'
title: Unauthorized
detail: Unauthorized Request
schema:
$ref: '#/components/schemas/json_api'
'400':
description: Bad Request
content:
application/vnd.api+json:
example:
errors:
- status: '400'
title: Bad Request
detail: An invalid UUID parameter was submitted with the request (portfolio_id)
schema:
$ref: '#/components/schemas/json_api'
'502':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '502'
title: Bad Gateway
detail: A Measurabl Server is down, please try again later
schema:
$ref: '#/components/schemas/json_api'
'500':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '500'
title: Internal Server Error
detail: An error occurred with the request
schema:
$ref: '#/components/schemas/json_api'
'503':
description: Service Unavailable
content:
application/vnd.api+json:
example:
errors:
- status: '503'
title: Service Unavailable
detail: A Measurabl Server is currently unavailable, please try again later
schema:
$ref: '#/components/schemas/json_api'
'408':
description: Request Timeout
content:
application/vnd.api+json:
example:
errors:
- status: '408'
title: Request Timeout
detail: The request you made has timed out
schema:
$ref: '#/components/schemas/json_api'
'429':
description: Too many requests
content:
application/vnd.api+json:
example:
errors:
- status: '429'
title: Too Many Requests
detail: Rate Limit Exceeded
schema:
$ref: '#/components/schemas/json_api'
'403':
description: unauthorized request
content:
application/vnd.api+json:
example:
errors:
- status: '403'
title: Forbidden
detail: 'A valid auth token is required.
POST to ''/token'' with a valid ''key'' and ''secret'' to get an auth token.
'
schema:
$ref: '#/components/schemas/json_api'
/core/v0/portfolios/{portfolio_id}/buildings/{building_id}/meters/{meter_id}:
delete:
summary: Deletes a specific meter for a specified building
tags:
- Energy and Water Meters
security:
- OAuth2: []
parameters:
- name: portfolio_id
in: path
description: 'Example: 30d9d10b-0641-49e6-a32a-6a9b015a5439'
required: true
schema:
type: string
- name: building_id
in: path
description: 'Example: c0ceaaed-e398-467a-824f-0d495711f823'
required: true
schema:
type: string
- name: meter_id
in: path
description: 'Example: 60f03d17-f43e-4ca0-9637-c1edd074fd30'
required: true
schema:
type: string
responses:
'204':
description: Meter Deleted Successfully
content:
application/vnd.api+json:
example: ''
'400':
description: Bad Request
content:
application/vnd.api+json:
example:
errors:
- status: '400'
title: Bad Request
detail: An invalid UUID parameter was submitted with the request (portfolio_id)
schema:
$ref: '#/components/schemas/json_api'
'404':
description: Not Found
content:
application/vnd.api+json:
example:
errors:
- status: '404'
title: Not Found
detail: Could not find meter 970b0094-3041-49b7-9cde-deeb95c4ee2e in building 9247a193-def1-4c7c-8ebc-328764d40bc7
in portfolio 88820fb6-74a9-48bf-9de7-a35c8cf5785e
schema:
$ref: '#/components/schemas/json_api'
'401':
description: Unauthorized Request
content:
application/vnd.api+json:
example:
errors:
- status: '401'
title: Unauthorized
detail: Unauthorized Request
schema:
$ref: '#/components/schemas/json_api'
'502':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '502'
title: Bad Gateway
detail: A Measurabl Server is down, please try again later
schema:
$ref: '#/components/schemas/json_api'
'500':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '500'
title: Internal Server Error
detail: An error occurred with the request
schema:
$ref: '#/components/schemas/json_api'
'503':
description: Service Unavailable
content:
application/vnd.api+json:
example:
errors:
- status: '503'
title: Service Unavailable
detail: A Measurabl Server is currently unavailable, please try again later
schema:
$ref: '#/components/schemas/json_api'
'408':
description: Request Timeout
content:
application/vnd.api+json:
example:
errors:
- status: '408'
title: Request Timeout
detail: The request you made has timed out
schema:
$ref: '#/components/schemas/json_api'
'429':
description: Too many requests
content:
application/vnd.api+json:
example:
errors:
- status: '429'
title: Too Many Requests
detail: Rate Limit Exceeded
schema:
$ref: '#/components/schemas/json_api'
'403':
description: unauthorized request
content:
application/vnd.api+json:
example:
errors:
- status: '403'
title: Forbidden
detail: 'A valid auth token is required.
POST to ''/token'' with a valid ''key'' and ''secret'' to get an auth token.
'
schema:
$ref: '#/components/schemas/json_api'
get:
summary: Returns details of a specific meter (energy or water) for a specified building
tags:
- Energy and Water Meters
security:
- OAuth2: []
parameters:
- name: portfolio_id
in: path
description: "UUID of either the parent portfolio or fund
\n Example: 5df7c5b7-18d2-425c-ad66-6542d59654a6"
required: true
schema:
type: string
- name: building_id
in: path
description: 'Example: 2db61e3e-8061-469e-a4b2-4ca15caa392f'
required: true
schema:
type: string
- name: meter_id
in: path
description: 'Example: 545a9dcb-acf7-4c99-b7d2-4245c995cccf'
required: true
schema:
type: string
responses:
'200':
description: Portfolio or Fund / Building specific meter
content:
application/vnd.api+json:
example:
data:
id: c2d7ff32-c515-4cc9-b896-9509af49ed79
type: meters
attributes:
estarMeterId: 16369838
meterType: Electric
units: kBtu (thousand Btu)
name: Electric Grid Meter2
mode: TENANT_PAID_BY_LANDLORD
servesExteriorAreas: false
renewableOffsite: false
trackingInstrument: null
activationDate: '2024-11-20'
deactivationDate: null
autoActivationDate: false
currency: USD
intermittent: true
updatedAt: '2026-05-11 00:00:00'
relationships:
building:
data:
id: f80b87d5-88f6-4145-98f6-67c0671cfed8
type: buildings
links:
self: /portfolios/165c45f7-b9fb-401e-b922-77d43767086c/buildings/f80b87d5-88f6-4145-98f6-67c0671cfed8
links:
self: /portfolios/165c45f7-b9fb-401e-b922-77d43767086c/buildings/f80b87d5-88f6-4145-98f6-67c0671cfed8/meters/c2d7ff32-c515-4cc9-b896-9509af49ed79
schema:
$ref: '#/components/schemas/json_api'
'404':
description: Not Found
content:
application/vnd.api+json:
example:
errors:
- status: '404'
title: Not Found
detail: Could not find meter fda52464-75b7-473d-9f87-c6b00e1ec8a2 in building 15e6430b-21e3-483b-aada-a705ef47003b
in portfolio 6ce65e81-3105-41cf-8c82-2ba5de8960b2
schema:
$ref: '#/components/schemas/json_api'
'401':
description: Unauthorized Request
content:
application/vnd.api+json:
example:
errors:
- status: '401'
title: Unauthorized
detail: Unauthorized Request
schema:
$ref: '#/components/schemas/json_api'
'400':
description: Bad Request
content:
application/vnd.api+json:
example:
errors:
- status: '400'
title: Bad Request
detail: An invalid UUID parameter was submitted with the request (portfolio_id)
schema:
$ref: '#/components/schemas/json_api'
'502':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '502'
title: Bad Gateway
detail: A Measurabl Server is down, please try again later
schema:
$ref: '#/components/schemas/json_api'
'500':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '500'
title: Internal Server Error
detail: An error occurred with the request
schema:
$ref: '#/components/schemas/json_api'
'503':
description: Service Unavailable
content:
application/vnd.api+json:
example:
errors:
- status: '503'
title: Service Unavailable
detail: A Measurabl Server is currently unavailable, please try again later
schema:
$ref: '#/components/schemas/json_api'
'408':
description: Request Timeout
content:
application/vnd.api+json:
example:
errors:
- status: '408'
title: Request Timeout
detail: The request you made has timed out
schema:
$ref: '#/components/schemas/json_api'
'429':
description: Too many requests
content:
application/vnd.api+json:
example:
errors:
- status: '429'
title: Too Many Requests
detail: Rate Limit Exceeded
schema:
$ref: '#/components/schemas/json_api'
'403':
description: unauthorized request
content:
application/vnd.api+json:
example:
errors:
- status: '403'
title: Forbidden
detail: 'A valid auth token is required.
POST to ''/token'' with a valid ''key'' and ''secret'' to get an auth token.
'
schema:
$ref: '#/components/schemas/json_api'
patch:
summary: Updates a specific meter for a specified building
tags:
- Energy and Water Meters
security:
- OAuth2: []
parameters:
- name: portfolio_id
in: path
description: "UUID for the parent portfolio
\n Example: 7f3dea66-3051-41f5-91d0-b88e44d2cb3a"
required: true
schema:
type: string
- name: building_id
in: path
description: 'Example: 7467f8e5-155c-4fbf-95ab-b79e06d6ece5'
required: true
schema:
type: string
- name: meter_id
in: path
description: 'Example: e095d364-96c0-4521-8086-a48db78d1f8e'
required: true
schema:
type: string
responses:
'200':
description: Portfolio / Building Specific Meter Updated
content:
application/vnd.api+json:
example:
data:
id: 570a687f-0199-4846-acbb-76b85d968169
type: meters
attributes:
estarMeterId: null
meterType: Electric
units: kBtu (thousand Btu)
name: Electric Grid Meter
mode: TENANT_PAID_BY_LANDLORD
servesExteriorAreas: true
renewableOffsite: false
trackingInstrument: null
activationDate: '2025-04-14'
deactivationDate: null
autoActivationDate: false
currency: USD
intermittent: false
updatedAt: '2025-09-18 00:00:00'
relationships:
building:
data:
id: 65f1ea23-cc33-4234-bc60-66747997349e
type: buildings
links:
self: /portfolios/3dc5fb4f-5c3a-4e72-9280-34c0ce055bc6/buildings/65f1ea23-cc33-4234-bc60-66747997349e
links:
self: portfolios/3dc5fb4f-5c3a-4e72-9280-34c0ce055bc6/buildings/65f1ea23-cc33-4234-bc60-66747997349e/meters/570a687f-0199-4846-acbb-76b85d968169
schema:
$ref: '#/components/schemas/json_api'
'404':
description: Not Found
content:
application/vnd.api+json:
example:
errors:
- status: '404'
title: Not Found
detail: Could not find meter 16cd41c1-b7c1-4790-a7e0-17555df674c7 for building 189d906e-ad65-4dd6-9479-a866ed177506
in portfolio 5c16648b-3d51-4307-9871-ef8f2edb51d6
schema:
$ref: '#/components/schemas/json_api'
'401':
description: Unauthorized Request
content:
application/vnd.api+json:
example:
errors:
- status: '401'
title: Unauthorized
detail: Unauthorized Request
schema:
$ref: '#/components/schemas/json_api'
'400':
description: Bad Request
content:
application/vnd.api+json:
example:
errors:
- status: '400'
title: Bad Request
detail: An invalid UUID parameter was submitted with the request (portfolio_id)
schema:
$ref: '#/components/schemas/json_api'
'502':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '502'
title: Bad Gateway
detail: A Measurabl Server is down, please try again later
schema:
$ref: '#/components/schemas/json_api'
'500':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '500'
title: Internal Server Error
detail: An error occurred with the request
schema:
$ref: '#/components/schemas/json_api'
'503':
description: Service Unavailable
content:
application/vnd.api+json:
example:
errors:
- status: '503'
title: Service Unavailable
detail: A Measurabl Server is currently unavailable, please try again later
schema:
$ref: '#/components/schemas/json_api'
'408':
description: Request Timeout
content:
application/vnd.api+json:
example:
errors:
- status: '408'
title: Request Timeout
detail: The request you made has timed out
schema:
$ref: '#/components/schemas/json_api'
'429':
description: Too many requests
content:
application/vnd.api+json:
example:
errors:
- status: '429'
title: Too Many Requests
detail: Rate Limit Exceeded
schema:
$ref: '#/components/schemas/json_api'
'403':
description: unauthorized request
content:
application/vnd.api+json:
example:
errors:
- status: '403'
title: Forbidden
detail: 'A valid auth token is required.
POST to ''/token'' with a valid ''key'' and ''secret'' to get an auth token.
'
schema:
$ref: '#/components/schemas/json_api'
requestBody:
content:
application/vnd.api+json:
schema:
type: object
properties:
data:
type: object
properties:
id:
type: string
type:
type: string
attributes:
type: object
properties:
units:
type: string
name:
type: string
mode:
type: string
servesExteriorAreas:
type: boolean
renewableOffsite:
type: boolean
trackingInstrument:
type: string
activationDate:
type: string
deactivationDate:
type: string
autoActivationDate:
type: boolean
intermittent:
type: boolean
required:
- id
- type
example:
data:
id: 37a1139b-c907-4e31-b280-786e5fcf062d
type: meters
attributes:
units: kWh (thousand Watt-hours)
name: Updated Meter
mode: TENANT_PAID_BY_TENANT
servesExteriorAreas: true
renewableOffsite: true
trackingInstrument: Non-grid-connected low-carbon heat, steam, or cooling generation owned by company
activationDate: '2025-05-11'
deactivationDate: '2025-12-25'
autoActivationDate: false
intermittent: true
required: true
description: Request body used to update a specific meter
/core/v0/portfolios/{portfolio_id}/buildings/{building_id}/meters/{meter_id}/readings/{meter_reading_id}/bill:
get:
summary: Retrieves a utility bill for the given reading if one exists
tags:
- Energy and Water Meter Bills
security:
- OAuth2: []
parameters:
- name: portfolio_id
in: path
description: "UUID for the parent portfolio
\n Example: f9f3fc20-37f4-4fbc-9388-ed3f18fd10d5"
required: true
schema:
type: string
- name: building_id
in: path
description: 'Example: 05a9147c-5e0b-4967-9db0-eff8327cc0a6'
required: true
schema:
type: string
- name: meter_id
in: path
description: 'Example: 0c5f57e8-86cb-47e5-a175-581c664fba89'
required: true
schema:
type: string
- name: meter_reading_id
in: path
description: 'Example: 0014a1a8-5f3f-4066-a887-b574b65c1848'
required: true
schema:
type: string
responses:
'303':
description: Redirect to where the bill for meter reading is found
headers:
Location:
type: string
description: The redirect URL location of the requested bill `http://example.com/meter/reading/bill.pdf`
content:
text/html:
example: ''
'404':
description: Not Found
content:
application/vnd.api+json:
example:
errors:
- status: '404'
title: Not Found
detail: Could not find 4f6222d5-56a0-4b93-a434-cbc0194119a5 in meter 8b986424-de1f-447d-b034-1a7e57d9691f
in building 583ad944-ef88-4510-b2de-41544cebd519 in portfolio 123038cc-dda7-4e3d-a2fb-f074d2aaa74e
schema:
$ref: '#/components/schemas/json_api'
'401':
description: Unauthorized Request
content:
application/vnd.api+json:
example:
errors:
- status: '401'
title: Unauthorized
detail: Unauthorized Request
schema:
$ref: '#/components/schemas/json_api'
'400':
description: Bad Request
content:
application/vnd.api+json:
example:
errors:
- status: '400'
title: Bad Request
detail: An invalid UUID parameter was submitted with the request (portfolio_id)
schema:
$ref: '#/components/schemas/json_api'
'502':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '502'
title: Bad Gateway
detail: A Measurabl Server is down, please try again later
schema:
$ref: '#/components/schemas/json_api'
'500':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '500'
title: Internal Server Error
detail: An error occurred with the request
schema:
$ref: '#/components/schemas/json_api'
'503':
description: Service Unavailable
content:
application/vnd.api+json:
example:
errors:
- status: '503'
title: Service Unavailable
detail: A Measurabl Server is currently unavailable, please try again later
schema:
$ref: '#/components/schemas/json_api'
'408':
description: Request Timeout
content:
application/vnd.api+json:
example:
errors:
- status: '408'
title: Request Timeout
detail: The request you made has timed out
schema:
$ref: '#/components/schemas/json_api'
'429':
description: Too many requests
content:
application/vnd.api+json:
example:
errors:
- status: '429'
title: Too Many Requests
detail: Rate Limit Exceeded
schema:
$ref: '#/components/schemas/json_api'
'403':
description: unauthorized request
content:
application/vnd.api+json:
example:
errors:
- status: '403'
title: Forbidden
detail: 'A valid auth token is required.
POST to ''/token'' with a valid ''key'' and ''secret'' to get an auth token.
'
schema:
$ref: '#/components/schemas/json_api'
/core/v0/portfolios/{portfolio_id}/buildings/{building_id}/meters/{meter_id}/readings:
post:
summary: Creates an energy or water meter reading for a specified building
tags:
- Energy and Water Meter Readings
security:
- OAuth2: []
parameters:
- name: portfolio_id
in: path
description: "UUID for the parent portfolio
\n Example: f314a538-5e32-49d5-9d7b-dbd6ece4159d"
required: true
schema:
type: string
- name: building_id
in: path
description: 'Example: 224f747d-712c-4d27-b55d-05ecad7fd14c'
required: true
schema:
type: string
- name: meter_id
in: path
description: 'Example: 3828dcef-0784-41cb-baf3-b5e6bd676e01'
required: true
schema:
type: string
responses:
'200':
description: Portfolio or Fund / Building specific meter readings list
content:
application/vnd.api+json:
example:
data:
id: 4cf325db-5f9e-4686-b45a-24674f410778
type: meterReadings
attributes:
estarMeterReadingId: null
fromDate: '2027-02-17'
toDate: '2027-03-17'
cost: 1656
usage: 692
exported: 0
demand: null
demandCharge: null
estimate: false
updatedAt: '2026-05-25 14:14:55'
relationships:
meter:
data:
id: 7ec4f244-bcac-42e8-b867-a73fcf7a44ea
type: meters
links:
self: /portfolios/b5d2beb6-c011-4f0b-8a46-e13ec484d8ea/buildings/9b68d162-b605-4327-a3df-d3ecc89513e1/meters/7ec4f244-bcac-42e8-b867-a73fcf7a44ea
links:
self: /portfolios/b5d2beb6-c011-4f0b-8a46-e13ec484d8ea/buildings/9b68d162-b605-4327-a3df-d3ecc89513e1/meters/7ec4f244-bcac-42e8-b867-a73fcf7a44ea/readings/4cf325db-5f9e-4686-b45a-24674f410778
schema:
$ref: '#/components/schemas/json_api'
'404':
description: Not Found
content:
application/vnd.api+json:
example:
errors:
- status: '404'
title: Not Found
detail: Could not find meter 15d3f8b7-56cb-4f18-ad46-26bc8aa8e2a1 in building 77220924-2de9-4193-84a8-542ca3e6f414
in portfolio 33c85134-16a2-4e79-94de-0ea400bbea44
schema:
$ref: '#/components/schemas/json_api'
'401':
description: Unauthorized Request
content:
application/vnd.api+json:
example:
errors:
- status: '401'
title: Unauthorized
detail: Unauthorized Request
schema:
$ref: '#/components/schemas/json_api'
'400':
description: Bad Request
content:
application/vnd.api+json:
example:
errors:
- status: '400'
title: Bad Request
detail: An invalid UUID parameter was submitted with the request (portfolio_id)
schema:
$ref: '#/components/schemas/json_api'
'502':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '502'
title: Bad Gateway
detail: A Measurabl Server is down, please try again later
schema:
$ref: '#/components/schemas/json_api'
'500':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '500'
title: Internal Server Error
detail: An error occurred with the request
schema:
$ref: '#/components/schemas/json_api'
'503':
description: Service Unavailable
content:
application/vnd.api+json:
example:
errors:
- status: '503'
title: Service Unavailable
detail: A Measurabl Server is currently unavailable, please try again later
schema:
$ref: '#/components/schemas/json_api'
'408':
description: Request Timeout
content:
application/vnd.api+json:
example:
errors:
- status: '408'
title: Request Timeout
detail: The request you made has timed out
schema:
$ref: '#/components/schemas/json_api'
'429':
description: Too many requests
content:
application/vnd.api+json:
example:
errors:
- status: '429'
title: Too Many Requests
detail: Rate Limit Exceeded
schema:
$ref: '#/components/schemas/json_api'
'403':
description: unauthorized request
content:
application/vnd.api+json:
example:
errors:
- status: '403'
title: Forbidden
detail: 'A valid auth token is required.
POST to ''/token'' with a valid ''key'' and ''secret'' to get an auth token.
'
schema:
$ref: '#/components/schemas/json_api'
requestBody:
content:
application/vnd.api+json:
schema:
type: object
properties:
data:
type: object
properties:
attributes:
type: object
properties:
fromDate:
type: string
toDate:
type: string
cost:
type: decimal
usage:
type: decimal
exported:
type: decimal
demand:
type: boolean
demandCharge:
type: string
required:
- fromDate
- toDate
- cost
- usage
example:
data:
type: meterReadings
attributes:
fromDate: '2022-01-01'
toDate: '2022-02-01'
cost: 1200.0
usage: 1234.0
exported: 0.0
demand: null
demandCharge: null
required: true
description: Request body used to create a meter reading associated with a meter
get:
summary: Returns a list of meter readings for a specified meter and building
tags:
- Energy and Water Meter Readings
security:
- OAuth2: []
parameters:
- name: portfolio_id
in: path
description: "UUID of either the parent portfolio or fund
\n Example: 0343323b-6de0-4cab-a39b-65fd7c614835"
required: true
schema:
type: string
- name: building_id
in: path
description: 'Example: 3d51e4b6-8888-4bc9-9ac6-5ce414dd7ddf'
required: true
schema:
type: string
- name: meter_id
in: path
description: 'Example: 73c8d8d0-7710-4b79-bbd6-fad42a4f015e'
required: true
schema:
type: string
- name: filter
in: query
description: "Filter by any attribute available via the endpoint.
\n \n \
\ - updatedAt=ge=2022-10-14T00:00 will query for meter readings updated at or after the\
\ set date and time.
\n - cost=ge=50 will query for meter readings with the\
\ cost attribute value greater than or equal to 50.
\n
"
schema:
type: string
- name: page
in: query
default: 1
schema:
type: integer
- name: size
in: query
description: The max page size is limited to 200 returned results
default: 25
schema:
type: integer
responses:
'200':
description: Portfolio or Fund / Building specific meter readings list
content:
application/vnd.api+json:
example:
data:
- id: c85e1829-f655-46d6-a3fd-4b97cbf39fd3
type: meterReadings
attributes:
estarMeterReadingId: null
fromDate: '2018-01-01'
toDate: '2018-02-01'
cost: 90
usage: 412
exported: 0
demand: 6
demandCharge: 9
estimate: true
updatedAt: '2025-10-13 04:27:52'
relationships:
meter:
data:
id: 6c1fd9ee-3ff6-4940-9f01-c8f816847579
type: meters
links:
self: /portfolios/2125c6a3-cda6-41ce-ad7f-2830ff185efb/buildings/5cc9a85b-87a5-487e-99cf-29261e317966/meters/6c1fd9ee-3ff6-4940-9f01-c8f816847579
links:
self: /portfolios/2125c6a3-cda6-41ce-ad7f-2830ff185efb/buildings/5cc9a85b-87a5-487e-99cf-29261e317966/meters/6c1fd9ee-3ff6-4940-9f01-c8f816847579/readings/c85e1829-f655-46d6-a3fd-4b97cbf39fd3
- id: 14645db3-6f10-4cea-905e-63fe1f0f985c
type: meterReadings
attributes:
estarMeterReadingId: null
fromDate: '2018-02-01'
toDate: '2018-03-01'
cost: 39
usage: 843
exported: 0
demand: 37
demandCharge: 15
estimate: false
updatedAt: '2026-06-22 07:11:01'
relationships:
meter:
data:
id: 6c1fd9ee-3ff6-4940-9f01-c8f816847579
type: meters
links:
self: /portfolios/2125c6a3-cda6-41ce-ad7f-2830ff185efb/buildings/5cc9a85b-87a5-487e-99cf-29261e317966/meters/6c1fd9ee-3ff6-4940-9f01-c8f816847579
links:
self: /portfolios/2125c6a3-cda6-41ce-ad7f-2830ff185efb/buildings/5cc9a85b-87a5-487e-99cf-29261e317966/meters/6c1fd9ee-3ff6-4940-9f01-c8f816847579/readings/14645db3-6f10-4cea-905e-63fe1f0f985c
- id: 704acb14-11fb-4b86-9276-93746b63cd18
type: meterReadings
attributes:
estarMeterReadingId: null
fromDate: '2018-04-01'
toDate: '2018-05-01'
cost: 61
usage: 405
exported: 0
demand: 182
demandCharge: 10
estimate: true
updatedAt: '2026-03-27 18:39:05'
relationships:
meter:
data:
id: 6c1fd9ee-3ff6-4940-9f01-c8f816847579
type: meters
links:
self: /portfolios/2125c6a3-cda6-41ce-ad7f-2830ff185efb/buildings/5cc9a85b-87a5-487e-99cf-29261e317966/meters/6c1fd9ee-3ff6-4940-9f01-c8f816847579
links:
self: /portfolios/2125c6a3-cda6-41ce-ad7f-2830ff185efb/buildings/5cc9a85b-87a5-487e-99cf-29261e317966/meters/6c1fd9ee-3ff6-4940-9f01-c8f816847579/readings/704acb14-11fb-4b86-9276-93746b63cd18
- id: 3bab3387-76f1-4eef-add0-abab5458ba09
type: meterReadings
attributes:
estarMeterReadingId: null
fromDate: '2018-01-01'
toDate: '2018-02-01'
cost: 76
usage: 715
exported: 0
demand: 44
demandCharge: 11
estimate: false
updatedAt: '2026-03-23 00:57:22'
relationships:
meter:
data:
id: 6c1fd9ee-3ff6-4940-9f01-c8f816847579
type: meters
links:
self: /portfolios/2125c6a3-cda6-41ce-ad7f-2830ff185efb/buildings/5cc9a85b-87a5-487e-99cf-29261e317966/meters/6c1fd9ee-3ff6-4940-9f01-c8f816847579
links:
self: /portfolios/2125c6a3-cda6-41ce-ad7f-2830ff185efb/buildings/5cc9a85b-87a5-487e-99cf-29261e317966/meters/6c1fd9ee-3ff6-4940-9f01-c8f816847579/readings/3bab3387-76f1-4eef-add0-abab5458ba09
- id: 0dade6f7-ec58-4bf6-8142-99ed581f1fee
type: meterReadings
attributes:
estarMeterReadingId: null
fromDate: '2018-02-01'
toDate: '2018-03-01'
cost: 38
usage: 168
exported: 0
demand: 56
demandCharge: 10
estimate: false
updatedAt: '2025-10-22 21:44:00'
relationships:
meter:
data:
id: 6c1fd9ee-3ff6-4940-9f01-c8f816847579
type: meters
links:
self: /portfolios/2125c6a3-cda6-41ce-ad7f-2830ff185efb/buildings/5cc9a85b-87a5-487e-99cf-29261e317966/meters/6c1fd9ee-3ff6-4940-9f01-c8f816847579
links:
self: /portfolios/2125c6a3-cda6-41ce-ad7f-2830ff185efb/buildings/5cc9a85b-87a5-487e-99cf-29261e317966/meters/6c1fd9ee-3ff6-4940-9f01-c8f816847579/readings/0dade6f7-ec58-4bf6-8142-99ed581f1fee
links:
self: /core/v0/portfolios/2125c6a3-cda6-41ce-ad7f-2830ff185efb/buildings/5cc9a85b-87a5-487e-99cf-29261e317966/meters/6c1fd9ee-3ff6-4940-9f01-c8f816847579/readings?size=5&page=3
first: /core/v0/portfolios/2125c6a3-cda6-41ce-ad7f-2830ff185efb/buildings/5cc9a85b-87a5-487e-99cf-29261e317966/meters/6c1fd9ee-3ff6-4940-9f01-c8f816847579/readings?size=5&page=1
last: /core/v0/portfolios/2125c6a3-cda6-41ce-ad7f-2830ff185efb/buildings/5cc9a85b-87a5-487e-99cf-29261e317966/meters/6c1fd9ee-3ff6-4940-9f01-c8f816847579/readings?size=5&page=5
next: /core/v0/portfolios/2125c6a3-cda6-41ce-ad7f-2830ff185efb/buildings/5cc9a85b-87a5-487e-99cf-29261e317966/meters/6c1fd9ee-3ff6-4940-9f01-c8f816847579/readings?size=5&page=4
prev: /core/v0/portfolios/2125c6a3-cda6-41ce-ad7f-2830ff185efb/buildings/5cc9a85b-87a5-487e-99cf-29261e317966/meters/6c1fd9ee-3ff6-4940-9f01-c8f816847579/readings?size=5&page=2
meta:
page:
number: 3
size: 100
totalPages: 5
totalElements: 420
schema:
$ref: '#/components/schemas/json_api'
'404':
description: Not Found
content:
application/vnd.api+json:
example:
errors:
- status: '404'
title: Not Found
detail: Could not find meter e5cb16bc-ac90-4412-a15b-befdb51f61e4 in building db9f53c0-6e04-4c98-890e-436963b20c7d
in portfolio 87771a54-a873-480d-97d8-e34efa63575f
schema:
$ref: '#/components/schemas/json_api'
'401':
description: Unauthorized Request
content:
application/vnd.api+json:
example:
errors:
- status: '401'
title: Unauthorized
detail: Unauthorized Request
schema:
$ref: '#/components/schemas/json_api'
'400':
description: Bad Request
content:
application/vnd.api+json:
example:
errors:
- status: '400'
title: Bad Request
detail: An invalid UUID parameter was submitted with the request (portfolio_id)
schema:
$ref: '#/components/schemas/json_api'
'502':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '502'
title: Bad Gateway
detail: A Measurabl Server is down, please try again later
schema:
$ref: '#/components/schemas/json_api'
'500':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '500'
title: Internal Server Error
detail: An error occurred with the request
schema:
$ref: '#/components/schemas/json_api'
'503':
description: Service Unavailable
content:
application/vnd.api+json:
example:
errors:
- status: '503'
title: Service Unavailable
detail: A Measurabl Server is currently unavailable, please try again later
schema:
$ref: '#/components/schemas/json_api'
'408':
description: Request Timeout
content:
application/vnd.api+json:
example:
errors:
- status: '408'
title: Request Timeout
detail: The request you made has timed out
schema:
$ref: '#/components/schemas/json_api'
'429':
description: Too many requests
content:
application/vnd.api+json:
example:
errors:
- status: '429'
title: Too Many Requests
detail: Rate Limit Exceeded
schema:
$ref: '#/components/schemas/json_api'
'403':
description: unauthorized request
content:
application/vnd.api+json:
example:
errors:
- status: '403'
title: Forbidden
detail: 'A valid auth token is required.
POST to ''/token'' with a valid ''key'' and ''secret'' to get an auth token.
'
schema:
$ref: '#/components/schemas/json_api'
/core/v0/portfolios/{portfolio_id}/buildings/{building_id}/meters/{meter_id}/readings/{meter_reading_id}:
delete:
summary: Deletes a specific meter reading for a specified meter and building
tags:
- Energy and Water Meter Readings
security:
- OAuth2: []
parameters:
- name: portfolio_id
in: path
description: 'Example: 89450297-c8e1-41e3-ba0e-864f6cdd9511'
required: true
schema:
type: string
- name: building_id
in: path
description: 'Example: ca996f17-6d4f-4bb1-8f6a-39558c38d61e'
required: true
schema:
type: string
- name: meter_id
in: path
description: 'Example: e8beecd1-7199-47ca-9e9c-3fc1ab4f9d4d'
required: true
schema:
type: string
- name: meter_reading_id
in: path
description: 'Example: 213ba4e0-430e-443d-b6de-4780b32c18bc'
required: true
schema:
type: string
responses:
'204':
description: Meter Reading Deleted Successfully
content:
application/vnd.api+json:
example: ''
'400':
description: Bad Request
content:
application/vnd.api+json:
example:
errors:
- status: '400'
title: Bad Request
detail: An invalid UUID parameter was submitted with the request (portfolio_id)
schema:
$ref: '#/components/schemas/json_api'
'404':
description: Not Found
content:
application/vnd.api+json:
example:
errors:
- status: '404'
title: Not Found
detail: Could not find reading 5e71ac70-766d-4e61-9ce4-f0a8fdec146c for meter 8bbebf97-ba90-4236-8261-cf56942a2ce3
in building 85f1d2fd-8879-4bde-b526-cfa3c818f6f2 in portfolio 57f05be2-1e46-4616-b09b-e36df963b0b6
schema:
$ref: '#/components/schemas/json_api'
'401':
description: Unauthorized Request
content:
application/vnd.api+json:
example:
errors:
- status: '401'
title: Unauthorized
detail: Unauthorized Request
schema:
$ref: '#/components/schemas/json_api'
'502':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '502'
title: Bad Gateway
detail: A Measurabl Server is down, please try again later
schema:
$ref: '#/components/schemas/json_api'
'500':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '500'
title: Internal Server Error
detail: An error occurred with the request
schema:
$ref: '#/components/schemas/json_api'
'503':
description: Service Unavailable
content:
application/vnd.api+json:
example:
errors:
- status: '503'
title: Service Unavailable
detail: A Measurabl Server is currently unavailable, please try again later
schema:
$ref: '#/components/schemas/json_api'
'408':
description: Request Timeout
content:
application/vnd.api+json:
example:
errors:
- status: '408'
title: Request Timeout
detail: The request you made has timed out
schema:
$ref: '#/components/schemas/json_api'
'429':
description: Too many requests
content:
application/vnd.api+json:
example:
errors:
- status: '429'
title: Too Many Requests
detail: Rate Limit Exceeded
schema:
$ref: '#/components/schemas/json_api'
'403':
description: unauthorized request
content:
application/vnd.api+json:
example:
errors:
- status: '403'
title: Forbidden
detail: 'A valid auth token is required.
POST to ''/token'' with a valid ''key'' and ''secret'' to get an auth token.
'
schema:
$ref: '#/components/schemas/json_api'
get:
summary: Returns details of a specific meter reading for a specified meter and building
tags:
- Energy and Water Meter Readings
security:
- OAuth2: []
parameters:
- name: portfolio_id
in: path
description: "UUID of either the parent portfolio or fund
\n Example: 38d9cb1b-dc70-47a1-9ff4-fd12ee79e13e"
required: true
schema:
type: string
- name: building_id
in: path
description: 'Example: 13ee4c8d-855d-4224-b788-2bf75474046c'
required: true
schema:
type: string
- name: meter_id
in: path
description: 'Example: 2d31add7-a309-4f77-9025-b841f24c3c34'
required: true
schema:
type: string
- name: meter_reading_id
in: path
description: 'Example: 17226f7b-007f-4daf-93cb-e58acc5cb201'
required: true
schema:
type: string
responses:
'200':
description: Portfolio or Fund / Building specific meter readings list
content:
application/vnd.api+json:
example:
data:
id: c86ce40f-e7ac-4a9d-a66a-573a598f5138
type: meterReadings
attributes:
estarMeterReadingId: null
fromDate: '2027-03-30'
toDate: '2027-04-30'
cost: 53
usage: 2
exported: 0
demand: 73
demandCharge: 16
estimate: true
updatedAt: '2026-03-25 19:11:20'
relationships:
meter:
data:
id: ae807cdc-0fc5-4963-9ffa-9845ec335f73
type: meters
links:
self: /portfolios/bf9fc23e-203d-44ae-b2ed-b0011f048aa0/buildings/068f273b-a567-4c82-8c52-f9b77816b7e7/meters/ae807cdc-0fc5-4963-9ffa-9845ec335f73
links:
self: portfolios/bf9fc23e-203d-44ae-b2ed-b0011f048aa0/buildings/068f273b-a567-4c82-8c52-f9b77816b7e7/meters/ae807cdc-0fc5-4963-9ffa-9845ec335f73/readings/c86ce40f-e7ac-4a9d-a66a-573a598f5138
schema:
$ref: '#/components/schemas/json_api'
'404':
description: Not Found
content:
application/vnd.api+json:
example:
errors:
- status: '404'
title: Not Found
detail: Could not find reading 21da3346-f685-4b29-8910-e3d8525e8bef for meter b3afd6d9-f686-4e5f-a080-8fe12320868e
in building c20f4428-20ff-46af-89c3-0b86749a7755 in portfolio ebeaa220-ca0d-42e1-8c5d-02c50a1790fb
schema:
$ref: '#/components/schemas/json_api'
'401':
description: Unauthorized Request
content:
application/vnd.api+json:
example:
errors:
- status: '401'
title: Unauthorized
detail: Unauthorized Request
schema:
$ref: '#/components/schemas/json_api'
'400':
description: Bad Request
content:
application/vnd.api+json:
example:
errors:
- status: '400'
title: Bad Request
detail: An invalid UUID parameter was submitted with the request (portfolio_id)
schema:
$ref: '#/components/schemas/json_api'
'502':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '502'
title: Bad Gateway
detail: A Measurabl Server is down, please try again later
schema:
$ref: '#/components/schemas/json_api'
'500':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '500'
title: Internal Server Error
detail: An error occurred with the request
schema:
$ref: '#/components/schemas/json_api'
'503':
description: Service Unavailable
content:
application/vnd.api+json:
example:
errors:
- status: '503'
title: Service Unavailable
detail: A Measurabl Server is currently unavailable, please try again later
schema:
$ref: '#/components/schemas/json_api'
'408':
description: Request Timeout
content:
application/vnd.api+json:
example:
errors:
- status: '408'
title: Request Timeout
detail: The request you made has timed out
schema:
$ref: '#/components/schemas/json_api'
'429':
description: Too many requests
content:
application/vnd.api+json:
example:
errors:
- status: '429'
title: Too Many Requests
detail: Rate Limit Exceeded
schema:
$ref: '#/components/schemas/json_api'
'403':
description: unauthorized request
content:
application/vnd.api+json:
example:
errors:
- status: '403'
title: Forbidden
detail: 'A valid auth token is required.
POST to ''/token'' with a valid ''key'' and ''secret'' to get an auth token.
'
schema:
$ref: '#/components/schemas/json_api'
patch:
summary: Updates a specific meter reading for a specified meter and building
tags:
- Energy and Water Meter Readings
security:
- OAuth2: []
parameters:
- name: portfolio_id
in: path
description: "UUID for the parent portfolio
\n Example: 157fcdaf-5323-42b3-a60b-c6fc23715a1e"
required: true
schema:
type: string
- name: building_id
in: path
description: 'Example: 6ae49b75-65e4-4af4-a7e5-3f5c563d804e'
required: true
schema:
type: string
- name: meter_id
in: path
description: 'Example: 33e000c1-ab0d-4bf2-82f6-481fd100b847'
required: true
schema:
type: string
- name: meter_reading_id
in: path
description: 'Example: 50d95667-6647-41c5-90d9-1a131d0deb79'
required: true
schema:
type: string
responses:
'200':
description: Portfolio / Building / Meter Specific Meter Reading Updated
content:
application/vnd.api+json:
example:
data:
id: 702ed8d1-4d87-49c3-8ffc-be6090865679
type: meterReadings
attributes:
estarMeterReadingId: null
fromDate: '2026-02-24'
toDate: '2026-03-24'
cost: 86
usage: 872
exported: 0
demand: 74
demandCharge: 17
estimate: false
updatedAt: '2026-02-14 09:31:10'
relationships:
meter:
data:
id: 38f26459-f8bc-40c6-b8c7-7670014960b2
type: meters
links:
self: /portfolios/23b56ca5-343e-4547-ae23-3503975df296/buildings/e2411f0c-87fe-4c6c-bcbd-48f6a045b4b5/meters/38f26459-f8bc-40c6-b8c7-7670014960b2
links:
self: portfolios/23b56ca5-343e-4547-ae23-3503975df296/buildings/e2411f0c-87fe-4c6c-bcbd-48f6a045b4b5/meters/38f26459-f8bc-40c6-b8c7-7670014960b2/readings/702ed8d1-4d87-49c3-8ffc-be6090865679
schema:
$ref: '#/components/schemas/json_api'
'404':
description: Not Found
content:
application/vnd.api+json:
example:
errors:
- status: '404'
title: Not Found
detail: Could not find reading 05e57d97-b1d6-4c7c-bb46-1889ec8f5f3a for meter f3c1bab2-6356-4772-b9c8-b7d5060e5279
in building b7a72255-f794-4d8b-9199-3f6a7c9bc978 in portfolio bc141424-be9b-4dc5-a912-2ecbc9cd9e06
schema:
$ref: '#/components/schemas/json_api'
'401':
description: Unauthorized Request
content:
application/vnd.api+json:
example:
errors:
- status: '401'
title: Unauthorized
detail: Unauthorized Request
schema:
$ref: '#/components/schemas/json_api'
'400':
description: Bad Request
content:
application/vnd.api+json:
example:
errors:
- status: '400'
title: Bad Request
detail: An invalid UUID parameter was submitted with the request (portfolio_id)
schema:
$ref: '#/components/schemas/json_api'
'502':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '502'
title: Bad Gateway
detail: A Measurabl Server is down, please try again later
schema:
$ref: '#/components/schemas/json_api'
'500':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '500'
title: Internal Server Error
detail: An error occurred with the request
schema:
$ref: '#/components/schemas/json_api'
'503':
description: Service Unavailable
content:
application/vnd.api+json:
example:
errors:
- status: '503'
title: Service Unavailable
detail: A Measurabl Server is currently unavailable, please try again later
schema:
$ref: '#/components/schemas/json_api'
'408':
description: Request Timeout
content:
application/vnd.api+json:
example:
errors:
- status: '408'
title: Request Timeout
detail: The request you made has timed out
schema:
$ref: '#/components/schemas/json_api'
'429':
description: Too many requests
content:
application/vnd.api+json:
example:
errors:
- status: '429'
title: Too Many Requests
detail: Rate Limit Exceeded
schema:
$ref: '#/components/schemas/json_api'
'403':
description: unauthorized request
content:
application/vnd.api+json:
example:
errors:
- status: '403'
title: Forbidden
detail: 'A valid auth token is required.
POST to ''/token'' with a valid ''key'' and ''secret'' to get an auth token.
'
schema:
$ref: '#/components/schemas/json_api'
requestBody:
content:
application/vnd.api+json:
schema:
type: object
properties:
data:
type: object
properties:
id:
type: string
type:
type: string
attributes:
type: object
properties:
fromDate:
type: string
toDate:
type: string
cost:
type: decimal
usage:
type: decimal
demand:
type: boolean
demandCharge:
type: string
exported:
type: decimal
required:
- id
- type
example:
data:
id: 4608f77e-4ca6-4d9e-9660-e61302e5c346
type: meterReadings
attributes:
fromDate: '2022-01-01'
toDate: '2022-02-01'
cost: 1200.0
usage: 1234.0
exported: 0.0
demand: null
demandCharge: null
required: true
description: Request body used to update a specific meter reading
/core/v0/portfolios/{portfolio_id}/buildings/{building_id}/meters/{meter_id}/spaces:
get:
summary: Returns a list of spaces a specified energy or water meter serves
tags:
- Energy and Water Meter Spaces
security:
- OAuth2: []
parameters:
- name: portfolio_id
in: path
description: "UUID of either the parent portfolio or fund
\n Example: abbc676c-47a1-4790-bf1d-a60a2ccce6c9"
required: true
schema:
type: string
- name: building_id
in: path
description: 'Example: 03972683-b67f-44b3-bb25-edd874e7f3c8'
required: true
schema:
type: string
- name: meter_id
in: path
description: 'Example: 57aa12d4-f834-4808-9eeb-512ba50338e2'
required: true
schema:
type: string
- name: filter
in: query
description: "Filter by any attribute available via the endpoint.\n \n - updatedAt=ge=2022-11-01T00:00\
\ will query for meter spaces that were updated at or after the set date and UTC time.
\n \
\ - propertyType==Office will query for meter spaces that have the specified propertyType.
\n \
\
"
schema:
type: string
- name: page
in: query
default: 1
schema:
type: integer
- name: size
in: query
description: The max page size is limited to 200 returned results
default: 25
schema:
type: integer
responses:
'200':
description: Portfolio or Fund / Building list of spaces the specified meter serves
content:
application/vnd.api+json:
example:
data:
- id: 07911585-8dae-442e-bfc5-5537568bef75
type: spaces
attributes:
propertyType: Financial Office
name: Office B
common: true
floorAreaSqFt: 9791
allocation: 25
estarSpaceId: 39613944
customized: false
relationships:
building:
data:
id: ff9b7f79-8e05-42f7-b59f-bcbe15bcffd1
type: buildings
links:
self: /portfolios/1d5cf283-59b8-4886-bc59-17208f9f44e5/buildings/ff9b7f79-8e05-42f7-b59f-bcbe15bcffd1
links:
self: /portfolios/1d5cf283-59b8-4886-bc59-17208f9f44e5/buildings/ff9b7f79-8e05-42f7-b59f-bcbe15bcffd1/spaces/07911585-8dae-442e-bfc5-5537568bef75
- id: f63f2613-1ea0-4778-99dd-4890d0b1d564
type: spaces
attributes:
propertyType: Office
name: Building Use
common: false
floorAreaSqFt: 7368
allocation: 25
estarSpaceId: 99184337
customized: true
relationships:
building:
data:
id: ff9b7f79-8e05-42f7-b59f-bcbe15bcffd1
type: buildings
links:
self: /portfolios/1d5cf283-59b8-4886-bc59-17208f9f44e5/buildings/ff9b7f79-8e05-42f7-b59f-bcbe15bcffd1
links:
self: /portfolios/1d5cf283-59b8-4886-bc59-17208f9f44e5/buildings/ff9b7f79-8e05-42f7-b59f-bcbe15bcffd1/spaces/f63f2613-1ea0-4778-99dd-4890d0b1d564
- id: 6c18fcfa-f98e-41aa-8b7c-0816cc3b01a3
type: spaces
attributes:
propertyType: Financial Office
name: Building Use A
common: false
floorAreaSqFt: 6725
allocation: 19
estarSpaceId: 44581940
customized: false
relationships:
building:
data:
id: ff9b7f79-8e05-42f7-b59f-bcbe15bcffd1
type: buildings
links:
self: /portfolios/1d5cf283-59b8-4886-bc59-17208f9f44e5/buildings/ff9b7f79-8e05-42f7-b59f-bcbe15bcffd1
links:
self: /portfolios/1d5cf283-59b8-4886-bc59-17208f9f44e5/buildings/ff9b7f79-8e05-42f7-b59f-bcbe15bcffd1/spaces/6c18fcfa-f98e-41aa-8b7c-0816cc3b01a3
- id: 5b4d5755-a88a-425b-a86c-9f644de7d42a
type: spaces
attributes:
propertyType: Financial Office
name: Building Use C
common: true
floorAreaSqFt: 9444
allocation: 6
estarSpaceId: 75962915
customized: true
relationships:
building:
data:
id: ff9b7f79-8e05-42f7-b59f-bcbe15bcffd1
type: buildings
links:
self: /portfolios/1d5cf283-59b8-4886-bc59-17208f9f44e5/buildings/ff9b7f79-8e05-42f7-b59f-bcbe15bcffd1
links:
self: /portfolios/1d5cf283-59b8-4886-bc59-17208f9f44e5/buildings/ff9b7f79-8e05-42f7-b59f-bcbe15bcffd1/spaces/5b4d5755-a88a-425b-a86c-9f644de7d42a
- id: bc857b19-7902-414e-9c9a-9248d89c048e
type: spaces
attributes:
propertyType: Financial Office
name: Building Use D
common: true
floorAreaSqFt: 890
allocation: 14
estarSpaceId: 28715959
customized: false
relationships:
building:
data:
id: ff9b7f79-8e05-42f7-b59f-bcbe15bcffd1
type: buildings
links:
self: /portfolios/1d5cf283-59b8-4886-bc59-17208f9f44e5/buildings/ff9b7f79-8e05-42f7-b59f-bcbe15bcffd1
links:
self: /portfolios/1d5cf283-59b8-4886-bc59-17208f9f44e5/buildings/ff9b7f79-8e05-42f7-b59f-bcbe15bcffd1/spaces/bc857b19-7902-414e-9c9a-9248d89c048e
links:
self: /core/v0/portfolios/1d5cf283-59b8-4886-bc59-17208f9f44e5/buildings/ff9b7f79-8e05-42f7-b59f-bcbe15bcffd1/meters/e629523f-afb0-4963-a8ba-83da537eb5d1/spaces?size=5&page=3
first: /core/v0/portfolios/1d5cf283-59b8-4886-bc59-17208f9f44e5/buildings/ff9b7f79-8e05-42f7-b59f-bcbe15bcffd1/meters/e629523f-afb0-4963-a8ba-83da537eb5d1/spaces?size=5&page=1
last: /core/v0/portfolios/1d5cf283-59b8-4886-bc59-17208f9f44e5/buildings/ff9b7f79-8e05-42f7-b59f-bcbe15bcffd1/meters/e629523f-afb0-4963-a8ba-83da537eb5d1/spaces?size=5&page=5
next: /core/v0/portfolios/1d5cf283-59b8-4886-bc59-17208f9f44e5/buildings/ff9b7f79-8e05-42f7-b59f-bcbe15bcffd1/meters/e629523f-afb0-4963-a8ba-83da537eb5d1/spaces?size=5&page=4
prev: /core/v0/portfolios/1d5cf283-59b8-4886-bc59-17208f9f44e5/buildings/ff9b7f79-8e05-42f7-b59f-bcbe15bcffd1/meters/e629523f-afb0-4963-a8ba-83da537eb5d1/spaces?size=5&page=2
meta:
page:
number: 3
size: 100
totalPages: 5
totalElements: 420
schema:
$ref: '#/components/schemas/json_api'
'404':
description: Not Found
content:
application/vnd.api+json:
example:
errors:
- status: '404'
title: Not Found
detail: Could not find meter b379fb96-08ad-49c4-9ef2-8c025bf90a11 in building 4ba526ee-45d0-4a29-a5aa-b57049ff7168
in portfolio 611194eb-949c-421a-bb2a-af03d38baa3f
schema:
$ref: '#/components/schemas/json_api'
'401':
description: Unauthorized Request
content:
application/vnd.api+json:
example:
errors:
- status: '401'
title: Unauthorized
detail: Unauthorized Request
schema:
$ref: '#/components/schemas/json_api'
'400':
description: Bad Request
content:
application/vnd.api+json:
example:
errors:
- status: '400'
title: Bad Request
detail: An invalid UUID parameter was submitted with the request (portfolio_id)
schema:
$ref: '#/components/schemas/json_api'
'502':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '502'
title: Bad Gateway
detail: A Measurabl Server is down, please try again later
schema:
$ref: '#/components/schemas/json_api'
'500':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '500'
title: Internal Server Error
detail: An error occurred with the request
schema:
$ref: '#/components/schemas/json_api'
'503':
description: Service Unavailable
content:
application/vnd.api+json:
example:
errors:
- status: '503'
title: Service Unavailable
detail: A Measurabl Server is currently unavailable, please try again later
schema:
$ref: '#/components/schemas/json_api'
'408':
description: Request Timeout
content:
application/vnd.api+json:
example:
errors:
- status: '408'
title: Request Timeout
detail: The request you made has timed out
schema:
$ref: '#/components/schemas/json_api'
'429':
description: Too many requests
content:
application/vnd.api+json:
example:
errors:
- status: '429'
title: Too Many Requests
detail: Rate Limit Exceeded
schema:
$ref: '#/components/schemas/json_api'
'403':
description: unauthorized request
content:
application/vnd.api+json:
example:
errors:
- status: '403'
title: Forbidden
detail: 'A valid auth token is required.
POST to ''/token'' with a valid ''key'' and ''secret'' to get an auth token.
'
schema:
$ref: '#/components/schemas/json_api'
/core/v0/portfolios/{portfolio_id}/buildings/{building_id}/meters/{meter_id}/relationships:
patch:
summary: Assigns an existing energy or water meter to a specified space or list of spaces
tags:
- Energy and Water Meter Spaces
security:
- OAuth2: []
parameters:
- name: portfolio_id
in: path
description: "UUID for the parent portfolio
\n Example: 2b3c84b1-30e1-4e2c-bb7a-836b300e84e4"
required: true
schema:
type: string
- name: building_id
in: path
description: 'Example: 039e095e-4475-481e-9cfb-29b82869d8bd'
required: true
schema:
type: string
- name: meter_id
in: path
description: 'Example: 87c8c19d-a6cb-44f5-a1a6-37dd0aaecc64'
required: true
schema:
type: string
responses:
'204':
description: Meter Assigned Successfully to the Specified Space(s)
content:
application/vnd.api+json:
example: ''
'404':
description: Not Found
content:
application/vnd.api+json:
example:
errors:
- status: '404'
title: Not Found
detail: Could not find meter 9e6fbbc3-2c48-427e-a4db-2bd583a44599 in building cd4ec81c-2327-45bf-a7c9-5f4b329da1c0
in portfolio 6bf13d77-d40a-4900-b11b-aa9fd7eda5f6
schema:
$ref: '#/components/schemas/json_api'
'401':
description: Unauthorized Request
content:
application/vnd.api+json:
example:
errors:
- status: '401'
title: Unauthorized
detail: Unauthorized Request
schema:
$ref: '#/components/schemas/json_api'
'400':
description: Bad Request
content:
application/vnd.api+json:
example:
errors:
- status: '400'
title: Bad Request
detail: An invalid UUID parameter was submitted with the request (portfolio_id)
schema:
$ref: '#/components/schemas/json_api'
'502':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '502'
title: Bad Gateway
detail: A Measurabl Server is down, please try again later
schema:
$ref: '#/components/schemas/json_api'
'500':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '500'
title: Internal Server Error
detail: An error occurred with the request
schema:
$ref: '#/components/schemas/json_api'
'503':
description: Service Unavailable
content:
application/vnd.api+json:
example:
errors:
- status: '503'
title: Service Unavailable
detail: A Measurabl Server is currently unavailable, please try again later
schema:
$ref: '#/components/schemas/json_api'
'408':
description: Request Timeout
content:
application/vnd.api+json:
example:
errors:
- status: '408'
title: Request Timeout
detail: The request you made has timed out
schema:
$ref: '#/components/schemas/json_api'
'429':
description: Too many requests
content:
application/vnd.api+json:
example:
errors:
- status: '429'
title: Too Many Requests
detail: Rate Limit Exceeded
schema:
$ref: '#/components/schemas/json_api'
'403':
description: unauthorized request
content:
application/vnd.api+json:
example:
errors:
- status: '403'
title: Forbidden
detail: 'A valid auth token is required.
POST to ''/token'' with a valid ''key'' and ''secret'' to get an auth token.
'
schema:
$ref: '#/components/schemas/json_api'
requestBody:
content:
application/vnd.api+json:
schema:
type: object
properties:
data:
type: object
properties:
type:
type: string
id:
type: string
required:
- id
- type
example:
data:
- type: spaces
id: 11ea9df3-374a-4d65-a694-be58d06651f4
required: true
description: Request body used to assign an existing meter to a specified space or list of spaces
/core/v0/portfolios/{portfolio_id}/certifications:
get:
summary: Returns a list of certifications for a specified portfolio
tags:
- Certifications
security:
- OAuth2: []
parameters:
- name: portfolio_id
in: path
description: "UUID of either the parent portfolio or fund
\n Example: adeb76ab-b9f2-4535-bf1f-d2821f74470b"
required: true
schema:
type: string
- name: filter
in: query
description: "Filter by any attribute available via the endpoint.\n \n - updatedAt=ge=2022-11-01T00:00\
\ will query for Certifications that were updated at or after the set date and UTC time.
\n \
\
"
schema:
type: string
- name: page
in: query
default: 1
schema:
type: integer
- name: size
in: query
description: The max page size is limited to 200 returned results
default: 25
schema:
type: integer
responses:
'200':
description: Portfolio or Fund list of certifications
content:
application/vnd.api+json:
example:
data:
- id: c15ce551-d25c-4e3c-ab64-9361149b1a83
type: certifications
attributes:
isCustomType: false
certificationType: AirRated AirScore
certificationDate: '2026-06-09'
expirationDate: '2026-09-23'
importedAt: '2025-09-02 03:01:39'
importState: CONFIRMED
isWholeBuilding: false
notes: some notes
dataSource: MANUAL
accoladeLevel: null
relationships:
building:
data:
id: d6a103a6-15c6-42a2-96cf-912d6775c3da
type: buildings
links:
self: /portfolios/8b7b30c2-d19d-461b-91d6-179e052d552d/buildings/d6a103a6-15c6-42a2-96cf-912d6775c3da
links:
self: /portfolios/8b7b30c2-d19d-461b-91d6-179e052d552d/buildings/d6a103a6-15c6-42a2-96cf-912d6775c3da/certifications/c15ce551-d25c-4e3c-ab64-9361149b1a83
- id: 68133b9e-e7ee-4690-a8f7-428f688715a0
type: certifications
attributes:
isCustomType: false
certificationType: CALGreen
certificationDate: '2026-03-18'
expirationDate: '2027-01-03'
importedAt: '2026-01-14 00:37:32'
importState: CONFIRMED
isWholeBuilding: false
notes: some notes
dataSource: MANUAL
accoladeLevel: null
relationships:
building:
data:
id: d6a103a6-15c6-42a2-96cf-912d6775c3da
type: buildings
links:
self: /portfolios/8b7b30c2-d19d-461b-91d6-179e052d552d/buildings/d6a103a6-15c6-42a2-96cf-912d6775c3da
links:
self: /portfolios/8b7b30c2-d19d-461b-91d6-179e052d552d/buildings/d6a103a6-15c6-42a2-96cf-912d6775c3da/certifications/68133b9e-e7ee-4690-a8f7-428f688715a0
links:
self: /portfolios/8b7b30c2-d19d-461b-91d6-179e052d552d/certifications/?size=2&page=1
first: /portfolios/8b7b30c2-d19d-461b-91d6-179e052d552d/certifications/?size=2&page=1
last: /portfolios/8b7b30c2-d19d-461b-91d6-179e052d552d/certifications/?size=2&page=2
next: /portfolios/8b7b30c2-d19d-461b-91d6-179e052d552d/certifications/?size=2&page=2
meta:
page:
number: 1
size: 2
totalPages: 2
totalElements: 2
schema:
$ref: '#/components/schemas/json_api'
'404':
description: Not Found
content:
application/vnd.api+json:
example:
errors:
- status: '404'
title: Not Found
detail: Could not find portfolio 17342071-b1f4-46c9-9c7c-e04194ab8b96
schema:
$ref: '#/components/schemas/json_api'
'401':
description: Unauthorized Request
content:
application/vnd.api+json:
example:
errors:
- status: '401'
title: Unauthorized
detail: Unauthorized Request
schema:
$ref: '#/components/schemas/json_api'
'400':
description: Bad Request
content:
application/vnd.api+json:
example:
errors:
- status: '400'
title: Bad Request
detail: An invalid UUID parameter was submitted with the request (portfolio_id)
schema:
$ref: '#/components/schemas/json_api'
'502':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '502'
title: Bad Gateway
detail: A Measurabl Server is down, please try again later
schema:
$ref: '#/components/schemas/json_api'
'500':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '500'
title: Internal Server Error
detail: An error occurred with the request
schema:
$ref: '#/components/schemas/json_api'
'503':
description: Service Unavailable
content:
application/vnd.api+json:
example:
errors:
- status: '503'
title: Service Unavailable
detail: A Measurabl Server is currently unavailable, please try again later
schema:
$ref: '#/components/schemas/json_api'
'408':
description: Request Timeout
content:
application/vnd.api+json:
example:
errors:
- status: '408'
title: Request Timeout
detail: The request you made has timed out
schema:
$ref: '#/components/schemas/json_api'
'429':
description: Too many requests
content:
application/vnd.api+json:
example:
errors:
- status: '429'
title: Too Many Requests
detail: Rate Limit Exceeded
schema:
$ref: '#/components/schemas/json_api'
'403':
description: unauthorized request
content:
application/vnd.api+json:
example:
errors:
- status: '403'
title: Forbidden
detail: 'A valid auth token is required.
POST to ''/token'' with a valid ''key'' and ''secret'' to get an auth token.
'
schema:
$ref: '#/components/schemas/json_api'
/core/v0/portfolios/{portfolio_id}/meters:
get:
summary: Returns a list of meters (energy or water) for a specified portfolio
tags:
- Energy and Water Meters
security:
- OAuth2: []
parameters:
- name: portfolio_id
in: path
description: "UUID of either the parent portfolio or fund
\n Example: 8fb14065-cd01-41bb-9e90-0974d2293c60"
required: true
schema:
type: string
- name: filter
in: query
description: "Filter by any attribute available via the endpoint.
\n \n \
\ - updatedAt=ge=2022-10-14T00:00 will query for Energy & Water Meters that were updated\
\ at or after the set date and UTC time.
\n - servesExteriorAreas==true will\
\ query for only those meters that serve exterior areas.
\n
"
schema:
type: string
- name: page
in: query
default: 1
schema:
type: integer
- name: size
in: query
description: The max page size is limited to 200 returned results
default: 25
schema:
type: integer
responses:
'200':
description: Portfolio or Fund list of meters
content:
application/vnd.api+json:
example:
data:
- id: e5a17bd8-e790-48c3-a948-90902c7ca420
type: meters
attributes:
estarMeterId: 14970793
meterType: Electric
units: kBtu (thousand Btu)
name: Electric Grid Meter2
mode: TENANT_PAID_BY_LANDLORD
servesExteriorAreas: false
renewableOffsite: true
trackingInstrument: null
activationDate: '2025-02-24'
deactivationDate: null
autoActivationDate: true
currency: USD
intermittent: false
updatedAt: '2026-02-28 00:00:00'
relationships:
building:
data:
id: a001ea49-002f-4dd7-8c96-c836e910a8a5
type: buildings
links:
self: /portfolios/0ff695db-2697-4147-9d42-b96aaccea027/buildings/a001ea49-002f-4dd7-8c96-c836e910a8a5
links:
self: /portfolios/0ff695db-2697-4147-9d42-b96aaccea027/buildings/a001ea49-002f-4dd7-8c96-c836e910a8a5/meters/e5a17bd8-e790-48c3-a948-90902c7ca420
- id: 712a264c-de26-44cc-a965-a1923f393403
type: meters
attributes:
estarMeterId: 65023820
meterType: Electric on Site Wind
units: kWh (thousand Watt-hours)
name: wind1
mode: TENANT_PAID_BY_LANDLORD
servesExteriorAreas: false
renewableOffsite: false
trackingInstrument: Grid-connected low-carbon electricity generation owned by company; no instruments
created
activationDate: '2025-02-14'
deactivationDate: null
autoActivationDate: false
currency: USD
intermittent: false
updatedAt: '2025-10-27 00:00:00'
relationships:
building:
data:
id: a001ea49-002f-4dd7-8c96-c836e910a8a5
type: buildings
links:
self: /portfolios/0ff695db-2697-4147-9d42-b96aaccea027/buildings/a001ea49-002f-4dd7-8c96-c836e910a8a5
links:
self: /portfolios/0ff695db-2697-4147-9d42-b96aaccea027/buildings/a001ea49-002f-4dd7-8c96-c836e910a8a5/meters/712a264c-de26-44cc-a965-a1923f393403
- id: 3fed7ce1-a834-4caa-8ab6-04abfd80429c
type: meters
attributes:
estarMeterId: 33768298
meterType: District Chilled Water - Absorption Chiller using Natural Gas
units: GJ
name: valid3
mode: TENANT_PAID_BY_LANDLORD
servesExteriorAreas: false
renewableOffsite: false
trackingInstrument: null
activationDate: '2023-11-26'
deactivationDate: null
autoActivationDate: false
currency: USD
intermittent: false
updatedAt: '2025-11-24 00:00:00'
relationships:
building:
data:
id: a001ea49-002f-4dd7-8c96-c836e910a8a5
type: buildings
links:
self: /portfolios/0ff695db-2697-4147-9d42-b96aaccea027/buildings/a001ea49-002f-4dd7-8c96-c836e910a8a5
links:
self: /portfolios/0ff695db-2697-4147-9d42-b96aaccea027/buildings/a001ea49-002f-4dd7-8c96-c836e910a8a5/meters/3fed7ce1-a834-4caa-8ab6-04abfd80429c
- id: 92d2e896-4087-4ea7-ac46-1ed94a9aef8d
type: meters
attributes:
estarMeterId: 19693723
meterType: Wood
units: GJ
name: Wood
mode: TENANT_PAID_BY_LANDLORD
servesExteriorAreas: false
renewableOffsite: false
trackingInstrument: null
activationDate: '2023-07-29'
deactivationDate: null
autoActivationDate: true
currency: USD
intermittent: true
updatedAt: '2025-08-24 00:00:00'
relationships:
building:
data:
id: a001ea49-002f-4dd7-8c96-c836e910a8a5
type: buildings
links:
self: /portfolios/0ff695db-2697-4147-9d42-b96aaccea027/buildings/a001ea49-002f-4dd7-8c96-c836e910a8a5
links:
self: /portfolios/0ff695db-2697-4147-9d42-b96aaccea027/buildings/a001ea49-002f-4dd7-8c96-c836e910a8a5/meters/92d2e896-4087-4ea7-ac46-1ed94a9aef8d
- id: 24ef8a5a-cd22-42f8-b582-1c4d164392fd
type: meters
attributes:
estarMeterId: 63092522
meterType: Wood
units: GJ
name: Wood2
mode: TENANT_PAID_BY_LANDLORD
servesExteriorAreas: false
renewableOffsite: false
trackingInstrument: null
activationDate: '2025-02-19'
deactivationDate: null
autoActivationDate: true
currency: USD
intermittent: true
updatedAt: '2025-08-29 00:00:00'
relationships:
building:
data:
id: a001ea49-002f-4dd7-8c96-c836e910a8a5
type: buildings
links:
self: /portfolios/0ff695db-2697-4147-9d42-b96aaccea027/buildings/a001ea49-002f-4dd7-8c96-c836e910a8a5
links:
self: /portfolios/0ff695db-2697-4147-9d42-b96aaccea027/buildings/a001ea49-002f-4dd7-8c96-c836e910a8a5/meters/24ef8a5a-cd22-42f8-b582-1c4d164392fd
links:
self: /core/v0/portfolios/0ff695db-2697-4147-9d42-b96aaccea027/buildings/a001ea49-002f-4dd7-8c96-c836e910a8a5/meters?size=5&page=3
first: /core/v0/portfolios/0ff695db-2697-4147-9d42-b96aaccea027/buildings/a001ea49-002f-4dd7-8c96-c836e910a8a5/meters?size=5&page=1
last: /core/v0/portfolios/0ff695db-2697-4147-9d42-b96aaccea027/buildings/a001ea49-002f-4dd7-8c96-c836e910a8a5/meters?size=5&page=8
next: /core/v0/portfolios/0ff695db-2697-4147-9d42-b96aaccea027/buildings/a001ea49-002f-4dd7-8c96-c836e910a8a5/meters?size=5&page=4
prev: /core/v0/portfolios/0ff695db-2697-4147-9d42-b96aaccea027/buildings/a001ea49-002f-4dd7-8c96-c836e910a8a5/meters?size=5&page=2
meta:
page:
number: 3
size: 100
totalPages: 8
totalElements: 730
schema:
$ref: '#/components/schemas/json_api'
'404':
description: Not Found
content:
application/vnd.api+json:
example:
errors:
- status: '404'
title: Not Found
detail: Could not find portfolio 228df829-1e01-4c0a-aa0a-a721f1bfdd7c
schema:
$ref: '#/components/schemas/json_api'
'401':
description: Unauthorized Request
content:
application/vnd.api+json:
example:
errors:
- status: '401'
title: Unauthorized
detail: Unauthorized Request
schema:
$ref: '#/components/schemas/json_api'
'400':
description: Bad Request
content:
application/vnd.api+json:
example:
errors:
- status: '400'
title: Bad Request
detail: An invalid UUID parameter was submitted with the request (portfolio_id)
schema:
$ref: '#/components/schemas/json_api'
'502':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '502'
title: Bad Gateway
detail: A Measurabl Server is down, please try again later
schema:
$ref: '#/components/schemas/json_api'
'500':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '500'
title: Internal Server Error
detail: An error occurred with the request
schema:
$ref: '#/components/schemas/json_api'
'503':
description: Service Unavailable
content:
application/vnd.api+json:
example:
errors:
- status: '503'
title: Service Unavailable
detail: A Measurabl Server is currently unavailable, please try again later
schema:
$ref: '#/components/schemas/json_api'
'408':
description: Request Timeout
content:
application/vnd.api+json:
example:
errors:
- status: '408'
title: Request Timeout
detail: The request you made has timed out
schema:
$ref: '#/components/schemas/json_api'
'429':
description: Too many requests
content:
application/vnd.api+json:
example:
errors:
- status: '429'
title: Too Many Requests
detail: Rate Limit Exceeded
schema:
$ref: '#/components/schemas/json_api'
'403':
description: unauthorized request
content:
application/vnd.api+json:
example:
errors:
- status: '403'
title: Forbidden
detail: 'A valid auth token is required.
POST to ''/token'' with a valid ''key'' and ''secret'' to get an auth token.
'
schema:
$ref: '#/components/schemas/json_api'
/core/v0/portfolios/{portfolio_id}/ratings:
get:
summary: Returns a list of all ratings for a specified portfolio
tags:
- Ratings
security:
- OAuth2: []
parameters:
- name: portfolio_id
in: path
description: "UUID of either the parent portfolio or fund
\n Example: bb5c780e-09ab-42e0-940c-3d9d6188c2b7"
required: true
schema:
type: string
- name: filter
in: query
description: "Filter by any attribute available via the endpoint.
\n \n \
\ - ratingDate=ge=2022-11-01 will query for buildings with Ratings dated at or after\
\ the set date.
\n - isWholeBuilding==true will query for only those ratings\
\ that apply to an entire building.
\n
"
schema:
type: string
- name: page
in: query
default: 1
schema:
type: integer
- name: size
in: query
description: The max page size is limited to 200 returned results
default: 25
schema:
type: integer
responses:
'200':
description: Portfolio or Fund list of ratings
content:
application/vnd.api+json:
example:
data:
- id: b084384f-3b73-40db-937c-ba2cb8faf875
type: ratings
attributes:
ratingType: BBC Effinergie
ratingName: A Rating
score: 51
ratingDate: '2026-05-08'
expirationDate: '2027-01-06'
notes: some notes
importedAt: '2026-01-07 02:14:42'
importState: CONFIRMED
updatedAt: '2025-08-15 13:11:00'
isWholeBuilding: true
relationships:
building:
data:
id: afab09c6-d4ab-4769-b6f1-9ffa0dd73f93
type: buildings
links:
self: /portfolios/0ebe9ee9-0638-4691-9403-3f74e9aeb260/buildings/afab09c6-d4ab-4769-b6f1-9ffa0dd73f93
links:
self: /portfolios/0ebe9ee9-0638-4691-9403-3f74e9aeb260/buildings/afab09c6-d4ab-4769-b6f1-9ffa0dd73f93/ratings/b084384f-3b73-40db-937c-ba2cb8faf875
- id: 8ce17634-4580-46b6-b24b-0ff4e787ea37
type: ratings
attributes:
ratingType: OTHER
ratingName: null
score: 76
ratingDate: '2026-02-14'
expirationDate: '2027-01-05'
notes: null
importedAt: null
importState: null
updatedAt: '2026-03-19 12:18:41'
isWholeBuilding: true
relationships:
building:
data:
id: afab09c6-d4ab-4769-b6f1-9ffa0dd73f93
type: buildings
links:
self: /portfolios/0ebe9ee9-0638-4691-9403-3f74e9aeb260/buildings/afab09c6-d4ab-4769-b6f1-9ffa0dd73f93
links:
self: /portfolios/0ebe9ee9-0638-4691-9403-3f74e9aeb260/buildings/afab09c6-d4ab-4769-b6f1-9ffa0dd73f93/ratings/b084384f-3b73-40db-937c-ba2cb8faf875
links:
self: /core/v0/portfolios/0ebe9ee9-0638-4691-9403-3f74e9aeb260/buildings/afab09c6-d4ab-4769-b6f1-9ffa0dd73f93/ratings?size=2&page=2
first: /core/v0/portfolios/0ebe9ee9-0638-4691-9403-3f74e9aeb260/buildings/afab09c6-d4ab-4769-b6f1-9ffa0dd73f93/ratings?size=2&page=1
meta:
page:
number: 1
size: 2
totalPages: 1
totalElements: 2
schema:
$ref: '#/components/schemas/json_api'
'404':
description: Not Found
content:
application/vnd.api+json:
example:
errors:
- status: '404'
title: Not Found
detail: Could not find building 8fb6c331-6d34-4f0c-8c62-c26f0302f35c in portfolio 3911e215-90f6-4146-83cd-532115c9122b
schema:
$ref: '#/components/schemas/json_api'
'401':
description: Unauthorized Request
content:
application/vnd.api+json:
example:
errors:
- status: '401'
title: Unauthorized
detail: Unauthorized Request
schema:
$ref: '#/components/schemas/json_api'
'400':
description: Bad Request
content:
application/vnd.api+json:
example:
errors:
- status: '400'
title: Bad Request
detail: An invalid UUID parameter was submitted with the request (portfolio_id)
schema:
$ref: '#/components/schemas/json_api'
'502':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '502'
title: Bad Gateway
detail: A Measurabl Server is down, please try again later
schema:
$ref: '#/components/schemas/json_api'
'500':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '500'
title: Internal Server Error
detail: An error occurred with the request
schema:
$ref: '#/components/schemas/json_api'
'503':
description: Service Unavailable
content:
application/vnd.api+json:
example:
errors:
- status: '503'
title: Service Unavailable
detail: A Measurabl Server is currently unavailable, please try again later
schema:
$ref: '#/components/schemas/json_api'
'408':
description: Request Timeout
content:
application/vnd.api+json:
example:
errors:
- status: '408'
title: Request Timeout
detail: The request you made has timed out
schema:
$ref: '#/components/schemas/json_api'
'429':
description: Too many requests
content:
application/vnd.api+json:
example:
errors:
- status: '429'
title: Too Many Requests
detail: Rate Limit Exceeded
schema:
$ref: '#/components/schemas/json_api'
'403':
description: unauthorized request
content:
application/vnd.api+json:
example:
errors:
- status: '403'
title: Forbidden
detail: 'A valid auth token is required.
POST to ''/token'' with a valid ''key'' and ''secret'' to get an auth token.
'
schema:
$ref: '#/components/schemas/json_api'
/core/v0/portfolios/{portfolio_id}/waste_meters:
get:
summary: Returns a list of waste meters for a specified portfolio
tags:
- Waste Meters
security:
- OAuth2: []
parameters:
- name: portfolio_id
in: path
description: "UUID of either the parent portfolio or fund
\n Example: 2abff3f0-f8d9-4fc6-bcfe-d8214d39377f"
required: true
schema:
type: string
- name: filter
in: query
description: "Filter by any attribute available via the endpoint.
\n \n \
\ - meterType==\"Disposed - Trash\" will query for only those meters that match the specified\
\ meter type.
\n - updatedAt=ge=2022-03-13T00:00 will query for Waste Meters\
\ that were updated at or after the set date and UTC time.
\n
"
schema:
type: string
- name: page
in: query
default: 1
schema:
type: integer
- name: size
in: query
description: The max page size is limited to 200 returned results
default: 25
schema:
type: integer
responses:
'200':
description: Portfolio or Fund list of waste meters
content:
application/vnd.api+json:
example:
data:
- id: efc5a733-114b-447c-9269-4e973b44e22c
type: waste_meters
attributes:
estarMeterId: null
meterType: Disposed - Trash
units: tons
name: Test waste meter 1
containerSize: null
activationDate: '2026-04-29'
deactivationDate: '2026-09-14'
autoActivationDate: true
currency: USD
intermittent: true
hazardous: false
updatedAt: '2026-07-05 09:12:05'
relationships:
building:
data:
id: 682691d6-cad4-4f3f-8dae-82b9c06d1ba8
type: buildings
links:
self: /portfolios/73b01d69-57a5-4bc6-bb72-2aa71cc20842/buildings/682691d6-cad4-4f3f-8dae-82b9c06d1ba8
links:
self: /portfolios/73b01d69-57a5-4bc6-bb72-2aa71cc20842/buildings/682691d6-cad4-4f3f-8dae-82b9c06d1ba8/waste_meters/efc5a733-114b-447c-9269-4e973b44e22c
- id: 8be7bec3-a141-432f-8a4b-06dc3f734aff
type: waste_meters
attributes:
estarMeterId: null
meterType: Recycled - Glass
units: tons
name: Test waste meter 2
containerSize: null
activationDate: '2026-02-16'
deactivationDate: '2026-12-24'
autoActivationDate: true
currency: USD
intermittent: false
hazardous: true
updatedAt: '2026-06-23 08:48:55'
relationships:
building:
data:
id: 682691d6-cad4-4f3f-8dae-82b9c06d1ba8
type: buildings
links:
self: /portfolios/73b01d69-57a5-4bc6-bb72-2aa71cc20842/buildings/682691d6-cad4-4f3f-8dae-82b9c06d1ba8
links:
self: /portfolios/73b01d69-57a5-4bc6-bb72-2aa71cc20842/buildings/682691d6-cad4-4f3f-8dae-82b9c06d1ba8/waste_meters/8be7bec3-a141-432f-8a4b-06dc3f734aff
links:
self: /portfolios/73b01d69-57a5-4bc6-bb72-2aa71cc20842/waste_meters/?size=2&page=1
first: /portfolios/73b01d69-57a5-4bc6-bb72-2aa71cc20842/waste_meters/?size=2&page=1
last: /portfolios/73b01d69-57a5-4bc6-bb72-2aa71cc20842/waste_meters/?size=2&page=2
next: /portfolios/73b01d69-57a5-4bc6-bb72-2aa71cc20842/waste_meters/?size=2&page=2
meta:
page:
number: 1
size: 2
totalPages: 1
totalElements: 2
schema:
$ref: '#/components/schemas/json_api'
'404':
description: Not Found
content:
application/vnd.api+json:
example:
errors:
- status: '404'
title: Not Found
detail: Could not find portfolio b287ca66-b539-4c56-9c0f-f535ed62d12c
schema:
$ref: '#/components/schemas/json_api'
'401':
description: Unauthorized Request
content:
application/vnd.api+json:
example:
errors:
- status: '401'
title: Unauthorized
detail: Unauthorized Request
schema:
$ref: '#/components/schemas/json_api'
'400':
description: Bad Request
content:
application/vnd.api+json:
example:
errors:
- status: '400'
title: Bad Request
detail: An invalid UUID parameter was submitted with the request (portfolio_id)
schema:
$ref: '#/components/schemas/json_api'
'502':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '502'
title: Bad Gateway
detail: A Measurabl Server is down, please try again later
schema:
$ref: '#/components/schemas/json_api'
'500':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '500'
title: Internal Server Error
detail: An error occurred with the request
schema:
$ref: '#/components/schemas/json_api'
'503':
description: Service Unavailable
content:
application/vnd.api+json:
example:
errors:
- status: '503'
title: Service Unavailable
detail: A Measurabl Server is currently unavailable, please try again later
schema:
$ref: '#/components/schemas/json_api'
'408':
description: Request Timeout
content:
application/vnd.api+json:
example:
errors:
- status: '408'
title: Request Timeout
detail: The request you made has timed out
schema:
$ref: '#/components/schemas/json_api'
'429':
description: Too many requests
content:
application/vnd.api+json:
example:
errors:
- status: '429'
title: Too Many Requests
detail: Rate Limit Exceeded
schema:
$ref: '#/components/schemas/json_api'
'403':
description: unauthorized request
content:
application/vnd.api+json:
example:
errors:
- status: '403'
title: Forbidden
detail: 'A valid auth token is required.
POST to ''/token'' with a valid ''key'' and ''secret'' to get an auth token.
'
schema:
$ref: '#/components/schemas/json_api'
/core/v0/portfolios:
post:
summary: Creates a new portfolio for a specified account
tags:
- Portfolios
security:
- OAuth2: []
parameters: []
responses:
'200':
description: Portfolios created
content:
application/vnd.api+json:
example:
data:
id: 62e6ebc9-ceb4-4ed2-b547-c058add4451c
type: portfolios
attributes:
name: Example Portfolio
createdAt: '2026-07-16T13:21:42Z'
updatedAt: '2026-07-16T13:21:42Z'
schema:
$ref: '#/components/schemas/json_api'
'400':
description: Bad Request
content:
application/vnd.api+json:
example:
errors:
- status: '400'
title: Internal Server Error
detail: Bad Request
schema:
$ref: '#/components/schemas/json_api'
'500':
description: An internal error has occurred
content:
application/vnd.api+json:
example:
errors:
- status: '500'
title: Internal Server Error
detail: An error occurred with the request
schema:
$ref: '#/components/schemas/json_api'
'401':
description: Unauthorized Request
content:
application/vnd.api+json:
example:
errors:
- status: '401'
title: Unauthorized
detail: Unauthorized AppType or Product required for this request
schema:
$ref: '#/components/schemas/json_api'
'429':
description: Too Many Requests
content:
application/vnd.api+json:
example:
errors:
- status: '429'
title: Too Many Requests
detail: Rate Limit Exceeded
schema:
$ref: '#/components/schemas/json_api'
'502':
description: Bad Gateway
content:
application/vnd.api+json:
example:
errors:
- status: '502'
title: Bad Gateway
detail: A Measurabl Server is down, please try again later
schema:
$ref: '#/components/schemas/json_api'
'408':
description: Request timeout
content:
application/vnd.api+json:
example:
errors:
- status: '408'
title: Request Timeout
detail: The request you made has timed out
schema:
$ref: '#/components/schemas/json_api'
'404':
description: Account not found
content:
application/vnd.api+json:
example:
errors:
- status: '404'
title: Account not found
detail: The specified account does not exist
schema:
$ref: '#/components/schemas/json_api'
'403':
description: unauthorized request
content:
application/vnd.api+json:
example:
errors:
- status: '403'
title: Forbidden
detail: 'A valid auth token is required.
POST to ''/token'' with a valid ''key'' and ''secret'' to get an auth token.
'
schema:
$ref: '#/components/schemas/json_api'
requestBody:
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
type:
type: string
attributes:
type: object
properties:
name:
type: string
required:
- name
example:
data:
type: portfolios
attributes:
name: New Portfolio Name
required: true
description: Request body used to create a portfolio for an account
get:
summary: Returns a list of portfolios for a specified account
tags:
- Portfolios
security:
- OAuth2: []
parameters:
- name: page
in: query
schema:
type: integer
- name: pageSize
in: query
schema:
type: integer
responses:
'200':
description: Return list of account portfolios
content:
application/vnd.api+json:
example:
data:
- id: 0e393177-8571-4b52-93ea-2bd16dbfc205
type: portfolios
attributes:
name: Test Portfolio
createdAt: '2026-07-16T13:21:43Z'
updatedAt: '2026-07-16T13:21:43Z'
relationships:
primaryUser:
data:
id: 62ac308d-6796-4c6a-817f-ba545db4b68f
type: users
included:
- id: 62ac308d-6796-4c6a-817f-ba545db4b68f
type: users
attributes:
email: erasmo@example.example
firstName: ExampleUser
lastName: Test
createdAt: '2026-07-16T13:21:43Z'
updatedAt: '2026-07-16T13:21:43Z'
meta:
total_count: 2
item_count: 2
page_count: 1
current_page: 1
prev_page: null
next_page: null
last_page: 1
from_record: 1
to_record: 2
links:
self: /api/v1/core/accounts/267a1bd2-ea8f-48fb-8a82-8b5109c06908/portfolios
prev: null
next: null
schema:
$ref: '#/components/schemas/json_api'
'400':
description: Bad Request
content:
application/vnd.api+json:
example:
errors:
- status: '400'
title: Internal Server Error
detail: Bad Request
schema:
$ref: '#/components/schemas/json_api'
'500':
description: An internal error has occurred
content:
application/vnd.api+json:
example:
errors:
- status: '500'
title: Internal Server Error
detail: An error occurred with the request
schema:
$ref: '#/components/schemas/json_api'
'401':
description: Unauthorized Request
content:
application/vnd.api+json:
example:
errors:
- status: '401'
title: Unauthorized
detail: Unauthorized AppType or Product required for this request
schema:
$ref: '#/components/schemas/json_api'
'429':
description: Too Many Requests
content:
application/vnd.api+json:
example:
errors:
- status: '429'
title: Too Many Requests
detail: Rate Limit Exceeded
schema:
$ref: '#/components/schemas/json_api'
'502':
description: Bad Gateway
content:
application/vnd.api+json:
example:
errors:
- status: '502'
title: Bad Gateway
detail: A Measurabl Server is down, please try again later
schema:
$ref: '#/components/schemas/json_api'
'408':
description: Request timeout
content:
application/vnd.api+json:
example:
errors:
- status: '408'
title: Request Timeout
detail: The request you made has timed out
schema:
$ref: '#/components/schemas/json_api'
'404':
description: Account not found
content:
application/vnd.api+json:
example:
errors:
- status: '404'
title: Account not found
detail: The specified account does not exist
schema:
$ref: '#/components/schemas/json_api'
'403':
description: unauthorized request
content:
application/vnd.api+json:
example:
errors:
- status: '403'
title: Forbidden
detail: 'A valid auth token is required.
POST to ''/token'' with a valid ''key'' and ''secret'' to get an auth token.
'
schema:
$ref: '#/components/schemas/json_api'
/core/v0/portfolios/{portfolio_id}:
patch:
summary: Update a specific portfolio's name for a specified account
tags:
- Portfolios
security:
- OAuth2: []
parameters:
- name: portfolio_id
in: path
description: 'Example: 74d75229-efad-4ef7-898e-607ad832796d'
required: true
schema:
type: string
responses:
'200':
description: Portfolios Updated
content:
application/vnd.api+json:
example:
data:
id: 8069c37d-ba84-4109-8d86-7f4da9270a6b
type: portfolios
attributes:
name: New Portfolio Name
createdAt: '2026-07-16T13:16:44.547Z'
updatedAt: '2026-07-16T13:21:44.547Z'
schema:
$ref: '#/components/schemas/json_api'
'400':
description: Bad Request
content:
application/vnd.api+json:
example:
errors:
- status: '400'
title: Bad Request
detail: An invalid UUID parameter was submitted with the request (portfolio_id)
schema:
$ref: '#/components/schemas/json_api'
'500':
description: An internal error has occurred
content:
application/vnd.api+json:
example:
errors:
- status: '500'
title: Internal Server Error
detail: An error occurred with the request
schema:
$ref: '#/components/schemas/json_api'
'401':
description: Unauthorized Request
content:
application/vnd.api+json:
example:
errors:
- status: '401'
title: Unauthorized
detail: Unauthorized AppType or Product required for this request
schema:
$ref: '#/components/schemas/json_api'
'429':
description: Too Many Requests
content:
application/vnd.api+json:
example:
errors:
- status: '429'
title: Too Many Requests
detail: Rate Limit Exceeded
schema:
$ref: '#/components/schemas/json_api'
'502':
description: Bad Gateway
content:
application/vnd.api+json:
example:
errors:
- status: '502'
title: Bad Gateway
detail: A Measurabl Server is down, please try again later
schema:
$ref: '#/components/schemas/json_api'
'408':
description: Request timeout
content:
application/vnd.api+json:
example:
errors:
- status: '408'
title: Request Timeout
detail: The request you made has timed out
schema:
$ref: '#/components/schemas/json_api'
'404':
description: Account not found
content:
application/vnd.api+json:
example:
errors:
- status: '404'
title: Account not found
detail: The specified account does not exist
schema:
$ref: '#/components/schemas/json_api'
'403':
description: unauthorized request
content:
application/vnd.api+json:
example:
errors:
- status: '403'
title: Forbidden
detail: 'A valid auth token is required.
POST to ''/token'' with a valid ''key'' and ''secret'' to get an auth token.
'
schema:
$ref: '#/components/schemas/json_api'
requestBody:
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
id:
type: string
type:
type: string
attributes:
type: object
properties:
name:
type: string
required:
- name
example:
data:
id: a5750181-57f7-4e04-9bb8-8b5c092507b0
type: portfolios
attributes:
name: Updated Portfolio Name
required: true
description: Request body used to update a portfolio
/core/v0/portfolios/{portfolio_id}/buildings/{building_id}/ratings/{rating_id}:
delete:
summary: Deletes a specific rating assigned to a specified building
tags:
- Ratings
security:
- OAuth2: []
parameters:
- name: portfolio_id
in: path
description: "UUID for the parent portfolio
\n Example: 318c4d3d-de20-4d70-bcf6-cce3812daf67"
required: true
schema:
type: string
- name: building_id
in: path
description: 'Example: 4c1385b9-0452-422f-92f3-3e2e3c83cfe0'
required: true
schema:
type: string
- name: rating_id
in: path
description: 'Example: 4d8cc3cf-ff61-4138-9437-a3132149a141'
required: true
schema:
type: string
responses:
'204':
description: Rating Deleted Successfully
content:
application/vnd.api+json:
example: ''
'400':
description: Bad Request
content:
application/vnd.api+json:
example:
errors:
- status: '400'
title: Bad Request
detail: An invalid UUID parameter was submitted with the request (portfolio_id)
schema:
$ref: '#/components/schemas/json_api'
'404':
description: Not Found
content:
application/vnd.api+json:
example:
errors:
- status: '404'
title: Not Found
detail: Could not find rating 63ddc65b-5266-4fc4-82fa-77ad885618b4 in building b10cc7ff-3de9-4d72-bcdb-5d6ca12cecb4
in portfolio dc893756-24f7-4d6f-be28-930f4699f551
schema:
$ref: '#/components/schemas/json_api'
'401':
description: Unauthorized Request
content:
application/vnd.api+json:
example:
errors:
- status: '401'
title: Unauthorized
detail: Unauthorized Request
schema:
$ref: '#/components/schemas/json_api'
'502':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '502'
title: Bad Gateway
detail: A Measurabl Server is down, please try again later
schema:
$ref: '#/components/schemas/json_api'
'500':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '500'
title: Internal Server Error
detail: An error occurred with the request
schema:
$ref: '#/components/schemas/json_api'
'503':
description: Service Unavailable
content:
application/vnd.api+json:
example:
errors:
- status: '503'
title: Service Unavailable
detail: A Measurabl Server is currently unavailable, please try again later
schema:
$ref: '#/components/schemas/json_api'
'408':
description: Request Timeout
content:
application/vnd.api+json:
example:
errors:
- status: '408'
title: Request Timeout
detail: The request you made has timed out
schema:
$ref: '#/components/schemas/json_api'
'429':
description: Too many requests
content:
application/vnd.api+json:
example:
errors:
- status: '429'
title: Too Many Requests
detail: Rate Limit Exceeded
schema:
$ref: '#/components/schemas/json_api'
'403':
description: unauthorized request
content:
application/vnd.api+json:
example:
errors:
- status: '403'
title: Forbidden
detail: 'A valid auth token is required.
POST to ''/token'' with a valid ''key'' and ''secret'' to get an auth token.
'
schema:
$ref: '#/components/schemas/json_api'
get:
summary: Returns a specific rating for a specified building
tags:
- Ratings
security:
- OAuth2: []
parameters:
- name: portfolio_id
in: path
description: "UUID of either the parent portfolio or fund
\n Example: 3cc51c77-e386-4f25-86f3-387ba231f618"
required: true
schema:
type: string
- name: building_id
in: path
description: 'Example: 20445565-8aa0-4fcf-b9e5-e9c61e1f6d7e'
required: true
schema:
type: string
- name: rating_id
in: path
description: 'Example: 77ed95a8-65a4-4fee-b957-6af941320cec'
required: true
schema:
type: string
responses:
'200':
description: Portfolio or Fund / Building specific Rating
content:
application/vnd.api+json:
example:
data:
id: 2463e117-9b87-440d-b2dc-94de83495169
type: ratings
attributes:
ratingType: BBC Effinergie
ratingName: A Rating
score: 35
ratingDate: '2026-03-13'
expirationDate: '2026-09-03'
notes: some notes
importedAt: '2026-04-21 21:35:25'
importState: CONFIRMED
updatedAt: '2026-04-11 13:19:40'
isWholeBuilding: false
relationships:
building:
data:
id: 177af71c-8198-4bed-9185-f79ddba930b4
type: buildings
links:
self: /portfolios/2f80920d-2c8a-4350-be3d-12c975f35182/buildings/177af71c-8198-4bed-9185-f79ddba930b4
links:
self: /portfolios/2f80920d-2c8a-4350-be3d-12c975f35182/buildings/177af71c-8198-4bed-9185-f79ddba930b4/ratings/2463e117-9b87-440d-b2dc-94de83495169
schema:
$ref: '#/components/schemas/json_api'
'404':
description: Not Found
content:
application/vnd.api+json:
example:
errors:
- status: '404'
title: Not Found
detail: Could not find rating 904aadf7-aa20-490e-aaff-4d55a1a10ed6 in building 72f14b1c-526d-4834-a7a1-fd914f1ade4e
in portfolio b0e3e50e-6f20-4ce6-ab9d-616f9c8c10f6
schema:
$ref: '#/components/schemas/json_api'
'401':
description: Unauthorized Request
content:
application/vnd.api+json:
example:
errors:
- status: '401'
title: Unauthorized
detail: Unauthorized Request
schema:
$ref: '#/components/schemas/json_api'
'400':
description: Bad Request
content:
application/vnd.api+json:
example:
errors:
- status: '400'
title: Bad Request
detail: An invalid UUID parameter was submitted with the request (portfolio_id)
schema:
$ref: '#/components/schemas/json_api'
'502':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '502'
title: Bad Gateway
detail: A Measurabl Server is down, please try again later
schema:
$ref: '#/components/schemas/json_api'
'500':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '500'
title: Internal Server Error
detail: An error occurred with the request
schema:
$ref: '#/components/schemas/json_api'
'503':
description: Service Unavailable
content:
application/vnd.api+json:
example:
errors:
- status: '503'
title: Service Unavailable
detail: A Measurabl Server is currently unavailable, please try again later
schema:
$ref: '#/components/schemas/json_api'
'408':
description: Request Timeout
content:
application/vnd.api+json:
example:
errors:
- status: '408'
title: Request Timeout
detail: The request you made has timed out
schema:
$ref: '#/components/schemas/json_api'
'429':
description: Too many requests
content:
application/vnd.api+json:
example:
errors:
- status: '429'
title: Too Many Requests
detail: Rate Limit Exceeded
schema:
$ref: '#/components/schemas/json_api'
'403':
description: unauthorized request
content:
application/vnd.api+json:
example:
errors:
- status: '403'
title: Forbidden
detail: 'A valid auth token is required.
POST to ''/token'' with a valid ''key'' and ''secret'' to get an auth token.
'
schema:
$ref: '#/components/schemas/json_api'
/core/v0/portfolios/{portfolio_id}/buildings/{building_id}/ratings:
get:
summary: Returns a list of ratings for the specified building
tags:
- Ratings
security:
- OAuth2: []
parameters:
- name: portfolio_id
in: path
description: "UUID of either the parent portfolio or fund
\n Example: 36f897c5-f700-4dd1-8c4a-38c4ae90419e"
required: true
schema:
type: string
- name: building_id
in: path
description: 'Example: 8e6f99d7-f1e2-4ca7-be08-43091696d8c5'
required: true
schema:
type: string
- name: page
in: query
default: 1
schema:
type: integer
- name: size
in: query
description: The max page size is limited to 200 returned results
default: 25
schema:
type: integer
responses:
'200':
description: Portfolio or Fund / Building specific rating list
content:
application/vnd.api+json:
example:
data:
- id: 3be072e9-d07f-4966-9fba-3e5522c72a61
type: ratings
attributes:
ratingType: BBC Effinergie
ratingName: A Rating
score: 12
ratingDate: '2026-01-27'
expirationDate: '2026-12-27'
notes: some notes
importedAt: '2026-01-31 05:33:39'
importState: CONFIRMED
updatedAt: '2026-01-11 12:31:53'
isWholeBuilding: false
relationships:
building:
data:
id: 64f31895-b292-475e-b15a-14f8770e7773
type: buildings
links:
self: /portfolios/94c207d7-1026-4af3-82f8-79a17436804b/buildings/64f31895-b292-475e-b15a-14f8770e7773
links:
self: /portfolios/94c207d7-1026-4af3-82f8-79a17436804b/buildings/64f31895-b292-475e-b15a-14f8770e7773/ratings/3be072e9-d07f-4966-9fba-3e5522c72a61
- id: 71317f16-c012-44c3-9f09-68b9d10ed23a
type: ratings
attributes:
ratingType: OTHER
ratingName: null
score: 67
ratingDate: '2026-04-19'
expirationDate: '2026-08-30'
notes: null
importedAt: null
importState: null
updatedAt: '2025-12-14 16:49:22'
isWholeBuilding: true
relationships:
building:
data:
id: 64f31895-b292-475e-b15a-14f8770e7773
type: buildings
links:
self: /portfolios/94c207d7-1026-4af3-82f8-79a17436804b/buildings/64f31895-b292-475e-b15a-14f8770e7773
links:
self: /portfolios/94c207d7-1026-4af3-82f8-79a17436804b/buildings/64f31895-b292-475e-b15a-14f8770e7773/ratings/3be072e9-d07f-4966-9fba-3e5522c72a61
links:
self: /core/v0/portfolios/94c207d7-1026-4af3-82f8-79a17436804b/buildings/64f31895-b292-475e-b15a-14f8770e7773/ratings?size=2&page=2
first: /core/v0/portfolios/94c207d7-1026-4af3-82f8-79a17436804b/buildings/64f31895-b292-475e-b15a-14f8770e7773/ratings?size=2&page=1
meta:
page:
number: 2
size: 2
totalPages: 2
totalElements: 6
schema:
$ref: '#/components/schemas/json_api'
'404':
description: Not Found
content:
application/vnd.api+json:
example:
errors:
- status: '404'
title: Not Found
detail: Could not find building 2c44c279-c605-440d-9b62-ec75d925d12d in portfolio 3249bc8d-cd1d-4027-a288-555bc092c703
schema:
$ref: '#/components/schemas/json_api'
'401':
description: Unauthorized Request
content:
application/vnd.api+json:
example:
errors:
- status: '401'
title: Unauthorized
detail: Unauthorized Request
schema:
$ref: '#/components/schemas/json_api'
'400':
description: Bad Request
content:
application/vnd.api+json:
example:
errors:
- status: '400'
title: Bad Request
detail: An invalid UUID parameter was submitted with the request (portfolio_id)
schema:
$ref: '#/components/schemas/json_api'
'502':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '502'
title: Bad Gateway
detail: A Measurabl Server is down, please try again later
schema:
$ref: '#/components/schemas/json_api'
'500':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '500'
title: Internal Server Error
detail: An error occurred with the request
schema:
$ref: '#/components/schemas/json_api'
'503':
description: Service Unavailable
content:
application/vnd.api+json:
example:
errors:
- status: '503'
title: Service Unavailable
detail: A Measurabl Server is currently unavailable, please try again later
schema:
$ref: '#/components/schemas/json_api'
'408':
description: Request Timeout
content:
application/vnd.api+json:
example:
errors:
- status: '408'
title: Request Timeout
detail: The request you made has timed out
schema:
$ref: '#/components/schemas/json_api'
'429':
description: Too many requests
content:
application/vnd.api+json:
example:
errors:
- status: '429'
title: Too Many Requests
detail: Rate Limit Exceeded
schema:
$ref: '#/components/schemas/json_api'
'403':
description: unauthorized request
content:
application/vnd.api+json:
example:
errors:
- status: '403'
title: Forbidden
detail: 'A valid auth token is required.
POST to ''/token'' with a valid ''key'' and ''secret'' to get an auth token.
'
schema:
$ref: '#/components/schemas/json_api'
/core/v0/portfolios/{portfolio_id}/buildings/{building_id}/spaces/{space_id}/certifications:
get:
summary: Returns a list of certifications for a specific space in a specified building
tags:
- Space Certifications
security:
- OAuth2: []
parameters:
- name: portfolio_id
in: path
description: "UUID of either the parent portfolio or fund
\n Example: e43e6f47-848d-47df-980f-196c8a647aad"
required: true
schema:
type: string
- name: building_id
in: path
description: 'Example: f043b802-268a-4ab4-955d-2a0d4c05689b'
required: true
schema:
type: string
- name: space_id
in: path
description: 'Example: b366eb76-5d85-4cc2-9541-0a6a1ec04cfd'
required: true
schema:
type: string
- name: filter
in: query
description: "Filter by any attribute available via the endpoint.
\n \n \
\ - certificationDate=ge=2022-11-01 will query for certifications dated at or after the\
\ set date.
\n - isCustomType==true will query for only those certifications\
\ that are a custom type.
\n
"
schema:
type: string
- name: page
in: query
default: 1
schema:
type: integer
- name: size
in: query
description: The max page size is limited to 200 returned results
default: 25
schema:
type: integer
responses:
'200':
description: Portfolio or Fund / Building / Space list of certifications
content:
application/vnd.api+json:
example:
data:
- id: 29fe3bd5-f331-47b5-884a-d4314b01ca45
type: certifications
attributes:
isCustomType: true
certificationType: AirRated AirScore
certificationDate: '2026-04-15'
expirationDate: '2026-09-26'
importedAt: '2026-07-15 08:16:37'
importState: CONFIRMED
isWholeBuilding: false
notes: some notes
dataSource: MANUAL
accoladeLevel: null
relationships:
space:
data:
id: 23d6e80b-e3d7-4824-a17d-a9d42d3ce96c
type: spaces
links:
self: /portfolios/3e704ea1-9bf9-4d11-a2d2-bf50efacf132/buildings/e33a54a4-26b5-4e8a-bead-8559d43ff442/spaces/23d6e80b-e3d7-4824-a17d-a9d42d3ce96c
links:
self: /portfolios/3e704ea1-9bf9-4d11-a2d2-bf50efacf132/buildings/e33a54a4-26b5-4e8a-bead-8559d43ff442/certifications/29fe3bd5-f331-47b5-884a-d4314b01ca45
- id: 304ed1da-81fc-4ae7-83ba-7d2cb0c0a2b0
type: certifications
attributes:
isCustomType: true
certificationType: CALGreen
certificationDate: '2026-06-14'
expirationDate: '2026-10-15'
importedAt: '2026-04-06 07:07:00'
importState: CONFIRMED
isWholeBuilding: true
notes: some notes
dataSource: MANUAL
accoladeLevel: null
relationships:
space:
data:
id: 23d6e80b-e3d7-4824-a17d-a9d42d3ce96c
type: spaces
links:
self: /portfolios/3e704ea1-9bf9-4d11-a2d2-bf50efacf132/buildings/e33a54a4-26b5-4e8a-bead-8559d43ff442/spaces/23d6e80b-e3d7-4824-a17d-a9d42d3ce96c
links:
self: /portfolios/3e704ea1-9bf9-4d11-a2d2-bf50efacf132/buildings/e33a54a4-26b5-4e8a-bead-8559d43ff442/certifications/304ed1da-81fc-4ae7-83ba-7d2cb0c0a2b0
links:
self: /portfolios/3e704ea1-9bf9-4d11-a2d2-bf50efacf132/buildings/e33a54a4-26b5-4e8a-bead-8559d43ff442/spaces/23d6e80b-e3d7-4824-a17d-a9d42d3ce96c/certifications/?size=2&page=1
first: /portfolios/3e704ea1-9bf9-4d11-a2d2-bf50efacf132/buildings/e33a54a4-26b5-4e8a-bead-8559d43ff442/spaces/23d6e80b-e3d7-4824-a17d-a9d42d3ce96c/certifications/?size=2&page=1
last: /portfolios/3e704ea1-9bf9-4d11-a2d2-bf50efacf132/buildings/e33a54a4-26b5-4e8a-bead-8559d43ff442/spaces/23d6e80b-e3d7-4824-a17d-a9d42d3ce96c/certifications/?size=2&page=2
next: /portfolios/3e704ea1-9bf9-4d11-a2d2-bf50efacf132/buildings/e33a54a4-26b5-4e8a-bead-8559d43ff442/spaces/23d6e80b-e3d7-4824-a17d-a9d42d3ce96c/certifications/?size=2&page=2
meta:
page:
number: 1
size: 2
totalPages: 2
totalElements: 4
schema:
$ref: '#/components/schemas/json_api'
'404':
description: Not Found
content:
application/vnd.api+json:
example:
errors:
- status: '404'
title: Not Found
detail: Could not find space 34409e48-f64e-4f51-aaa9-3bdc7f16af6e in building d9d4b108-aeee-401b-a010-491368ace6b5
schema:
$ref: '#/components/schemas/json_api'
'401':
description: Unauthorized Request
content:
application/vnd.api+json:
example:
errors:
- status: '401'
title: Unauthorized
detail: Unauthorized Request
schema:
$ref: '#/components/schemas/json_api'
'400':
description: Bad Request
content:
application/vnd.api+json:
example:
errors:
- status: '400'
title: Bad Request
detail: An invalid UUID parameter was submitted with the request (portfolio_id)
schema:
$ref: '#/components/schemas/json_api'
'502':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '502'
title: Bad Gateway
detail: A Measurabl Server is down, please try again later
schema:
$ref: '#/components/schemas/json_api'
'500':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '500'
title: Internal Server Error
detail: An error occurred with the request
schema:
$ref: '#/components/schemas/json_api'
'503':
description: Service Unavailable
content:
application/vnd.api+json:
example:
errors:
- status: '503'
title: Service Unavailable
detail: A Measurabl Server is currently unavailable, please try again later
schema:
$ref: '#/components/schemas/json_api'
'408':
description: Request Timeout
content:
application/vnd.api+json:
example:
errors:
- status: '408'
title: Request Timeout
detail: The request you made has timed out
schema:
$ref: '#/components/schemas/json_api'
'429':
description: Too many requests
content:
application/vnd.api+json:
example:
errors:
- status: '429'
title: Too Many Requests
detail: Rate Limit Exceeded
schema:
$ref: '#/components/schemas/json_api'
'403':
description: unauthorized request
content:
application/vnd.api+json:
example:
errors:
- status: '403'
title: Forbidden
detail: 'A valid auth token is required.
POST to ''/token'' with a valid ''key'' and ''secret'' to get an auth token.
'
schema:
$ref: '#/components/schemas/json_api'
/core/v0/portfolios/{portfolio_id}/buildings/{building_id}/spaces/{space_id}/ratings:
get:
summary: Returns a list of ratings for a specific space in a specified building
tags:
- Space Ratings
security:
- OAuth2: []
parameters:
- name: portfolio_id
in: path
description: "UUID of either the parent portfolio or fund
\n Example: 0c1f567b-ba23-44b7-ada3-713c966f6f0e"
required: true
schema:
type: string
- name: building_id
in: path
description: 'Example: 51a8e325-4ce9-481b-a6ee-830ab1787c5e'
required: true
schema:
type: string
- name: space_id
in: path
description: 'Example: baa9ca58-6c28-42d4-bc7b-88f19324c3ff'
required: true
schema:
type: string
- name: filter
in: query
description: "Filter by any attribute available via the endpoint.
\n \n \
\ - ratingDate=ge=2022-05-08 will query for ratings dated at or after the set date.
\n\
\ - ratingType==OTHER will query for only those ratings that are type 'OTHER'.
\n\
\
"
schema:
type: string
- name: page
in: query
default: 1
schema:
type: integer
- name: size
in: query
description: The max page size is limited to 200 returned results
default: 25
schema:
type: integer
responses:
'200':
description: Portfolio or Fund / Building / Space list of ratings
content:
application/vnd.api+json:
example:
data:
- id: 6218e3be-ca69-47c9-a0c4-80f0dbc5a97f
type: ratings
attributes:
ratingType: BBC Effinergie
ratingName: A Rating
score: 8
ratingDate: '2026-02-01'
expirationDate: '2026-09-04'
notes: Some notes
importedAt: '2026-05-31 23:39:56'
importState: CONFIRMED
updatedAt: '2025-12-17 07:42:37'
isWholeBuilding: true
relationships:
space:
data:
id: 6745df8b-8f05-4afa-8526-85d0e5b899a1
type: spaces
links:
self: /portfolios/ee66edfe-4001-42f7-be01-f4c62fbb34fb/buildings/0c4b13df-bcaf-4e58-96a7-7d09aa0a0e70/spaces/6745df8b-8f05-4afa-8526-85d0e5b899a1
links:
self: /portfolios/ee66edfe-4001-42f7-be01-f4c62fbb34fb/buildings/0c4b13df-bcaf-4e58-96a7-7d09aa0a0e70/ratings/6218e3be-ca69-47c9-a0c4-80f0dbc5a97f
- id: 727fefb7-96b5-4fa4-8a3e-2441111ddd56
type: ratings
attributes:
ratingType: OTHER
ratingName: null
score: 80
ratingDate: '2026-06-09'
expirationDate: '2026-09-17'
notes: null
importedAt: null
importState: null
updatedAt: '2025-08-27 16:25:00'
isWholeBuilding: false
relationships:
space:
data:
id: 6745df8b-8f05-4afa-8526-85d0e5b899a1
type: spaces
links:
self: /portfolios/ee66edfe-4001-42f7-be01-f4c62fbb34fb/buildings/0c4b13df-bcaf-4e58-96a7-7d09aa0a0e70/spaces/6745df8b-8f05-4afa-8526-85d0e5b899a1
links:
self: /portfolios/ee66edfe-4001-42f7-be01-f4c62fbb34fb/buildings/0c4b13df-bcaf-4e58-96a7-7d09aa0a0e70/ratings/727fefb7-96b5-4fa4-8a3e-2441111ddd56
links:
self: /portfolios/ee66edfe-4001-42f7-be01-f4c62fbb34fb/buildings/0c4b13df-bcaf-4e58-96a7-7d09aa0a0e70/spaces/6745df8b-8f05-4afa-8526-85d0e5b899a1/ratings/?size=2&page=1
first: /portfolios/ee66edfe-4001-42f7-be01-f4c62fbb34fb/buildings/0c4b13df-bcaf-4e58-96a7-7d09aa0a0e70/spaces/6745df8b-8f05-4afa-8526-85d0e5b899a1/ratings/?size=2&page=1
last: /portfolios/ee66edfe-4001-42f7-be01-f4c62fbb34fb/buildings/0c4b13df-bcaf-4e58-96a7-7d09aa0a0e70/spaces/6745df8b-8f05-4afa-8526-85d0e5b899a1/ratings/?size=2&page=2
next: /portfolios/ee66edfe-4001-42f7-be01-f4c62fbb34fb/buildings/0c4b13df-bcaf-4e58-96a7-7d09aa0a0e70/spaces/6745df8b-8f05-4afa-8526-85d0e5b899a1/ratings/?size=2&page=2
meta:
page:
number: 1
size: 2
totalPages: 2
totalElements: 4
schema:
$ref: '#/components/schemas/json_api'
'404':
description: Not Found
content:
application/vnd.api+json:
example:
errors:
- status: '404'
title: Not Found
detail: Could not find space 8b1c6077-4e25-43a4-9454-aff398b146ec in building 635ad912-6ff1-43bd-93f4-d126a5259706
schema:
$ref: '#/components/schemas/json_api'
'401':
description: Unauthorized Request
content:
application/vnd.api+json:
example:
errors:
- status: '401'
title: Unauthorized
detail: Unauthorized Request
schema:
$ref: '#/components/schemas/json_api'
'400':
description: Bad Request
content:
application/vnd.api+json:
example:
errors:
- status: '400'
title: Bad Request
detail: An invalid UUID parameter was submitted with the request (portfolio_id)
schema:
$ref: '#/components/schemas/json_api'
'502':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '502'
title: Bad Gateway
detail: A Measurabl Server is down, please try again later
schema:
$ref: '#/components/schemas/json_api'
'500':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '500'
title: Internal Server Error
detail: An error occurred with the request
schema:
$ref: '#/components/schemas/json_api'
'503':
description: Service Unavailable
content:
application/vnd.api+json:
example:
errors:
- status: '503'
title: Service Unavailable
detail: A Measurabl Server is currently unavailable, please try again later
schema:
$ref: '#/components/schemas/json_api'
'408':
description: Request Timeout
content:
application/vnd.api+json:
example:
errors:
- status: '408'
title: Request Timeout
detail: The request you made has timed out
schema:
$ref: '#/components/schemas/json_api'
'429':
description: Too many requests
content:
application/vnd.api+json:
example:
errors:
- status: '429'
title: Too Many Requests
detail: Rate Limit Exceeded
schema:
$ref: '#/components/schemas/json_api'
'403':
description: unauthorized request
content:
application/vnd.api+json:
example:
errors:
- status: '403'
title: Forbidden
detail: 'A valid auth token is required.
POST to ''/token'' with a valid ''key'' and ''secret'' to get an auth token.
'
schema:
$ref: '#/components/schemas/json_api'
/core/v0/portfolios/{portfolio_id}/buildings/{building_id}/spaces:
post:
summary: Creates space for a specified building
tags:
- Spaces
security:
- OAuth2: []
parameters:
- name: portfolio_id
in: path
description: 'Example: a5b8cf61-c294-4e59-b1fa-b4732511ef57'
required: true
schema:
type: string
- name: building_id
in: path
description: 'Example: 1a9e7262-8f03-46e2-96de-e384ef56175f'
required: true
schema:
type: string
responses:
'200':
description: Portfolio/Building specific space
content:
application/vnd.api+json:
example:
data:
id: 8a698998-ec63-419b-8123-b85238facd48
type: spaces
attributes:
propertyType: Financial Office
name: Office Space
common: true
floorAreaSqFt: 8639
allocation: 62
estarSpaceId: 17829744
customized: false
relationships:
building:
data:
id: 9eb479f9-2d84-4049-bd00-41c618822908
type: buildings
links:
self: /portfolios/9ce9e831-df37-4def-8332-d949c3bce210/buildings/9eb479f9-2d84-4049-bd00-41c618822908
links:
self: /portfolios/9ce9e831-df37-4def-8332-d949c3bce210/buildings/9eb479f9-2d84-4049-bd00-41c618822908/spaces/8a698998-ec63-419b-8123-b85238facd48
schema:
$ref: '#/components/schemas/json_api'
'404':
description: Not Found
content:
application/vnd.api+json:
example:
errors:
- status: '404'
title: Not Found
detail: Could not find building ed29233f-1f93-4423-bc6e-34099beda236 in portfolio 8e9abf2c-80cc-4deb-9a5d-4428eac3ea3a
schema:
$ref: '#/components/schemas/json_api'
'401':
description: Unauthorized Request
content:
application/vnd.api+json:
example:
errors:
- status: '401'
title: Unauthorized
detail: Unauthorized Request
schema:
$ref: '#/components/schemas/json_api'
'400':
description: Bad Request
content:
application/vnd.api+json:
example:
errors:
- status: '400'
title: Bad Request
detail: An invalid UUID parameter was submitted with the request (portfolio_id)
schema:
$ref: '#/components/schemas/json_api'
'502':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '502'
title: Bad Gateway
detail: A Measurabl Server is down, please try again later
schema:
$ref: '#/components/schemas/json_api'
'500':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '500'
title: Internal Server Error
detail: An error occurred with the request
schema:
$ref: '#/components/schemas/json_api'
'503':
description: Service Unavailable
content:
application/vnd.api+json:
example:
errors:
- status: '503'
title: Service Unavailable
detail: A Measurabl Server is currently unavailable, please try again later
schema:
$ref: '#/components/schemas/json_api'
'408':
description: Request Timeout
content:
application/vnd.api+json:
example:
errors:
- status: '408'
title: Request Timeout
detail: The request you made has timed out
schema:
$ref: '#/components/schemas/json_api'
'429':
description: Too many requests
content:
application/vnd.api+json:
example:
errors:
- status: '429'
title: Too Many Requests
detail: Rate Limit Exceeded
schema:
$ref: '#/components/schemas/json_api'
'403':
description: unauthorized request
content:
application/vnd.api+json:
example:
errors:
- status: '403'
title: Forbidden
detail: 'A valid auth token is required.
POST to ''/token'' with a valid ''key'' and ''secret'' to get an auth token.
'
schema:
$ref: '#/components/schemas/json_api'
requestBody:
content:
application/vnd.api+json:
schema:
type: object
properties:
data:
type: object
properties:
attributes:
type: object
properties:
name:
type: string
propertyType:
type: string
common:
type: boolean
floorAreaSqFt:
type: number
required:
- name
- propertyType
- common
- floorAreaSqFt
example:
data:
type: spaces
attributes:
name: New Space
propertyType: Financial Office
common: false
floorAreaSqFt: 4108
required: true
description: Request body used to create a space associated with a building
get:
summary: Returns a list of spaces for a specified building
tags:
- Spaces
security:
- OAuth2: []
parameters:
- name: portfolio_id
in: path
description: "UUID of either the parent portfolio or fund
\n Example: ad838cbe-650a-4e93-8d84-58e8abd3f272"
required: true
schema:
type: string
- name: building_id
in: path
description: 'Example: ecc01f7d-2732-4ddf-900a-c4cc40959727'
required: true
schema:
type: string
- name: page
in: query
default: 1
schema:
type: integer
- name: size
in: query
description: The max page size is limited to 200 returned results
default: 25
schema:
type: integer
responses:
'200':
description: Portfolio/Building specific space
content:
application/vnd.api+json:
example:
data:
- id: f4b41ff0-c657-45c7-9c9c-4650d34fcb6e
type: spaces
attributes:
propertyType: Financial Office
name: Our Office Space
common: true
floorAreaSqFt: 6765
allocation: 50
estarSpaceId: 1905762
customized: false
relationships:
building:
data:
id: 9fea95f2-3b8b-4b0b-99e7-627e612506a6
type: buildings
links:
self: /portfolios/06e3edd1-cbad-44f2-8d8e-16b016844def/buildings/9fea95f2-3b8b-4b0b-99e7-627e612506a6
links:
self: /portfolios/06e3edd1-cbad-44f2-8d8e-16b016844def/buildings/9fea95f2-3b8b-4b0b-99e7-627e612506a6/spaces/f4b41ff0-c657-45c7-9c9c-4650d34fcb6e
- id: 5786ebf4-bc31-4c91-b3b6-7ca5db0fe51e
type: spaces
attributes:
propertyType: Office
name: Another Office Building
common: false
floorAreaSqFt: 920
allocation: 78
estarSpaceId: 29901759
customized: true
relationships:
building:
data:
id: 9fea95f2-3b8b-4b0b-99e7-627e612506a6
type: buildings
links:
self: /portfolios/06e3edd1-cbad-44f2-8d8e-16b016844def/buildings/9fea95f2-3b8b-4b0b-99e7-627e612506a6
links:
self: /portfolios/06e3edd1-cbad-44f2-8d8e-16b016844def/buildings/9fea95f2-3b8b-4b0b-99e7-627e612506a6/spaces/5786ebf4-bc31-4c91-b3b6-7ca5db0fe51e
links:
self: /portfolios/06e3edd1-cbad-44f2-8d8e-16b016844def/buildings/9fea95f2-3b8b-4b0b-99e7-627e612506a6/spaces/?size=2&page=1
first: /portfolios/06e3edd1-cbad-44f2-8d8e-16b016844def/buildings/9fea95f2-3b8b-4b0b-99e7-627e612506a6/spaces/?size=2&page=1
last: /portfolios/06e3edd1-cbad-44f2-8d8e-16b016844def/buildings/9fea95f2-3b8b-4b0b-99e7-627e612506a6/spaces/?size=2&page=2
next: /portfolios/06e3edd1-cbad-44f2-8d8e-16b016844def/buildings/9fea95f2-3b8b-4b0b-99e7-627e612506a6/spaces/?size=2&page=2
meta:
page:
number: 1
size: 2
totalPages: 2
totalElements: 3
schema:
$ref: '#/components/schemas/json_api'
'404':
description: Not Found
content:
application/vnd.api+json:
example:
errors:
- status: '404'
title: Not Found
detail: Could not find building e17dbb60-5400-4789-ac7e-10ed885ce4f5 in portfolio f986a801-1d04-4a71-b9d7-4b23ff865bec
schema:
$ref: '#/components/schemas/json_api'
'401':
description: Unauthorized Request
content:
application/vnd.api+json:
example:
errors:
- status: '401'
title: Unauthorized
detail: Unauthorized Request
schema:
$ref: '#/components/schemas/json_api'
'400':
description: Bad Request
content:
application/vnd.api+json:
example:
errors:
- status: '400'
title: Bad Request
detail: An invalid UUID parameter was submitted with the request (portfolio_id)
schema:
$ref: '#/components/schemas/json_api'
'502':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '502'
title: Bad Gateway
detail: A Measurabl Server is down, please try again later
schema:
$ref: '#/components/schemas/json_api'
'500':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '500'
title: Internal Server Error
detail: An error occurred with the request
schema:
$ref: '#/components/schemas/json_api'
'503':
description: Service Unavailable
content:
application/vnd.api+json:
example:
errors:
- status: '503'
title: Service Unavailable
detail: A Measurabl Server is currently unavailable, please try again later
schema:
$ref: '#/components/schemas/json_api'
'408':
description: Request Timeout
content:
application/vnd.api+json:
example:
errors:
- status: '408'
title: Request Timeout
detail: The request you made has timed out
schema:
$ref: '#/components/schemas/json_api'
'429':
description: Too many requests
content:
application/vnd.api+json:
example:
errors:
- status: '429'
title: Too Many Requests
detail: Rate Limit Exceeded
schema:
$ref: '#/components/schemas/json_api'
'403':
description: unauthorized request
content:
application/vnd.api+json:
example:
errors:
- status: '403'
title: Forbidden
detail: 'A valid auth token is required.
POST to ''/token'' with a valid ''key'' and ''secret'' to get an auth token.
'
schema:
$ref: '#/components/schemas/json_api'
/core/v0/portfolios/{portfolio_id}/buildings/{building_id}/spaces/{space_id}:
delete:
summary: Deletes a specific space for a specified building
tags:
- Spaces
security:
- OAuth2: []
parameters:
- name: portfolio_id
in: path
description: "UUID for the parent portfolio
\n Example: 3e6c2f1a-20f5-4b95-bafe-2d771b1d8b60"
required: true
schema:
type: string
- name: building_id
in: path
description: 'Example: bbd04c49-64a6-45f1-9b97-0b05f90d4914'
required: true
schema:
type: string
- name: space_id
in: path
description: 'Example: 8356a90d-bce3-447d-bb50-4eb2c70ddf7f'
required: true
schema:
type: string
responses:
'204':
description: Space Deleted Successfully
content:
application/vnd.api+json:
example: ''
'400':
description: Bad Request
content:
application/vnd.api+json:
example:
errors:
- status: '400'
title: Bad Request
detail: An invalid UUID parameter was submitted with the request (portfolio_id)
schema:
$ref: '#/components/schemas/json_api'
'404':
description: Not Found
content:
application/vnd.api+json:
example:
errors:
- status: '404'
title: Not Found
detail: Could not find space 04109d30-5910-4262-9787-3ceb5e29a112 in building 47f404e1-5751-459e-9389-c75a54bb3a49
in portfolio 7fcbad76-f1c7-42ea-aecc-fa060731aee2
schema:
$ref: '#/components/schemas/json_api'
'401':
description: Unauthorized Request
content:
application/vnd.api+json:
example:
errors:
- status: '401'
title: Unauthorized
detail: Unauthorized Request
schema:
$ref: '#/components/schemas/json_api'
'502':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '502'
title: Bad Gateway
detail: A Measurabl Server is down, please try again later
schema:
$ref: '#/components/schemas/json_api'
'500':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '500'
title: Internal Server Error
detail: An error occurred with the request
schema:
$ref: '#/components/schemas/json_api'
'503':
description: Service Unavailable
content:
application/vnd.api+json:
example:
errors:
- status: '503'
title: Service Unavailable
detail: A Measurabl Server is currently unavailable, please try again later
schema:
$ref: '#/components/schemas/json_api'
'408':
description: Request Timeout
content:
application/vnd.api+json:
example:
errors:
- status: '408'
title: Request Timeout
detail: The request you made has timed out
schema:
$ref: '#/components/schemas/json_api'
'429':
description: Too many requests
content:
application/vnd.api+json:
example:
errors:
- status: '429'
title: Too Many Requests
detail: Rate Limit Exceeded
schema:
$ref: '#/components/schemas/json_api'
'403':
description: unauthorized request
content:
application/vnd.api+json:
example:
errors:
- status: '403'
title: Forbidden
detail: 'A valid auth token is required.
POST to ''/token'' with a valid ''key'' and ''secret'' to get an auth token.
'
schema:
$ref: '#/components/schemas/json_api'
get:
summary: Returns details of a specific space for a specified building
tags:
- Spaces
security:
- OAuth2: []
parameters:
- name: portfolio_id
in: path
description: "UUID of either the parent portfolio or fund
\n Example: b3488eca-a284-4c56-bdcf-a94709a49717"
required: true
schema:
type: string
- name: building_id
in: path
description: 'Example: 1c00f770-1600-42a9-a335-881b5b48772e'
required: true
schema:
type: string
- name: space_id
in: path
description: 'Example: 3e57bf30-caad-4f51-ae39-ea9a448c38ae'
required: true
schema:
type: string
responses:
'200':
description: Portfolio or Fund / Building specific space
content:
application/vnd.api+json:
example:
data:
id: 127af6c6-c3ee-4957-aab0-85a20394e1a8
type: spaces
attributes:
propertyType: Financial Office
name: Office Space
common: false
floorAreaSqFt: 3795
allocation: 63
estarSpaceId: 44844188
customized: true
relationships:
building:
data:
id: 79059bb2-6fb7-4f39-b5e2-c02f941918aa
type: buildings
links:
self: /portfolios/fafa1342-6ecc-4a4a-a9fe-7199513b9f12/buildings/79059bb2-6fb7-4f39-b5e2-c02f941918aa
links:
self: /portfolios/fafa1342-6ecc-4a4a-a9fe-7199513b9f12/buildings/79059bb2-6fb7-4f39-b5e2-c02f941918aa/spaces/127af6c6-c3ee-4957-aab0-85a20394e1a8
schema:
$ref: '#/components/schemas/json_api'
'404':
description: Not Found
content:
application/vnd.api+json:
example:
errors:
- status: '404'
title: Not Found
detail: Could not find space 54397974-809d-4b0d-bbfc-425562857be8 in building abf30b41-8877-4249-b163-ef303b5d324e
in portfolio 4782f3cd-3f21-46e4-82d4-5be44f4ae0ac
schema:
$ref: '#/components/schemas/json_api'
'401':
description: Unauthorized Request
content:
application/vnd.api+json:
example:
errors:
- status: '401'
title: Unauthorized
detail: Unauthorized Request
schema:
$ref: '#/components/schemas/json_api'
'400':
description: Bad Request
content:
application/vnd.api+json:
example:
errors:
- status: '400'
title: Bad Request
detail: An invalid UUID parameter was submitted with the request (portfolio_id)
schema:
$ref: '#/components/schemas/json_api'
'502':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '502'
title: Bad Gateway
detail: A Measurabl Server is down, please try again later
schema:
$ref: '#/components/schemas/json_api'
'500':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '500'
title: Internal Server Error
detail: An error occurred with the request
schema:
$ref: '#/components/schemas/json_api'
'503':
description: Service Unavailable
content:
application/vnd.api+json:
example:
errors:
- status: '503'
title: Service Unavailable
detail: A Measurabl Server is currently unavailable, please try again later
schema:
$ref: '#/components/schemas/json_api'
'408':
description: Request Timeout
content:
application/vnd.api+json:
example:
errors:
- status: '408'
title: Request Timeout
detail: The request you made has timed out
schema:
$ref: '#/components/schemas/json_api'
'429':
description: Too many requests
content:
application/vnd.api+json:
example:
errors:
- status: '429'
title: Too Many Requests
detail: Rate Limit Exceeded
schema:
$ref: '#/components/schemas/json_api'
'403':
description: unauthorized request
content:
application/vnd.api+json:
example:
errors:
- status: '403'
title: Forbidden
detail: 'A valid auth token is required.
POST to ''/token'' with a valid ''key'' and ''secret'' to get an auth token.
'
schema:
$ref: '#/components/schemas/json_api'
patch:
summary: Updates a specific space for a specified building
tags:
- Spaces
security:
- OAuth2: []
parameters:
- name: portfolio_id
in: path
description: "UUID for the parent portfolio
\n Example: 02cbb0a6-ce94-42ba-919d-6cdb26f90482"
required: true
schema:
type: string
- name: building_id
in: path
description: 'Example: fc170ca8-d19a-4f36-b92d-7deab59a074e'
required: true
schema:
type: string
- name: space_id
in: path
description: 'Example: 6aef4b6d-d054-4979-a9ff-e7f80519e648'
required: true
schema:
type: string
responses:
'200':
description: Portfolio / Building Specific Space Updated
content:
application/vnd.api+json:
example:
data:
id: d526fa46-f3ef-4b81-acd1-6fe7f603f1a1
type: spaces
attributes:
propertyType: Financial Office
name: Office Space
common: true
floorAreaSqFt: 6191
allocation: 15
estarSpaceId: 32647979
customized: false
relationships:
building:
data:
id: 9903057f-e608-4a14-b67b-da92a918f0d8
type: buildings
links:
self: /portfolios/0871952b-6f18-4243-8396-1dbd7edd204f/buildings/9903057f-e608-4a14-b67b-da92a918f0d8
links:
self: /portfolios/0871952b-6f18-4243-8396-1dbd7edd204f/buildings/9903057f-e608-4a14-b67b-da92a918f0d8/spaces/d526fa46-f3ef-4b81-acd1-6fe7f603f1a1
schema:
$ref: '#/components/schemas/json_api'
'404':
description: Not Found
content:
application/vnd.api+json:
example:
errors:
- status: '404'
title: Not Found
detail: Could not find space 50bc0cb5-fc13-40d0-b205-74ffb88aa709 for building b4a307db-abf7-408d-b92a-8e5cef727a58
in portfolio 18cbe890-7d32-42af-a1f6-ac8240156c13
schema:
$ref: '#/components/schemas/json_api'
'401':
description: Unauthorized Request
content:
application/vnd.api+json:
example:
errors:
- status: '401'
title: Unauthorized
detail: Unauthorized Request
schema:
$ref: '#/components/schemas/json_api'
'400':
description: Bad Request
content:
application/vnd.api+json:
example:
errors:
- status: '400'
title: Bad Request
detail: An invalid UUID parameter was submitted with the request (portfolio_id)
schema:
$ref: '#/components/schemas/json_api'
'502':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '502'
title: Bad Gateway
detail: A Measurabl Server is down, please try again later
schema:
$ref: '#/components/schemas/json_api'
'500':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '500'
title: Internal Server Error
detail: An error occurred with the request
schema:
$ref: '#/components/schemas/json_api'
'503':
description: Service Unavailable
content:
application/vnd.api+json:
example:
errors:
- status: '503'
title: Service Unavailable
detail: A Measurabl Server is currently unavailable, please try again later
schema:
$ref: '#/components/schemas/json_api'
'408':
description: Request Timeout
content:
application/vnd.api+json:
example:
errors:
- status: '408'
title: Request Timeout
detail: The request you made has timed out
schema:
$ref: '#/components/schemas/json_api'
'429':
description: Too many requests
content:
application/vnd.api+json:
example:
errors:
- status: '429'
title: Too Many Requests
detail: Rate Limit Exceeded
schema:
$ref: '#/components/schemas/json_api'
'403':
description: unauthorized request
content:
application/vnd.api+json:
example:
errors:
- status: '403'
title: Forbidden
detail: 'A valid auth token is required.
POST to ''/token'' with a valid ''key'' and ''secret'' to get an auth token.
'
schema:
$ref: '#/components/schemas/json_api'
requestBody:
content:
application/vnd.api+json:
schema:
type: object
properties:
data:
type: object
properties:
attributes:
id:
type: string
type: object
properties:
name:
type: string
propertyType:
type: string
floorAreaSqFt:
type: number
required:
- name
- propertyType
- common
- floorAreaSqFt
example:
data:
id: 3066bcef-b5ac-4027-9e38-f35baea768b7
type: spaces
attributes:
propertyType: Financial Office
name: New Space
floorAreaSqFt: 9840
required: true
description: Request body used to create a space associated with a building
/core/v0/portfolios/{portfolio_id}/buildings/{building_id}/waste_meters:
post:
summary: Creates a waste meter for a specified building
tags:
- Waste Meters
security:
- OAuth2: []
parameters:
- name: portfolio_id
in: path
description: "UUID for the parent portfolio
\n Example: 6556e062-30de-4726-bd5c-43a06cfb95d6"
required: true
schema:
type: string
- name: building_id
in: path
description: 'Example: e1ac370b-89cb-46a4-880f-1a9199031e15'
required: true
schema:
type: string
responses:
'200':
description: Portfolio / Building specific waste meter
content:
application/vnd.api+json:
example:
data:
id: 979d5e17-5d1e-4476-ad4f-32857703ac40
type: wasteMeters
attributes:
estarMeterId: null
meterType: Disposed - Trash
units: TONNES (METRIC)
name: Disposed - Trash
containerSize: null
activationDate: '2025-03-05'
deactivationDate: '2025-11-21'
autoActivationDate: false
currency: USD
intermittent: false
hazardous: true
updatedAt: '2026-03-22 00:00:00'
relationships:
building:
data:
id: fd400b55-e19e-46fa-82e4-f8f12e919b27
type: buildings
links:
self: /portfolios/8f5ecfb8-5cd7-4320-958d-89cc21254737/buildings/fd400b55-e19e-46fa-82e4-f8f12e919b27
links:
self: /portfolios/8f5ecfb8-5cd7-4320-958d-89cc21254737/buildings/fd400b55-e19e-46fa-82e4-f8f12e919b27/waste-meters/16f875f5-49d2-4dd9-b0c0-4c0910137bee
schema:
$ref: '#/components/schemas/json_api'
'404':
description: Not Found
content:
application/vnd.api+json:
example:
errors:
- status: '404'
title: Not Found
detail: Could not find building 0b92a1c8-b722-46ae-b736-9bdff885c377 in portfolio 7bb9443a-799f-4eca-97c5-ef8c81ef7e83
schema:
$ref: '#/components/schemas/json_api'
'401':
description: Unauthorized Request
content:
application/vnd.api+json:
example:
errors:
- status: '401'
title: Unauthorized
detail: Unauthorized Request
schema:
$ref: '#/components/schemas/json_api'
'400':
description: Bad Request
content:
application/vnd.api+json:
example:
errors:
- status: '400'
title: Bad Request
detail: An invalid UUID parameter was submitted with the request (portfolio_id)
schema:
$ref: '#/components/schemas/json_api'
'502':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '502'
title: Bad Gateway
detail: A Measurabl Server is down, please try again later
schema:
$ref: '#/components/schemas/json_api'
'500':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '500'
title: Internal Server Error
detail: An error occurred with the request
schema:
$ref: '#/components/schemas/json_api'
'503':
description: Service Unavailable
content:
application/vnd.api+json:
example:
errors:
- status: '503'
title: Service Unavailable
detail: A Measurabl Server is currently unavailable, please try again later
schema:
$ref: '#/components/schemas/json_api'
'408':
description: Request Timeout
content:
application/vnd.api+json:
example:
errors:
- status: '408'
title: Request Timeout
detail: The request you made has timed out
schema:
$ref: '#/components/schemas/json_api'
'429':
description: Too many requests
content:
application/vnd.api+json:
example:
errors:
- status: '429'
title: Too Many Requests
detail: Rate Limit Exceeded
schema:
$ref: '#/components/schemas/json_api'
'403':
description: unauthorized request
content:
application/vnd.api+json:
example:
errors:
- status: '403'
title: Forbidden
detail: 'A valid auth token is required.
POST to ''/token'' with a valid ''key'' and ''secret'' to get an auth token.
'
schema:
$ref: '#/components/schemas/json_api'
requestBody:
content:
application/vnd.api+json:
schema:
type: object
properties:
data:
type: object
properties:
attributes:
type: object
properties:
meterType:
type: string
units:
type: string
name:
type: string
containerSize:
type: decimal
activationDate:
type: string
deactivationDate:
type: string
autoActivationDate:
type: boolean
currency:
type: string
intermittent:
type: boolean
hazardous:
type: boolean
required:
- meterType
- units
- name
- currency
example:
data:
type: wasteMeters
attributes:
meterType: Disposed - Trash
units: TONNES (METRIC)
name: Disposed - Trash
containerSize: null
activationDate: '2019-08-01'
deactivationDate: '2022-09-23'
autoActivationDate: true
currency: USD
intermittent: false
hazardous: false
required: true
description: Request body used to create a waste meter associated with a building
get:
summary: Returns a list of waste meters for a specified building
tags:
- Waste Meters
security:
- OAuth2: []
parameters:
- name: portfolio_id
in: path
description: "UUID of either the parent portfolio or fund
\n Example: b35ae5fe-a075-47d3-975e-50316f9a617d"
required: true
schema:
type: string
- name: building_id
in: path
description: 'Example: 09791d5e-98cc-4b4a-b67d-237cc8700201'
required: true
schema:
type: string
- name: filter
in: query
description: "Filter by any attribute available via the endpoint.
\n \n \
\ - updatedAt=ge=2022-11-01T00:00 will query for Waste meters that were updated at or\
\ after the set date and UTC time.
\n - meterType==\"Disposed - Trash\" will\
\ query for only those meters of the specified meter type.
\n
"
schema:
type: string
- name: page
in: query
default: 1
schema:
type: integer
- name: size
in: query
description: The max page size is limited to 200 returned results
default: 25
schema:
type: integer
responses:
'200':
description: Portfolio or Fund / Building specific waste meter
content:
application/vnd.api+json:
example:
data:
- id: a6679b91-2973-4615-8e68-de0a297e469f
type: wasteMeters
attributes:
estarMeterId: 70361525
meterType: Disposed - Trash
units: TONNES (METRIC)
name: Intermittent Trash
containerSize: null
activationDate: '2024-03-31'
deactivationDate: '2024-12-27'
autoActivationDate: false
currency: USD
intermittent: false
hazardous: false
updatedAt: '2026-03-01 00:00:00'
relationships:
building:
data:
id: e12a72bc-220c-4626-8953-37cc530e6a31
type: buildings
links:
self: /portfolios/dcc26acf-4584-4e3d-b652-52ea108a313d/buildings/e12a72bc-220c-4626-8953-37cc530e6a31
links:
self: /portfolios/dcc26acf-4584-4e3d-b652-52ea108a313d/buildings/e12a72bc-220c-4626-8953-37cc530e6a31/waste-meters/a6679b91-2973-4615-8e68-de0a297e469f
- id: 11953c84-aa21-4a5f-a61e-48eaa7c6bce3
type: wasteMeters
attributes:
estarMeterId: 78750219
meterType: Recycled - Mixed Recyclables
units: pounds
name: Recycled- Mixed Recyclables
containerSize: null
activationDate: '2024-05-09'
deactivationDate: '2025-08-25'
autoActivationDate: false
currency: USD
intermittent: false
hazardous: false
updatedAt: '2026-01-15 00:00:00'
relationships:
building:
data:
id: e12a72bc-220c-4626-8953-37cc530e6a31
type: buildings
links:
self: /portfolios/dcc26acf-4584-4e3d-b652-52ea108a313d/buildings/e12a72bc-220c-4626-8953-37cc530e6a31
links:
self: /portfolios/dcc26acf-4584-4e3d-b652-52ea108a313d/buildings/e12a72bc-220c-4626-8953-37cc530e6a31/waste-meters/11953c84-aa21-4a5f-a61e-48eaa7c6bce3
- id: 8b24e1f3-7f65-4722-8598-7262a8816926
type: wasteMeters
attributes:
estarMeterId: 75035732
meterType: Recycled - Batteries
units: Kilogram
name: Recycled - Batteries
containerSize: null
activationDate: '2024-02-11'
deactivationDate: null
autoActivationDate: false
currency: USD
intermittent: false
hazardous: true
updatedAt: '2026-05-06 00:00:00'
relationships:
building:
data:
id: e12a72bc-220c-4626-8953-37cc530e6a31
type: buildings
links:
self: /portfolios/dcc26acf-4584-4e3d-b652-52ea108a313d/buildings/e12a72bc-220c-4626-8953-37cc530e6a31
links:
self: /portfolios/dcc26acf-4584-4e3d-b652-52ea108a313d/buildings/e12a72bc-220c-4626-8953-37cc530e6a31/waste-meters/8b24e1f3-7f65-4722-8598-7262a8816926
- id: 35431151-d0ce-41af-9c9e-8b7ec7f0dc85
type: wasteMeters
attributes:
estarMeterId: 7182734
meterType: Composted - Cardboard/Corrugated Containers
units: TONNES (METRIC)
name: Composted - Cardboard/Corrugated Containers
containerSize: null
activationDate: '2024-05-10'
deactivationDate: null
autoActivationDate: true
currency: USD
intermittent: true
hazardous: false
updatedAt: '2026-04-10 00:00:00'
relationships:
building:
data:
id: e12a72bc-220c-4626-8953-37cc530e6a31
type: buildings
links:
self: /portfolios/dcc26acf-4584-4e3d-b652-52ea108a313d/buildings/e12a72bc-220c-4626-8953-37cc530e6a31
links:
self: /portfolios/dcc26acf-4584-4e3d-b652-52ea108a313d/buildings/e12a72bc-220c-4626-8953-37cc530e6a31/waste-meters/35431151-d0ce-41af-9c9e-8b7ec7f0dc85
- id: 7cdcae9f-d967-420f-9379-469e627ae39e
type: wasteMeters
attributes:
estarMeterId: 31046927
meterType: Recycled - Appliances
units: pounds
name: Recycled - Appliances
containerSize: null
activationDate: '2023-08-09'
deactivationDate: null
autoActivationDate: true
currency: USD
intermittent: false
hazardous: false
updatedAt: '2026-06-22 00:00:00'
relationships:
building:
data:
id: e12a72bc-220c-4626-8953-37cc530e6a31
type: buildings
links:
self: /portfolios/dcc26acf-4584-4e3d-b652-52ea108a313d/buildings/e12a72bc-220c-4626-8953-37cc530e6a31
links:
self: /portfolios/dcc26acf-4584-4e3d-b652-52ea108a313d/buildings/e12a72bc-220c-4626-8953-37cc530e6a31/waste-meters/7cdcae9f-d967-420f-9379-469e627ae39e
links:
self: /core/v0/portfolios/dcc26acf-4584-4e3d-b652-52ea108a313d/buildings/e12a72bc-220c-4626-8953-37cc530e6a31/waste-meters?size=5&page=3
first: /core/v0/portfolios/dcc26acf-4584-4e3d-b652-52ea108a313d/buildings/e12a72bc-220c-4626-8953-37cc530e6a31/waste-meters?size=5&page=1
last: /core/v0/portfolios/dcc26acf-4584-4e3d-b652-52ea108a313d/buildings/e12a72bc-220c-4626-8953-37cc530e6a31/waste-meters?size=5&page=8
next: /core/v0/portfolios/dcc26acf-4584-4e3d-b652-52ea108a313d/buildings/e12a72bc-220c-4626-8953-37cc530e6a31/waste-meters?size=5&page=4
prev: /core/v0/portfolios/dcc26acf-4584-4e3d-b652-52ea108a313d/buildings/e12a72bc-220c-4626-8953-37cc530e6a31/waste-meters?size=5&page=2
meta:
page:
number: 1
size: 100
totalPages: 8
totalElements: 730
schema:
$ref: '#/components/schemas/json_api'
'404':
description: Not Found
content:
application/vnd.api+json:
example:
errors:
- status: '404'
title: Not Found
detail: Could not find building e173c49a-9e27-49a7-92a6-0d9a81427408 in portfolio 5d4cd41a-a4f6-47be-9320-dbd7777cd9dc
schema:
$ref: '#/components/schemas/json_api'
'401':
description: Unauthorized Request
content:
application/vnd.api+json:
example:
errors:
- status: '401'
title: Unauthorized
detail: Unauthorized Request
schema:
$ref: '#/components/schemas/json_api'
'400':
description: Bad Request
content:
application/vnd.api+json:
example:
errors:
- status: '400'
title: Bad Request
detail: An invalid UUID parameter was submitted with the request (portfolio_id)
schema:
$ref: '#/components/schemas/json_api'
'502':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '502'
title: Bad Gateway
detail: A Measurabl Server is down, please try again later
schema:
$ref: '#/components/schemas/json_api'
'500':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '500'
title: Internal Server Error
detail: An error occurred with the request
schema:
$ref: '#/components/schemas/json_api'
'503':
description: Service Unavailable
content:
application/vnd.api+json:
example:
errors:
- status: '503'
title: Service Unavailable
detail: A Measurabl Server is currently unavailable, please try again later
schema:
$ref: '#/components/schemas/json_api'
'408':
description: Request Timeout
content:
application/vnd.api+json:
example:
errors:
- status: '408'
title: Request Timeout
detail: The request you made has timed out
schema:
$ref: '#/components/schemas/json_api'
'429':
description: Too many requests
content:
application/vnd.api+json:
example:
errors:
- status: '429'
title: Too Many Requests
detail: Rate Limit Exceeded
schema:
$ref: '#/components/schemas/json_api'
'403':
description: unauthorized request
content:
application/vnd.api+json:
example:
errors:
- status: '403'
title: Forbidden
detail: 'A valid auth token is required.
POST to ''/token'' with a valid ''key'' and ''secret'' to get an auth token.
'
schema:
$ref: '#/components/schemas/json_api'
/core/v0/portfolios/{portfolio_id}/buildings/{building_id}/waste_meters/{waste_meter_id}:
delete:
summary: Deletes a specific waste meter for a specified building
description: 'Deleting the waste meter will also delete any waste meter readings associated with the waste meter.
'
tags:
- Waste Meters
security:
- OAuth2: []
parameters:
- name: portfolio_id
in: path
description: "UUID of either the parent portfolio or fund
\n Example: f401879f-8624-4052-b571-50c5045ed1df"
required: true
schema:
type: string
- name: building_id
in: path
description: 'Example: 4cbf6792-43ed-447a-a88e-a7de4ddbf182'
required: true
schema:
type: string
- name: waste_meter_id
in: path
description: 'Example: 98a86bcc-babf-42e5-b17b-35eff6f8f3c6'
required: true
schema:
type: string
responses:
'204':
description: Waste Meter Deleted Successfully
content:
application/vnd.api+json:
example: ''
'400':
description: Bad Request
content:
application/vnd.api+json:
example:
errors:
- status: '400'
title: Bad Request
detail: An invalid UUID parameter was submitted with the request (portfolio_id)
schema:
$ref: '#/components/schemas/json_api'
'404':
description: Not Found
content:
application/vnd.api+json:
example:
errors:
- status: '404'
title: Not Found
detail: Could not find waste meter 5afcf263-0619-4430-b991-ef50915b019f in building b4c9741a-58b8-42e5-bf61-9856fbd19300
in portfolio ae09e916-9298-45f0-8d37-19c13061fa03
schema:
$ref: '#/components/schemas/json_api'
'401':
description: Unauthorized Request
content:
application/vnd.api+json:
example:
errors:
- status: '401'
title: Unauthorized
detail: Unauthorized Request
schema:
$ref: '#/components/schemas/json_api'
'502':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '502'
title: Bad Gateway
detail: A Measurabl Server is down, please try again later
schema:
$ref: '#/components/schemas/json_api'
'500':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '500'
title: Internal Server Error
detail: An error occurred with the request
schema:
$ref: '#/components/schemas/json_api'
'503':
description: Service Unavailable
content:
application/vnd.api+json:
example:
errors:
- status: '503'
title: Service Unavailable
detail: A Measurabl Server is currently unavailable, please try again later
schema:
$ref: '#/components/schemas/json_api'
'408':
description: Request Timeout
content:
application/vnd.api+json:
example:
errors:
- status: '408'
title: Request Timeout
detail: The request you made has timed out
schema:
$ref: '#/components/schemas/json_api'
'429':
description: Too many requests
content:
application/vnd.api+json:
example:
errors:
- status: '429'
title: Too Many Requests
detail: Rate Limit Exceeded
schema:
$ref: '#/components/schemas/json_api'
'403':
description: unauthorized request
content:
application/vnd.api+json:
example:
errors:
- status: '403'
title: Forbidden
detail: 'A valid auth token is required.
POST to ''/token'' with a valid ''key'' and ''secret'' to get an auth token.
'
schema:
$ref: '#/components/schemas/json_api'
get:
summary: Returns a specific waste meter for a specified building
tags:
- Waste Meters
security:
- OAuth2: []
parameters:
- name: portfolio_id
in: path
description: "UUID of either the parent portfolio or fund
\n Example: 8926bdd6-24de-400f-a09a-08182cfa80cc"
required: true
schema:
type: string
- name: building_id
in: path
description: 'Example: 27e8da79-d3d9-45a3-9d68-504c2631599d'
required: true
schema:
type: string
- name: waste_meter_id
in: path
description: 'Example: 9baddc4b-5702-4212-8163-6b9607ac028b'
required: true
schema:
type: string
responses:
'200':
description: Portfolio or Fund / Building specific waste meter
content:
application/vnd.api+json:
example:
data:
id: 369abb6c-6360-4cd7-94ec-6a02df2aac2e
type: wasteMeters
attributes:
estarMeterId: 37077624
meterType: Disposed - Trash
units: TONNES (METRIC)
name: Intermittent Trash
containerSize: null
activationDate: '2024-12-01'
deactivationDate: null
autoActivationDate: false
currency: USD
intermittent: true
hazardous: true
updatedAt: '2026-05-27 00:00:00'
relationships:
building:
data:
id: bb34076c-c099-4d89-bb18-b99e4332f0a6
type: buildings
links:
self: /portfolios/a4eda804-530d-4e46-9b2a-08081255d7fe/buildings/bb34076c-c099-4d89-bb18-b99e4332f0a6
links:
self: /portfolios/a4eda804-530d-4e46-9b2a-08081255d7fe/buildings/bb34076c-c099-4d89-bb18-b99e4332f0a6/waste-meters/369abb6c-6360-4cd7-94ec-6a02df2aac2e
schema:
$ref: '#/components/schemas/json_api'
'404':
description: Not Found
content:
application/vnd.api+json:
example:
errors:
- status: '404'
title: Not Found
detail: Could not find waste meter a85e3252-41d8-49cb-8ad3-39d912a282f9 in building e5e4d326-ca3d-4a4c-9fd8-d13a7a008d4b
in portfolio 9289e0fa-8ee9-4132-a4db-b858d06412a0
schema:
$ref: '#/components/schemas/json_api'
'401':
description: Unauthorized Request
content:
application/vnd.api+json:
example:
errors:
- status: '401'
title: Unauthorized
detail: Unauthorized Request
schema:
$ref: '#/components/schemas/json_api'
'400':
description: Bad Request
content:
application/vnd.api+json:
example:
errors:
- status: '400'
title: Bad Request
detail: An invalid UUID parameter was submitted with the request (portfolio_id)
schema:
$ref: '#/components/schemas/json_api'
'502':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '502'
title: Bad Gateway
detail: A Measurabl Server is down, please try again later
schema:
$ref: '#/components/schemas/json_api'
'500':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '500'
title: Internal Server Error
detail: An error occurred with the request
schema:
$ref: '#/components/schemas/json_api'
'503':
description: Service Unavailable
content:
application/vnd.api+json:
example:
errors:
- status: '503'
title: Service Unavailable
detail: A Measurabl Server is currently unavailable, please try again later
schema:
$ref: '#/components/schemas/json_api'
'408':
description: Request Timeout
content:
application/vnd.api+json:
example:
errors:
- status: '408'
title: Request Timeout
detail: The request you made has timed out
schema:
$ref: '#/components/schemas/json_api'
'429':
description: Too many requests
content:
application/vnd.api+json:
example:
errors:
- status: '429'
title: Too Many Requests
detail: Rate Limit Exceeded
schema:
$ref: '#/components/schemas/json_api'
'403':
description: unauthorized request
content:
application/vnd.api+json:
example:
errors:
- status: '403'
title: Forbidden
detail: 'A valid auth token is required.
POST to ''/token'' with a valid ''key'' and ''secret'' to get an auth token.
'
schema:
$ref: '#/components/schemas/json_api'
patch:
summary: Updates a specific waste meter for a specified building
tags:
- Waste Meters
security:
- OAuth2: []
parameters:
- name: portfolio_id
in: path
description: "UUID of either the parent portfolio or fund
\n Example: 4ea32812-5af4-49ee-8e3d-f23be84ad14b"
required: true
schema:
type: string
- name: building_id
in: path
description: 'Example: e7927fbf-b2c9-4ae5-8712-867450195c36'
required: true
schema:
type: string
- name: waste_meter_id
in: path
description: 'Example: ca7d4dc8-8326-4770-b750-897b0c276324'
required: true
schema:
type: string
responses:
'200':
description: Portfolio / Building Specific Waste Meter Updated
content:
application/vnd.api+json:
example:
data:
id: 9fa329b0-e9ae-4851-8987-9311e76c031f
type: wasteMeters
attributes:
estarMeterId: null
meterType: Disposed - Trash
units: TONNES (METRIC)
name: New Name
containerSize: null
activationDate: '2024-10-23'
deactivationDate: null
autoActivationDate: false
currency: USD
intermittent: false
hazardous: false
updatedAt: '2025-11-22 00:00:00'
relationships:
building:
data:
id: f014ce08-000d-4335-b0c0-48ea7ac07af0
type: buildings
links:
self: /portfolios/15369f00-1608-40ee-bec1-06c70a74fb58/buildings/f014ce08-000d-4335-b0c0-48ea7ac07af0
links:
self: /portfolios/15369f00-1608-40ee-bec1-06c70a74fb58/buildings/f014ce08-000d-4335-b0c0-48ea7ac07af0/waste-meters/9fa329b0-e9ae-4851-8987-9311e76c031f
schema:
$ref: '#/components/schemas/json_api'
'404':
description: Not Found
content:
application/vnd.api+json:
example:
errors:
- status: '404'
title: Not Found
detail: Could not find waste meter 023489be-c116-4ee4-beae-441de41543ff in building 363eadec-1d1d-4169-9ac4-2ef42b9737f9
in portfolio fcbd8362-6029-477b-9b80-f3f51de64352
schema:
$ref: '#/components/schemas/json_api'
'401':
description: Unauthorized Request
content:
application/vnd.api+json:
example:
errors:
- status: '401'
title: Unauthorized
detail: Unauthorized Request
schema:
$ref: '#/components/schemas/json_api'
'400':
description: Bad Request
content:
application/vnd.api+json:
example:
errors:
- status: '400'
title: Bad Request
detail: An invalid UUID parameter was submitted with the request (portfolio_id)
schema:
$ref: '#/components/schemas/json_api'
'502':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '502'
title: Bad Gateway
detail: A Measurabl Server is down, please try again later
schema:
$ref: '#/components/schemas/json_api'
'500':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '500'
title: Internal Server Error
detail: An error occurred with the request
schema:
$ref: '#/components/schemas/json_api'
'503':
description: Service Unavailable
content:
application/vnd.api+json:
example:
errors:
- status: '503'
title: Service Unavailable
detail: A Measurabl Server is currently unavailable, please try again later
schema:
$ref: '#/components/schemas/json_api'
'408':
description: Request Timeout
content:
application/vnd.api+json:
example:
errors:
- status: '408'
title: Request Timeout
detail: The request you made has timed out
schema:
$ref: '#/components/schemas/json_api'
'429':
description: Too many requests
content:
application/vnd.api+json:
example:
errors:
- status: '429'
title: Too Many Requests
detail: Rate Limit Exceeded
schema:
$ref: '#/components/schemas/json_api'
'403':
description: unauthorized request
content:
application/vnd.api+json:
example:
errors:
- status: '403'
title: Forbidden
detail: 'A valid auth token is required.
POST to ''/token'' with a valid ''key'' and ''secret'' to get an auth token.
'
schema:
$ref: '#/components/schemas/json_api'
requestBody:
content:
application/vnd.api+json:
schema:
type: object
properties:
data:
type: object
properties:
id:
type: string
type:
type: string
attributes:
type: object
properties:
units:
type: string
name:
type: string
activationDate: '2019-08-01'
deactivationDate: '2022-09-23'
autoActivationDate: true
currency: USD
intermittent: true
hazardous: false
required:
- id
- type
example:
data:
id: af606077-9cd9-4a8a-93fb-5e6fa34cab63
type: wasteMeters
attributes:
units: TONNES (METRIC)
name: New Name
activationDate: '2019-08-01'
deactivationDate: '2022-09-23'
autoActivationDate: true
currency: USD
intermittent: false
hazardous: false
required: true
description: Request body used to update a specific waste meter
/core/v0/portfolios/{portfolio_id}/buildings/{building_id}/waste_meters/{waste_meter_id}/readings:
post:
summary: Creates a waste meter reading for a specified building
tags:
- Waste Meter Readings
security:
- OAuth2: []
parameters:
- name: portfolio_id
in: path
description: "UUID for the parent portfolio
\n Example: 50960f84-7c85-4448-a330-f743ef2ccb52"
required: true
schema:
type: string
- name: building_id
in: path
description: 'Example: 124c0183-645c-418b-a3b0-7a2227da5d5f'
required: true
schema:
type: string
- name: waste_meter_id
in: path
description: 'Example: 7d033756-fa66-47cf-82c2-91b0f1cced9c'
required: true
schema:
type: string
responses:
'200':
description: Creates a Portfolio or Fund / Building specific waste meter reading
content:
application/vnd.api+json:
example:
data:
id: 11ed39c9-b11f-afbb-ba22-0242ac120002
type: wasteMeterReadings
attributes:
estarMeterReadingId: null
fromDate: '2026-08-19'
toDate: '2026-09-19'
cost: 1200.0
quantity: 1234.0
timesEmptied: null
avgPercentFull: null
landfillPct: 0.0
incinerationPct: 50.0
wtePct: 50.0
unknownPct: 0.0
updatedAt: '2026-02-22 16:09:23'
relationships:
waste-meter:
data:
id: 23ad90eb-ae5f-4c09-856f-c7a7d4ab922b
type: wasteMeters
links:
self: /portfolios/c9ece25d-81cb-47a0-b997-2003a3e9fb97/buildings/c133f769-af4d-42ca-90ac-2bf3a4e09843/waste-meters/23ad90eb-ae5f-4c09-856f-c7a7d4ab922b
links:
self: /portfolios/c9ece25d-81cb-47a0-b997-2003a3e9fb97/buildings/c133f769-af4d-42ca-90ac-2bf3a4e09843/waste-meters/23ad90eb-ae5f-4c09-856f-c7a7d4ab922b/readings/9ab09e6e-e0cf-4082-ba11-3d435276e9de
schema:
$ref: '#/components/schemas/json_api'
'404':
description: Not Found
content:
application/vnd.api+json:
example:
errors:
- status: '404'
title: Not Found
detail: Could not find waste meter 2a5e5304-ea7c-47f7-854d-08aaeb3413d0 in building f899b046-2a36-4889-910d-e707f5aae942
in portfolio beef68b8-3179-453e-a63f-7a9764e81b7d
schema:
$ref: '#/components/schemas/json_api'
'401':
description: Unauthorized Request
content:
application/vnd.api+json:
example:
errors:
- status: '401'
title: Unauthorized
detail: Unauthorized Request
schema:
$ref: '#/components/schemas/json_api'
'400':
description: Bad Request
content:
application/vnd.api+json:
example:
errors:
- status: '400'
title: Bad Request
detail: An invalid UUID parameter was submitted with the request (portfolio_id)
schema:
$ref: '#/components/schemas/json_api'
'502':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '502'
title: Bad Gateway
detail: A Measurabl Server is down, please try again later
schema:
$ref: '#/components/schemas/json_api'
'500':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '500'
title: Internal Server Error
detail: An error occurred with the request
schema:
$ref: '#/components/schemas/json_api'
'503':
description: Service Unavailable
content:
application/vnd.api+json:
example:
errors:
- status: '503'
title: Service Unavailable
detail: A Measurabl Server is currently unavailable, please try again later
schema:
$ref: '#/components/schemas/json_api'
'408':
description: Request Timeout
content:
application/vnd.api+json:
example:
errors:
- status: '408'
title: Request Timeout
detail: The request you made has timed out
schema:
$ref: '#/components/schemas/json_api'
'429':
description: Too many requests
content:
application/vnd.api+json:
example:
errors:
- status: '429'
title: Too Many Requests
detail: Rate Limit Exceeded
schema:
$ref: '#/components/schemas/json_api'
'403':
description: unauthorized request
content:
application/vnd.api+json:
example:
errors:
- status: '403'
title: Forbidden
detail: 'A valid auth token is required.
POST to ''/token'' with a valid ''key'' and ''secret'' to get an auth token.
'
schema:
$ref: '#/components/schemas/json_api'
requestBody:
content:
application/vnd.api+json:
schema:
type: object
properties:
data:
type: object
properties:
attributes:
type: object
properties:
fromDate:
type: string
toDate:
type: string
cost:
type: decimal
quantity:
type: decimal
timesEmptied:
type: decimal
avgPercentFull:
type: decimal
landfillPct:
type: decimal
incinerationPct:
type: decimal
wtePct:
type: decimal
unknownPct:
type: decimal
required:
- fromDate
- toDate
- cost
- landfillPct
- incinerationPct
- wtePct
- unknownPct
example:
data:
type: wasteMeterReadings
attributes:
fromDate: '2022-03-01'
toDate: '2022-04-01'
cost: 1200.0
quantity: 1234.0
timesEmptied: null
avgPercentFull: null
landfillPct: 0
incinerationPct: 50
wtePct: 50
unknownPct: 0
required: true
description: Request body used to create a waste meter reading associated with a waste meter
get:
summary: Returns a list of waste meter readings for a specified waste meter and building
tags:
- Waste Meter Readings
security:
- OAuth2: []
parameters:
- name: portfolio_id
in: path
description: "UUID of either the parent portfolio or fund
\n Example: 1e57a075-bb0e-4ace-960c-7f659037579e"
required: true
schema:
type: string
- name: building_id
in: path
description: 'Example: e692b1fd-8817-433e-9369-63779ac56ea1'
required: true
schema:
type: string
- name: waste_meter_id
in: path
description: 'Example: c2b5f5eb-d979-4587-b7c8-6728a2f566a7'
required: true
schema:
type: string
- name: filter
in: query
description: "Filter by any attribute available via the endpoint.
\n \n \
\ - updatedAt=ge=2022-10-14T00:00 will query for waste meter readings updated at or after\
\ the set date and time.
\n - cost=ge=50 will query for waste meter readings\
\ with the cost attribute value greater than or equal to 50.
\n
"
schema:
type: string
- name: page
in: query
default: 1
schema:
type: integer
- name: size
in: query
description: The max page size is limited to 200 returned results
default: 25
schema:
type: integer
responses:
'200':
description: Portfolio or Fund / Building specific waste meter readings list
content:
application/vnd.api+json:
example:
data:
- id: 810e03f4-6b20-4d9f-9eb6-e0de229a5faa
type: wasteMeterReadings
attributes:
estarMeterReadingId: null
fromDate: '2018-01-01'
toDate: '2018-02-01'
cost: 43
quantity: 2.0
timesEmptied: null
avgPercentFull: null
landfillPct: 50.0
incinerationPct: 25.0
wtePct: 25.0
unknownPct: 0.0
updatedAt: '2026-04-01 06:07:50'
relationships:
waste-meter:
data:
id: 86752597-efb6-4f4f-9dcc-3e1222924e3f
type: wasteMeters
links:
self: /portfolios/415e728a-af44-41d1-9ed3-e42052057ab1/buildings/3461bfa5-4e9e-4419-a7fa-712930a6831b/waste-meters/86752597-efb6-4f4f-9dcc-3e1222924e3f
links:
self: /portfolios/415e728a-af44-41d1-9ed3-e42052057ab1/buildings/3461bfa5-4e9e-4419-a7fa-712930a6831b/waste-meters/86752597-efb6-4f4f-9dcc-3e1222924e3f/readings/810e03f4-6b20-4d9f-9eb6-e0de229a5faa
- id: c9309006-3685-45e1-9e38-7ab5060839da
type: wasteMeterReadings
attributes:
estarMeterReadingId: null
fromDate: '2018-02-01'
toDate: '2018-03-01'
cost: 3
quantity: 2.0
timesEmptied: null
avgPercentFull: null
landfillPct: 50.0
incinerationPct: 25.0
wtePct: 25.0
unknownPct: 0.0
updatedAt: '2025-11-26 23:52:30'
relationships:
waste-meter:
data:
id: 86752597-efb6-4f4f-9dcc-3e1222924e3f
type: wasteMeters
links:
self: /portfolios/415e728a-af44-41d1-9ed3-e42052057ab1/buildings/3461bfa5-4e9e-4419-a7fa-712930a6831b/waste-meters/86752597-efb6-4f4f-9dcc-3e1222924e3f
links:
self: /portfolios/415e728a-af44-41d1-9ed3-e42052057ab1/buildings/3461bfa5-4e9e-4419-a7fa-712930a6831b/waste-meters/86752597-efb6-4f4f-9dcc-3e1222924e3f/readings/c9309006-3685-45e1-9e38-7ab5060839da
- id: baf3b72b-5bd2-4725-8d99-625da7aee630
type: wasteMeterReadings
attributes:
estarMeterReadingId: null
fromDate: '2018-04-01'
toDate: '2018-05-01'
cost: 197
quantity: 2.0
timesEmptied: null
avgPercentFull: null
landfillPct: 50.0
incinerationPct: 25.0
wtePct: 25.0
unknownPct: 0.0
updatedAt: '2025-10-17 03:49:52'
relationships:
waste-meter:
data:
id: 86752597-efb6-4f4f-9dcc-3e1222924e3f
type: wasteMeters
links:
self: /portfolios/415e728a-af44-41d1-9ed3-e42052057ab1/buildings/3461bfa5-4e9e-4419-a7fa-712930a6831b/waste-meters/86752597-efb6-4f4f-9dcc-3e1222924e3f
links:
self: /portfolios/415e728a-af44-41d1-9ed3-e42052057ab1/buildings/3461bfa5-4e9e-4419-a7fa-712930a6831b/waste-meters/86752597-efb6-4f4f-9dcc-3e1222924e3f/readings/baf3b72b-5bd2-4725-8d99-625da7aee630
- id: c8791989-4012-4e89-b0f1-431ed0676359
type: wasteMeterReadings
attributes:
estarMeterReadingId: null
fromDate: '2018-01-01'
toDate: '2018-02-01'
cost: 151
quantity: 2.0
timesEmptied: null
avgPercentFull: null
landfillPct: 50.0
incinerationPct: 25.0
wtePct: 25.0
unknownPct: 0.0
updatedAt: '2026-06-16 18:44:25'
relationships:
waste-meter:
data:
id: 86752597-efb6-4f4f-9dcc-3e1222924e3f
type: wasteMeters
links:
self: /portfolios/415e728a-af44-41d1-9ed3-e42052057ab1/buildings/3461bfa5-4e9e-4419-a7fa-712930a6831b/waste-meters/86752597-efb6-4f4f-9dcc-3e1222924e3f
links:
self: /portfolios/415e728a-af44-41d1-9ed3-e42052057ab1/buildings/3461bfa5-4e9e-4419-a7fa-712930a6831b/waste-meters/86752597-efb6-4f4f-9dcc-3e1222924e3f/readings/c8791989-4012-4e89-b0f1-431ed0676359
- id: f0c6526b-df14-4c3a-b5c9-d612413d6119
type: wasteMeterReadings
attributes:
estarMeterReadingId: null
fromDate: '2018-02-01'
toDate: '2018-03-01'
cost: 50
quantity: 2.0
timesEmptied: null
avgPercentFull: null
landfillPct: 50.0
incinerationPct: 25.0
wtePct: 25.0
unknownPct: 0.0
updatedAt: '2026-03-28 11:29:10'
relationships:
waste-meter:
data:
id: 86752597-efb6-4f4f-9dcc-3e1222924e3f
type: wasteMeters
links:
self: /portfolios/415e728a-af44-41d1-9ed3-e42052057ab1/buildings/3461bfa5-4e9e-4419-a7fa-712930a6831b/waste-meters/86752597-efb6-4f4f-9dcc-3e1222924e3f
links:
self: /portfolios/415e728a-af44-41d1-9ed3-e42052057ab1/buildings/3461bfa5-4e9e-4419-a7fa-712930a6831b/waste-meters/86752597-efb6-4f4f-9dcc-3e1222924e3f/readings/f0c6526b-df14-4c3a-b5c9-d612413d6119
links:
self: /core/v0/portfolios/415e728a-af44-41d1-9ed3-e42052057ab1/buildings/3461bfa5-4e9e-4419-a7fa-712930a6831b/waste-meters/86752597-efb6-4f4f-9dcc-3e1222924e3f/readings?size=5&page=3
first: /core/v0/portfolios/415e728a-af44-41d1-9ed3-e42052057ab1/buildings/3461bfa5-4e9e-4419-a7fa-712930a6831b/waste-meters/86752597-efb6-4f4f-9dcc-3e1222924e3f/readings?size=5&page=1
last: /core/v0/portfolios/415e728a-af44-41d1-9ed3-e42052057ab1/buildings/3461bfa5-4e9e-4419-a7fa-712930a6831b/waste-meters/86752597-efb6-4f4f-9dcc-3e1222924e3f/readings?size=5&page=5
next: /core/v0/portfolios/415e728a-af44-41d1-9ed3-e42052057ab1/buildings/3461bfa5-4e9e-4419-a7fa-712930a6831b/waste-meters/86752597-efb6-4f4f-9dcc-3e1222924e3f/readings?size=5&page=4
prev: /core/v0/portfolios/415e728a-af44-41d1-9ed3-e42052057ab1/buildings/3461bfa5-4e9e-4419-a7fa-712930a6831b/waste-meters/86752597-efb6-4f4f-9dcc-3e1222924e3f/readings?size=5&page=2
meta:
page:
number: 3
size: 100
totalPages: 5
totalElements: 420
schema:
$ref: '#/components/schemas/json_api'
'404':
description: Not Found
content:
application/vnd.api+json:
example:
errors:
- status: '404'
title: Not Found
detail: Could not find waste meter ac845234-f165-4ddf-ba5b-c0a6c6cd610a in building 81aff2a3-a22f-468c-9e79-a7d5e31809bc
in portfolio c05a3502-0990-499e-ad58-08bf6df0acd7
schema:
$ref: '#/components/schemas/json_api'
'401':
description: Unauthorized Request
content:
application/vnd.api+json:
example:
errors:
- status: '401'
title: Unauthorized
detail: Unauthorized Request
schema:
$ref: '#/components/schemas/json_api'
'400':
description: Bad Request
content:
application/vnd.api+json:
example:
errors:
- status: '400'
title: Bad Request
detail: An invalid UUID parameter was submitted with the request (portfolio_id)
schema:
$ref: '#/components/schemas/json_api'
'502':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '502'
title: Bad Gateway
detail: A Measurabl Server is down, please try again later
schema:
$ref: '#/components/schemas/json_api'
'500':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '500'
title: Internal Server Error
detail: An error occurred with the request
schema:
$ref: '#/components/schemas/json_api'
'503':
description: Service Unavailable
content:
application/vnd.api+json:
example:
errors:
- status: '503'
title: Service Unavailable
detail: A Measurabl Server is currently unavailable, please try again later
schema:
$ref: '#/components/schemas/json_api'
'408':
description: Request Timeout
content:
application/vnd.api+json:
example:
errors:
- status: '408'
title: Request Timeout
detail: The request you made has timed out
schema:
$ref: '#/components/schemas/json_api'
'429':
description: Too many requests
content:
application/vnd.api+json:
example:
errors:
- status: '429'
title: Too Many Requests
detail: Rate Limit Exceeded
schema:
$ref: '#/components/schemas/json_api'
'403':
description: unauthorized request
content:
application/vnd.api+json:
example:
errors:
- status: '403'
title: Forbidden
detail: 'A valid auth token is required.
POST to ''/token'' with a valid ''key'' and ''secret'' to get an auth token.
'
schema:
$ref: '#/components/schemas/json_api'
/core/v0/portfolios/{portfolio_id}/buildings/{building_id}/waste_meters/{waste_meter_id}/readings/{waste_meter_reading_id}:
delete:
summary: Deletes a specific waste meter reading for a specified waste meter and building
tags:
- Waste Meter Readings
security:
- OAuth2: []
parameters:
- name: portfolio_id
in: path
description: "UUID for the parent portfolio
\n Example: 411bc8cc-1599-41c6-bde0-026bfa52df6b"
required: true
schema:
type: string
- name: building_id
in: path
description: 'Example: 13cc5e72-7a7a-4d66-b13d-2859bfbba4d0'
required: true
schema:
type: string
- name: waste_meter_id
in: path
description: 'Example: d6484baa-adec-47fb-ae3d-48d2db9a6ee5'
required: true
schema:
type: string
- name: waste_meter_reading_id
in: path
description: 'Example: e981b586-477e-46e3-9b96-f40c1cbf9eec'
required: true
schema:
type: string
responses:
'204':
description: Waste Meter Reading Deleted Successfully
content:
application/vnd.api+json:
example: ''
'400':
description: Bad Request
content:
application/vnd.api+json:
example:
errors:
- status: '400'
title: Bad Request
detail: An invalid UUID parameter was submitted with the request (portfolio_id)
schema:
$ref: '#/components/schemas/json_api'
'404':
description: Not Found
content:
application/vnd.api+json:
example:
errors:
- status: '404'
title: Not Found
detail: Could not find reading ba46d76a-2c33-4f7b-94ed-5f69592d064f for waste meter abeaf329-5fe9-4c91-9a5d-032847877643
in building 67f7dab8-ff9f-448b-b2cf-9d5ee246c676 in portfolio ba37ebbf-8974-45f3-a17b-f5ac04a2ea9a
schema:
$ref: '#/components/schemas/json_api'
'401':
description: Unauthorized Request
content:
application/vnd.api+json:
example:
errors:
- status: '401'
title: Unauthorized
detail: Unauthorized Request
schema:
$ref: '#/components/schemas/json_api'
'502':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '502'
title: Bad Gateway
detail: A Measurabl Server is down, please try again later
schema:
$ref: '#/components/schemas/json_api'
'500':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '500'
title: Internal Server Error
detail: An error occurred with the request
schema:
$ref: '#/components/schemas/json_api'
'503':
description: Service Unavailable
content:
application/vnd.api+json:
example:
errors:
- status: '503'
title: Service Unavailable
detail: A Measurabl Server is currently unavailable, please try again later
schema:
$ref: '#/components/schemas/json_api'
'408':
description: Request Timeout
content:
application/vnd.api+json:
example:
errors:
- status: '408'
title: Request Timeout
detail: The request you made has timed out
schema:
$ref: '#/components/schemas/json_api'
'429':
description: Too many requests
content:
application/vnd.api+json:
example:
errors:
- status: '429'
title: Too Many Requests
detail: Rate Limit Exceeded
schema:
$ref: '#/components/schemas/json_api'
'403':
description: unauthorized request
content:
application/vnd.api+json:
example:
errors:
- status: '403'
title: Forbidden
detail: 'A valid auth token is required.
POST to ''/token'' with a valid ''key'' and ''secret'' to get an auth token.
'
schema:
$ref: '#/components/schemas/json_api'
get:
summary: Returns details of a specific waste meter reading for a specified waste meter and building
tags:
- Waste Meter Readings
security:
- OAuth2: []
parameters:
- name: portfolio_id
in: path
description: "UUID of either the parent portfolio or fund
\n Example: 8e6f37da-2df7-4925-9724-b6fc9b8e51e3"
required: true
schema:
type: string
- name: building_id
in: path
description: 'Example: 86a3fc90-9373-40da-a14e-f31cc44df3d3'
required: true
schema:
type: string
- name: waste_meter_id
in: path
description: 'Example: 06b69ed6-a772-4cb0-b2cb-1f62dce1d595'
required: true
schema:
type: string
- name: waste_meter_reading_id
in: path
description: 'Example: bbc32c66-f85c-463f-8fde-30f5a6f646f6'
required: true
schema:
type: string
responses:
'200':
description: Portfolio or Fund / Building specific waste meter readings list
content:
application/vnd.api+json:
example:
data:
id: 1728d5b0-3f4c-4af1-a847-9f7fddee312f
type: wasteMeterReadings
attributes:
estarMeterReadingId: null
fromDate: '2026-11-28'
toDate: '2026-12-28'
cost: 39
quantity: 2.0
timesEmptied: null
avgPercentFull: null
landfillPct: 50.0
incinerationPct: 25.0
wtePct: 25.0
unknownPct: 0.0
updatedAt: '2025-12-23 16:39:16'
relationships:
waste-meter:
data:
id: e8e95975-53cb-497a-b756-64f69a7b2792
type: waste-meters
links:
self: /portfolios/1d97c3b7-3d36-4367-9b83-89a0550f8590/buildings/7a230a98-53fb-431e-afab-10c2bbc68ea1/waste-meters/e8e95975-53cb-497a-b756-64f69a7b2792
links:
self: portfolios/1d97c3b7-3d36-4367-9b83-89a0550f8590/buildings/7a230a98-53fb-431e-afab-10c2bbc68ea1/waste-meters/e8e95975-53cb-497a-b756-64f69a7b2792/readings/1728d5b0-3f4c-4af1-a847-9f7fddee312f
schema:
$ref: '#/components/schemas/json_api'
'404':
description: Not Found
content:
application/vnd.api+json:
example:
errors:
- status: '404'
title: Not Found
detail: Could not find reading 981dcaa7-cac0-4a77-87f4-a36791294fe1 for waste meter 662402ec-aa5b-4707-b27d-75b85f85c74f
in building 80890e7a-37dc-459b-861c-b53f7ab11684 in portfolio 2a29ad3f-74e8-4402-b524-724c42742157
schema:
$ref: '#/components/schemas/json_api'
'401':
description: Unauthorized Request
content:
application/vnd.api+json:
example:
errors:
- status: '401'
title: Unauthorized
detail: Unauthorized Request
schema:
$ref: '#/components/schemas/json_api'
'400':
description: Bad Request
content:
application/vnd.api+json:
example:
errors:
- status: '400'
title: Bad Request
detail: An invalid UUID parameter was submitted with the request (portfolio_id)
schema:
$ref: '#/components/schemas/json_api'
'502':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '502'
title: Bad Gateway
detail: A Measurabl Server is down, please try again later
schema:
$ref: '#/components/schemas/json_api'
'500':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '500'
title: Internal Server Error
detail: An error occurred with the request
schema:
$ref: '#/components/schemas/json_api'
'503':
description: Service Unavailable
content:
application/vnd.api+json:
example:
errors:
- status: '503'
title: Service Unavailable
detail: A Measurabl Server is currently unavailable, please try again later
schema:
$ref: '#/components/schemas/json_api'
'408':
description: Request Timeout
content:
application/vnd.api+json:
example:
errors:
- status: '408'
title: Request Timeout
detail: The request you made has timed out
schema:
$ref: '#/components/schemas/json_api'
'429':
description: Too many requests
content:
application/vnd.api+json:
example:
errors:
- status: '429'
title: Too Many Requests
detail: Rate Limit Exceeded
schema:
$ref: '#/components/schemas/json_api'
'403':
description: unauthorized request
content:
application/vnd.api+json:
example:
errors:
- status: '403'
title: Forbidden
detail: 'A valid auth token is required.
POST to ''/token'' with a valid ''key'' and ''secret'' to get an auth token.
'
schema:
$ref: '#/components/schemas/json_api'
patch:
summary: Updates a specific waste meter reading for a specified building
tags:
- Waste Meter Readings
security:
- OAuth2: []
parameters:
- name: portfolio_id
in: path
description: "UUID for the parent portfolio
\n Example: fd6dbf39-a76e-4117-952c-8aa9032cca8b"
required: true
schema:
type: string
- name: building_id
in: path
description: 'Example: d2fa3087-b192-4042-b80d-e05a3a0879c5'
required: true
schema:
type: string
- name: waste_meter_id
in: path
description: 'Example: 871673d6-0b78-4938-a661-e085ee1e2207'
required: true
schema:
type: string
- name: waste_meter_reading_id
in: path
description: 'Example: 83c083ca-3a9c-4935-ab54-952502894c01'
required: true
schema:
type: string
responses:
'200':
description: Portfolio / Building / Waste Meter Specific Waste Meter Reading Updated
content:
application/vnd.api+json:
example:
data:
id: 7144a6e5-b932-4b88-968c-f53814106988
type: wasteMeterReadings
attributes:
estarMeterReadingId: null
fromDate: '2026-05-05'
toDate: '2026-06-05'
cost: 1200.0
quantity: 1234.0
timesEmptied: null
avgPercentFull: null
landfillPct: 0.0
incinerationPct: 50.0
wtePct: 50.0
unknownPct: 0.0
updatedAt: '2026-02-09 13:52:46'
relationships:
waste-meter:
data:
id: f2cce382-aca6-45e1-9a62-119939b757b4
type: wasteMeters
links:
self: /portfolios/863bedb7-1159-497d-a373-5783b888a5ac/buildings/3996d432-d7a4-499f-8914-fb99725b0b16/waste-meters/f2cce382-aca6-45e1-9a62-119939b757b4
links:
self: /portfolios/863bedb7-1159-497d-a373-5783b888a5ac/buildings/3996d432-d7a4-499f-8914-fb99725b0b16/waste-meters/f2cce382-aca6-45e1-9a62-119939b757b4/readings/7144a6e5-b932-4b88-968c-f53814106988
schema:
$ref: '#/components/schemas/json_api'
'404':
description: Not Found
content:
application/vnd.api+json:
example:
errors:
- status: '404'
title: Not Found
detail: Could not find reading f3c3a089-5b4e-4ac0-99ea-6a03761ad219 for waste meter ab904681-bb52-4e87-950b-ce427ccb5687
in building a82b42f8-967a-49be-a3c8-db13ef2fd54d in portfolio d92bf499-b0d8-4f10-a44a-203077484c6e
schema:
$ref: '#/components/schemas/json_api'
'401':
description: Unauthorized Request
content:
application/vnd.api+json:
example:
errors:
- status: '401'
title: Unauthorized
detail: Unauthorized Request
schema:
$ref: '#/components/schemas/json_api'
'400':
description: Bad Request
content:
application/vnd.api+json:
example:
errors:
- status: '400'
title: Bad Request
detail: An invalid UUID parameter was submitted with the request (portfolio_id)
schema:
$ref: '#/components/schemas/json_api'
'502':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '502'
title: Bad Gateway
detail: A Measurabl Server is down, please try again later
schema:
$ref: '#/components/schemas/json_api'
'500':
description: Internal Error
content:
application/vnd.api+json:
example:
errors:
- status: '500'
title: Internal Server Error
detail: An error occurred with the request
schema:
$ref: '#/components/schemas/json_api'
'503':
description: Service Unavailable
content:
application/vnd.api+json:
example:
errors:
- status: '503'
title: Service Unavailable
detail: A Measurabl Server is currently unavailable, please try again later
schema:
$ref: '#/components/schemas/json_api'
'408':
description: Request Timeout
content:
application/vnd.api+json:
example:
errors:
- status: '408'
title: Request Timeout
detail: The request you made has timed out
schema:
$ref: '#/components/schemas/json_api'
'429':
description: Too many requests
content:
application/vnd.api+json:
example:
errors:
- status: '429'
title: Too Many Requests
detail: Rate Limit Exceeded
schema:
$ref: '#/components/schemas/json_api'
'403':
description: unauthorized request
content:
application/vnd.api+json:
example:
errors:
- status: '403'
title: Forbidden
detail: 'A valid auth token is required.
POST to ''/token'' with a valid ''key'' and ''secret'' to get an auth token.
'
schema:
$ref: '#/components/schemas/json_api'
requestBody:
content:
application/vnd.api+json:
schema:
type: object
properties:
data:
type: object
properties:
id:
type: string
type:
type: string
attributes:
type: object
properties:
fromDate:
type: string
toDate:
type: string
cost:
type: decimal
quantity:
type: decimal
timesEmptied:
type: decimal
avgPercentFull:
type: decimal
landfillPct:
type: decimal
incinerationPct:
type: decimal
wtePct:
type: decimal
unknownPct:
type: decimal
required:
- id
- type
example:
data:
id: 2dc22960-2de3-480b-9863-f667f8d82448
type: wasteMeterReadings
attributes:
fromDate: '2022-03-01'
toDate: '2022-04-01'
cost: 1200.0
quantity: 1234.0
timesEmptied: null
avgPercentFull: null
landfillPct: 0
incinerationPct: 50
wtePct: 50
unknownPct: 0
required: true
description: Request body used to update a specific waste meter reading associated with a waste meter