Brick Example Server

The Brick Example Server is the BrickSchema organisation's self-hostable HTTP contract, documented at docs.brickschema.org as "demonstrating how a Brick model can be abstracted by an HTTP API". OpenAPI 3.0.2, nineteen operations under /brickapi/v1/ covering timeseries read/write/delete, Turtle model upload, entity lookup, a relationship-filtered entity list keyed on the Brick object properties, raw SQL and raw SPARQL queries, physical actuation, Grafana dashboard provisioning, and application-token issue and revoke. Authentication is a bearer JWT with no scopes. The baseURL is TEMPLATED on purpose: BrickSchema operates no hosted instance and the harvested contract declares no servers block, so the host is supplied by whoever runs the software. The /brickapi/v1 path prefix is the provider's own and appears on every operation.

Operations 19

GET /brickapi/v1/data/timeseries Get #
POST /brickapi/v1/data/timeseries Post #
DELETE /brickapi/v1/data/timeseries Delete #
POST /brickapi/v1/entities/upload Uplaod a Turtle file #
GET /brickapi/v1/entities/ Get Entity By Id #
POST /brickapi/v1/entities/list Post #
POST /brickapi/v1/rawqueries/timeseries Post #
POST /brickapi/v1/rawqueries/sparql Post #
POST /brickapi/v1/actuation/ Post #
GET /brickapi/v1/grafana/details Get #
GET /brickapi/v1/grafana/ Get #
POST /brickapi/v1/grafana/ Post #
GET /brickapi/v1/auth/login Get Login Via Google #
GET /brickapi/v1/auth/is_registered Get Is Registered #
GET /brickapi/v1/auth/logincallback Get Authorize #
DELETE /brickapi/v1/auth/app_tokens/{app_token} Del Token #
GET /brickapi/v1/auth/app_tokens Get Tokens #
POST /brickapi/v1/auth/app_tokens Gen Token #
GET /brickapi/v1/auth/register Post Register User #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/server"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

brick-brick-server-openapi.yml Raw ↑
openapi: 3.0.2
info:
  title: Brick Server
  version: 0.1.0
servers:
- url: https://{brick-server-host}
  description: 'Templated: the Brick Example Server is self-hosted software and BrickSchema operates no
    instance. The harvested contract declares no servers block; the host is supplied by the operator.
    Every path already carries the provider''s own /brickapi/v1 prefix.'
  variables:
    brick-server-host:
      default: localhost:8000
      description: Host and port of your Brick Example Server deployment.
