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