paths:
  /brickapi/v1/data/timeseries:
    get:
      tags:
      - Data
      - Data
      summary: Get
      operationId: get_brickapi_v1_data_timeseries_get
      parameters:
      - required: true
        schema:
          title: Entity Id
          type: string
        name: entity_id
        in: query
      - description: Starting time of the data in UNIX timestamp in seconds (float). If not given, the
          beginning of the data will be assumed.
        required: false
        schema:
          title: Start Time
          type: number
          description: Starting time of the data in UNIX timestamp in seconds (float). If not given, the
            beginning of the data will be assumed.
        name: start_time
        in: query
      - description: Ending time of the data in UNIX timestamp in seconds (float). If not given, the end
          of the data will be assumed.
        required: false
        schema:
          title: End Time
          type: number
          description: Ending time of the data in UNIX timestamp in seconds (float). If not given, the
            end of the data will be assumed.
        name: end_time
        in: query
      - description: The type of value. Currently, there are numbers (for both floating points and integers),
          texts, and locations (blobs are under dev.)
        required: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/ValueType'
          description: The type of value. Currently, there are numbers (for both floating points and integers),
            texts, and locations (blobs are under dev.)
          default:
          - number
        name: value_types
        in: query
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TimeseriesData'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - HTTPBearer: []
    post:
      tags:
      - Data
      - Data
      summary: Post
      description: Post data. If fields are not given, default values are assumed.
      operationId: post_brickapi_v1_data_timeseries_post
      requestBody:
        content:
          application/json:
            schema:
              title: Data
              allOf:
              - $ref: '#/components/schemas/TimeseriesData'
              description: A table of data where each row represents a value tuple. `data` field contains
                actual data and `columns` field contains information about the columns of the data.
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IsSuccess'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - HTTPBearer: []
    delete:
      tags:
      - Data
      - Data
      summary: Delete
      description: Delete data of an entity with in a time range or all the data if a time range is not
        given.
      operationId: delete_brickapi_v1_data_timeseries_delete
      parameters:
      - required: true
        schema:
          title: Entity Id
          type: string
        name: entity_id
        in: query
      - description: Starting time of the data in UNIX timestamp in seconds (float). If not given, the
          beginning of the data will be assumed.
        required: false
        schema:
          title: Start Time
          type: number
          description: Starting time of the data in UNIX timestamp in seconds (float). If not given, the
            beginning of the data will be assumed.
        name: start_time
        in: query
      - description: Ending time of the data in UNIX timestamp in seconds (float). If not given, the end
          of the data will be assumed.
        required: false
        schema:
          title: End Time
          type: number
          description: Ending time of the data in UNIX timestamp in seconds (float). If not given, the
            end of the data will be assumed.
        name: end_time
        in: query
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IsSuccess'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - HTTPBearer: []
  /brickapi/v1/entities/upload:
    post:
      tags:
      - Entities
      - Entities
      summary: Uplaod a Turtle file
      description: 'Upload a Turtle file. An example file: https://gitlab.com/jbkoh/brick-server-dev/blob/dev/examples/data/bldg.ttl'
      operationId: upload_brickapi_v1_entities_upload_post
      parameters:
      - description: The name of the graph. This is similar to a database name in relational databases.
        required: false
        schema:
          title: Named Graph
          type: string
          description: The name of the graph. This is similar to a database name in relational databases.
        name: named_graph
        in: query
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/Body_upload_brickapi_v1_entities_upload_post'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IsSuccess'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - HTTPBearer: []
  /brickapi/v1/entities/:
    get:
      tags:
      - Entities
      - Entities
      summary: Get Entity By Id
      description: 'Get information about an entity including type and its relationships with others.
        The definition of entity: An entity can be defined in two ways. It''s an instance of a (Brick)
        Class. More specifically, it is either a physical or a virtual thing whose properties are well-maintained
        to be a thing. Top three Brick Classes are Point (e.g., sensors, setpoints, etc.), Equipment (e.g.,
        VAV, Luminaire, AHU, etc.), and Location (e.g., Room, Floor, etc.)'
      operationId: get_entity_by_id_brickapi_v1_entities__get
      parameters:
      - required: true
        schema:
          title: Entity Id
          type: string
        name: entity_id
        in: query
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Entity'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - HTTPBearer: []
  /brickapi/v1/entities/list:
    post:
      tags:
      - Entities
      - Entities
      summary: Post
      description: List all entities with their types and relations.
      operationId: post_brickapi_v1_entities_list_post
      requestBody:
        content:
          application/json:
            schema:
              title: Params
              allOf:
              - $ref: '#/components/schemas/ListEntityParams'
              description: A list of object URIs for the corresponding predicate. Brick Server will find
                entities having relations with all the objects with the predicate (i.e., AND operation.)
              default:
                hasPoint: []
                isPointOf: []
                hasPart: []
                isPartOf: []
                hasLocation: []
                isLocationOf: []
                feeds: []
                isFedBy: []
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EntityIds'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - HTTPBearer: []
  /brickapi/v1/rawqueries/timeseries:
    post:
      tags:
      - Raw Queries
      - Raw Queries
      summary: Post
      description: Raw PostgreSQL query for timeseries. (May not be exposed in the production deployment.)
      operationId: post_brickapi_v1_rawqueries_timeseries_post
      requestBody:
        content:
          application/sql:
            schema:
              title: Query
              type: string
              description: A raw SQL query for timeseries data. The table consist of the columns as in
                `value_types`.
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - HTTPBearer: []
  /brickapi/v1/rawqueries/sparql:
    post:
      tags:
      - Raw Queries
      - Raw Queries
      summary: Post
      description: Raw SPARQL for Brick metadata. (May not be exposed in the production deployment.
      operationId: post_brickapi_v1_rawqueries_sparql_post
      requestBody:
        content:
          application/sparql-query:
            schema:
              title: Query
              type: string
              description: A raw SPARQL query.
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                title: Response Post Brickapi V1 Rawqueries Sparql Post
                type: object
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - HTTPBearer: []
  /brickapi/v1/actuation/:
    post:
      tags:
      - Actuation
      - Actuation
      summary: Post
      description: Actuate an entity to a value
      operationId: post_brickapi_v1_actuation__post
      parameters:
      - description: The identifier of an entity. Often a URI. This should be unique across the target
          systems (i.e., the graphs of the interest.)
        required: true
        schema:
          title: Entity Id
          type: string
          description: The identifier of an entity. Often a URI. This should be unique across the target
            systems (i.e., the graphs of the interest.)
        name: entity_id
        in: query
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ActuationRequest'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IsSuccess'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - HTTPBearer: []
  /brickapi/v1/grafana/details:
    get:
      tags:
      - Data
      - Data
      summary: Get
      description: Get dashbaord metadata for the `uid`.
      operationId: get_brickapi_v1_grafana_details_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
      security:
      - HTTPBearer: []
  /brickapi/v1/grafana/:
    get:
      tags:
      - Data
      - Data
      summary: Get
      operationId: get_brickapi_v1_grafana__get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GrafanaDashboardResponse'
      security:
      - HTTPBearer: []
    post:
      tags:
      - Data
      - Data
      summary: Post
      description: Create or update the Grafana Dashboard. If JSON body is not given, it creates a Dashboard
        and assign it to the user. If JSON body is given, the body should be same as Grafana's dashboard
        model as defined at `https://grafana.com/docs/grafana/latest/http_api/dashboard/` except that
        uid, id, and title should be empty.
      operationId: post_brickapi_v1_grafana__post
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GrafanaDashboardResponse'
      security:
      - HTTPBearer: []
  /brickapi/v1/auth/login:
    get:
      tags:
      - Auth
      summary: Get Login Via Google
      operationId: get_login_via_google_brickapi_v1_auth_login_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
  /brickapi/v1/auth/is_registered:
    get:
      tags:
      - Auth
      summary: Get Is Registered
      operationId: get_is_registered_brickapi_v1_auth_is_registered_get
      responses:
        '302':
          description: Successful Response
  /brickapi/v1/auth/logincallback:
    get:
      summary: Get Authorize
      operationId: get_authorize_brickapi_v1_auth_logincallback_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
  /brickapi/v1/auth/app_tokens/{app_token}:
    delete:
      tags:
      - Auth
      summary: Del Token
      operationId: del_token_brickapi_v1_auth_app_tokens__app_token__delete
      parameters:
      - description: Token to delete.
        required: true
        schema:
          title: App Token
          type: string
          description: Token to delete.
        name: app_token
        in: path
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IsSuccess'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - HTTPBearer: []
  /brickapi/v1/auth/app_tokens:
    get:
      tags:
      - Auth
      summary: Get Tokens
      operationId: get_tokens_brickapi_v1_auth_app_tokens_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                title: Response Get Tokens Brickapi V1 Auth App Tokens Get
                type: array
                items:
                  $ref: '#/components/schemas/TokenResponse'
      security:
      - HTTPBearer: []
    post:
      tags:
      - Auth
      summary: Gen Token
      operationId: gen_token_brickapi_v1_auth_app_tokens_post
      parameters:
      - description: The name of an app the user needs to generate a token for
        required: false
        schema:
          title: App Name
          type: string
          description: The name of an app the user needs to generate a token for
          default: ''
        name: app_name
        in: query
      - description: Expiration time of the requested token in seconds.
        required: false
        schema:
          title: Token Lifetime
          type: integer
          description: Expiration time of the requested token in seconds.
          default: 3600
        name: token_lifetime
        in: query
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TokenResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - HTTPBearer: []
  /brickapi/v1/auth/register:
    get:
      tags:
      - Auth
      summary: Post Register User
      operationId: post_register_user_brickapi_v1_auth_register_get
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/Body_post_register_user_brickapi_v1_auth_register_get'
      responses:
        '302':
          description: Successful Response
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
components:
  schemas:
    ActuationRequest:
      title: ActuationRequest
      required:
      - value
      type: object
      properties:
        value:
          title: Value
          type: number
          description: A value to set the target entity.
    Body_post_register_user_brickapi_v1_auth_register_get:
      title: Body_post_register_user_brickapi_v1_auth_register_get
      type: object
      properties:
        is_admin:
          title: Is Admin
          type: boolean
          description: Designate if the user is going to be an admin or not.
          default: false
    Body_upload_brickapi_v1_entities_upload_post:
      title: Body_upload_brickapi_v1_entities_upload_post
      required:
      - file
      type: object
      properties:
        file:
          title: File
          type: string
          format: binary
    ColumnType:
      title: ColumnType
      enum:
      - number
      - text
      - loc
      - uuid
      - timestamp
      type: string
      description: An enumeration.
    Entity:
      title: Entity
      required:
      - type
      - entity_id
      type: object
      properties:
        relationships:
          title: Relationships
          type: array
          items:
            maxItems: 2
            minItems: 2
            type: array
            items:
              type: string
          description: The list of relationships for the target entity. Assuming the target entity is
            the subject, each relation consists of the subject's predicate and object.s
          default: []
        type:
          title: Type
          type: string
          description: The entity's type, which is often a Brick Class.
        entity_id:
          title: Entity Id
          type: string
          description: The identifier of an entity. Often a URI. This should be unique across the target
            systems (i.e., the graphs of the interest.)
        name:
          title: Name
          type: string
          description: An informative name for the entity. This does not have to be unique.
    EntityIds:
      title: EntityIds
      required:
      - entity_ids
      type: object
      properties:
        entity_ids:
          title: Entity Ids
          type: array
          items:
            type: string
          description: The list of `entity_id`s
    GrafanaDashboardResponse:
      title: GrafanaDashboardResponse
      required:
      - url
      - uid
      - grafana_id
      type: object
      properties:
        url:
          title: Url
          type: string
          description: Grafana dashboard url for the user
        uid:
          title: Uid
          type: string
          description: Grafana dashboard uid for the user
        grafana_id:
          title: Grafana Id
          type: string
          description: Grafana dashboard id for the user
    HTTPValidationError:
      title: HTTPValidationError
      type: object
      properties:
        detail:
          title: Detail
          type: array
          items:
            $ref: '#/components/schemas/ValidationError'
    IsSuccess:
      title: IsSuccess
      type: object
      properties:
        is_success:
          title: Is Success
          type: boolean
          default: true
        reason:
          title: Reason
          type: string
          default: ''
    ListEntityParams:
      title: ListEntityParams
      type: object
      properties:
        hasPoint:
          title: Haspoint
          type: array
          items:
            type: string
          default: []
        isPointOf:
          title: Ispointof
          type: array
          items:
            type: string
          default: []
        hasPart:
          title: Haspart
          type: array
          items:
            type: string
          default: []
        isPartOf:
          title: Ispartof
          type: array
          items:
            type: string
          default: []
        hasLocation:
          title: Haslocation
          type: array
          items:
            type: string
          default: []
        isLocationOf:
          title: Islocationof
          type: array
          items:
            type: string
          default: []
        feeds:
          title: Feeds
          type: array
          items:
            type: string
          default: []
        isFedBy:
          title: Isfedby
          type: array
          items:
            type: string
          default: []
    TimeseriesData:
      title: TimeseriesData
      required:
      - data
      type: object
      properties:
        data:
          title: Data
          type: array
          items:
            type: array
            items: {}
          description: A value tuple is actually an array in JSON and consists of different columns such
            as an identifier, a timestamp, and a number. For example, `["http://brickserver.com#znt1",
            1582412083, 71.4]`. A list of such tuples is a set of data. They share the same type of columns
            in a set of data, and the columns are explicitly represented in a separate field.
        columns:
          type: array
          items:
            $ref: '#/components/schemas/ColumnType'
          description: Columns explain how to interpret the values in the data. `uuid` and `timestamp`
            are mandatory, and specific `value_type`s can be specified.
          default:
          - uuid
          - timestamp
          - number
    TokenResponse:
      title: TokenResponse
      required:
      - token
      - name
      - exp
      type: object
      properties:
        token:
          title: Token
          type: string
          description: JWT token
        name:
          title: Name
          type: string
          description: Associated name with the token
        exp:
          title: Exp
          type: integer
          description: The token's expiration time in unix timestamp
    ValidationError:
      title: ValidationError
      required:
      - loc
      - msg
      - type
      type: object
      properties:
        loc:
          title: Location
          type: array
          items:
            type: string
        msg:
          title: Message
          type: string
        type:
          title: Error Type
          type: string
    ValueType:
      title: ValueType
      enum:
      - number
      - text
      - loc
      type: string
      description: An enumeration.
  securitySchemes:
    HTTPBearer:
      type: http
      scheme: bearer
      bearerFormat: JWT