Ostrom Contracts API
Describe how to fetch information related with contracts
Describe how to fetch information related with contracts
openapi: 3.1.0
info:
title: Ostrom Auth Contracts API
version: '2023-11-01'
description: 'The Ostrom API is designed to allow our customer and partners to develop apps that integrates with our smart energy management platform. The API has a RESTful architecture and utilizes OAuth2 authorization.
'
license:
name: Ostrom Commercial License
url: https://ostrom.de
servers:
- url: https://sandbox.ostrom-api.io
description: Sandbox environment (test data)
- url: https://production.ostrom-api.io
description: Production environment (live data)
- url: https://auth.sandbox.ostrom-api.io
description: Authentication sandbox environment (generate access token - test data)
- url: https://auth.production.ostrom-api.io
description: Authentication production environment (generate access token - live data)
tags:
- name: Contracts
description: Describe how to fetch information related with contracts
paths:
/contracts:
get:
operationId: getContracts
tags:
- Contracts
summary: Retrieve user contracts information
description: 'Allowed role: `USER`'
security:
- ClientAccessToken: []
responses:
'200':
description: Successful user contract data fetch
content:
application/json:
schema:
$ref: '#/components/schemas/GetContractsResponse'
'400':
description: The request is invalid
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequestError400'
'401':
description: Unauthorized access
content:
application/json:
schema:
$ref: '#/components/schemas/UnauthorizedError401'
'404':
description: Entity with the provided id was not found
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequestError404'
'429':
description: Too Many Requests
content:
application/json:
schema:
$ref: '#/components/schemas/TooManyRequestError429'
/contracts/{contractId}/energy-consumption:
get:
operationId: getContractEnergyConsumption
tags:
- Contracts
summary: Retrieve user contract smart meter consumption
description: 'Allowed role: `USER`'
parameters:
- in: path
name: contractId
schema:
type: number
required: true
description: ID of the contract
- in: query
name: startDate
schema:
type: string
format: date-time
required: true
description: start date ISO format on UTC timezone. e.g. 2023-11-01T00:00:00.000Z
- in: query
name: endDate
schema:
type: string
format: date-time
required: true
description: end date ISO format on UTC timezone. e.g. 2023-11-02T00:00:00.000Z
- in: query
name: resolution
schema:
type: string
enum:
- HOUR
- DAY
- MONTH
required: true
description: The unit of time the data will be aggregated
security:
- ClientAccessToken: []
responses:
'200':
description: Successful user contract energy consumption data fetch
content:
application/json:
schema:
$ref: '#/components/schemas/GetContractsEnergyConsumptionResponse'
'400':
description: The request is invalid
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequestError400'
'401':
description: Unauthorized access
content:
application/json:
schema:
$ref: '#/components/schemas/UnauthorizedError401'
'404':
description: Entity with the provided id was not found
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequestError404'
'429':
description: Too Many Requests
content:
application/json:
schema:
$ref: '#/components/schemas/TooManyRequestError429'
/users/{externalUserId}/contracts:
get:
operationId: getContractsByExternalUserId
tags:
- Contracts
summary: Retrieve user contracts information by external user id
description: 'Allowed role: `PARTNER`'
parameters:
- in: path
name: externalUserId
schema:
type: string
required: true
description: Partner user unique identifier
security:
- ClientAccessToken: []
responses:
'200':
description: Successful user contract data fetch
content:
application/json:
schema:
$ref: '#/components/schemas/GetContractsResponse'
'400':
description: The request is invalid
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequestError400'
'401':
description: Unauthorized access
content:
application/json:
schema:
$ref: '#/components/schemas/UnauthorizedError401'
'404':
description: Entity with the provided id was not found
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequestError404'
'429':
description: Too Many Requests
content:
application/json:
schema:
$ref: '#/components/schemas/TooManyRequestError429'
/users/{externalUserId}/contracts/{contractId}:
get:
operationId: getContractByExternalUserId
tags:
- Contracts
summary: Retrieve user contract information by external user id
description: 'Allowed role: `PARTNER`'
parameters:
- in: path
name: externalUserId
schema:
type: string
required: true
description: Partner user unique identifier
- in: path
name: contractId
schema:
type: number
required: true
description: ID of the contract
security:
- ClientAccessToken: []
responses:
'200':
description: Successful user contract data fetch
content:
application/json:
schema:
$ref: '#/components/schemas/GetContractsItemResponse'
'400':
description: The request is invalid
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequestError400'
'401':
description: Unauthorized access
content:
application/json:
schema:
$ref: '#/components/schemas/UnauthorizedError401'
'404':
description: Entity with the provided id was not found
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequestError404'
'429':
description: Too Many Requests
content:
application/json:
schema:
$ref: '#/components/schemas/TooManyRequestError429'
/users/{externalUserId}/contracts/{contractId}/energy-consumption:
get:
operationId: getContractEnergyConsumptionByExternalUserId
tags:
- Contracts
summary: Retrieve user contract smart meter consumption by external user id
description: 'Allowed role: `PARTNER`'
parameters:
- in: path
name: externalUserId
schema:
type: string
required: true
description: Partner user unique identifier
- in: path
name: contractId
schema:
type: number
required: true
description: ID of the contract
- in: query
name: startDate
schema:
type: string
format: date-time
required: true
description: start date ISO format on UTC timezone. e.g. 2023-11-01T00:00:00.000Z
- in: query
name: endDate
schema:
type: string
format: date-time
required: true
description: end date ISO format on UTC timezone. e.g. 2023-11-02T00:00:00.000Z
- in: query
name: resolution
schema:
type: string
enum:
- HOUR
- DAY
- MONTH
required: true
description: The unit of time the data will be aggregated
security:
- ClientAccessToken: []
responses:
'200':
description: Successful user contract energy consumption data fetch
content:
application/json:
schema:
$ref: '#/components/schemas/GetContractsEnergyConsumptionResponse'
'400':
description: The request is invalid
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequestError400'
'401':
description: Unauthorized access
content:
application/json:
schema:
$ref: '#/components/schemas/UnauthorizedError401'
'404':
description: Entity with the provided id was not found
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequestError404'
'429':
description: Too Many Requests
content:
application/json:
schema:
$ref: '#/components/schemas/TooManyRequestError429'
components:
schemas:
GetContractsItemResponse:
type: object
properties:
id:
type: number
description: The id of the contract
type:
type: string
description: type of the contract
productCode:
type: string
description: Product code of the contract
status:
type: string
description: Status of the contract
customerFirstName:
type: string
description: Customer first name
customerLastName:
type: string
description: Customer last name
startDate:
type: string
description: Start date of the contract in ISO format
currentMonthlyDepositAmount:
type: string
description: Current monthly deposit amount in EUR of the contract
address:
$ref: '#/components/schemas/GetContractsAddressResponse'
example:
id: '100523456'
type: ELECTRICITY
productCode: SIMPLY_DYNAMIC
status: ACTIVE
customerFirstName: Max
customerLastName: Mustermann
startDate: '2024-03-22'
currentMonthlyDepositAmount: 120
address:
zip: '22083'
city: Hamburg
street: Mozartstr.
houseNumber: '35'
BadRequestError400:
type: object
properties:
type:
type: string
description: The type of the error
detail:
type: string
description: A human-readable message providing more details about the error
example:
type: bad_request
detail: invalid fields array...
UnauthorizedError401:
type: object
properties:
type:
type: string
description: The type of the error
detail:
type: string
description: A human-readable message providing more details about the error
example:
type: unauthorized
detail: Unauthorized API access.
TooManyRequestError429:
type: object
properties:
type:
type: string
description: The type of the error
detail:
type: string
description: A human-readable message providing more details about the error
example:
type: too_many_requests
detail: API request limit per minute has been reached. Please try again later.
GetContractsEnergyConsumptionItemResponse:
type: object
properties:
date:
type: string
description: The date of the energy consumption data (start from)
example: '2023-10-22T01:00:00.000Z'
kWh:
type: number
description: The energy consumption in kWh
example: 0.48
BadRequestError404:
type: object
properties:
type:
type: string
description: The type of the error
detail:
type: string
description: A human-readable message providing more details about the error
example:
type: not_found
detail: information about not found object...
GetContractsResponse:
type: object
properties:
data:
type: array
description: Contact data
items:
$ref: '#/components/schemas/GetContractsItemResponse'
GetContractsEnergyConsumptionResponse:
type: object
properties:
data:
type: array
description: The energy consumption data
items:
$ref: '#/components/schemas/GetContractsEnergyConsumptionItemResponse'
GetContractsAddressResponse:
type: object
description: The address of the contract
properties:
zip:
type: string
description: The zip code of the address
city:
type: string
description: The city of the address
street:
type: string
description: The street of the address
houseNumber:
type: string
description: The house number of the address
securitySchemes:
ClientAccessToken:
type: oauth2
description: 'A `ClientAccessToken` is obtained via the [OAuth 2.0 Client Credentials grant](https://www.oauth.com/oauth2-servers/access-tokens/client-credentials/) and carries authorization to access all functionalities and data in your Ostrom account. Full details at [The ClientAccessToken](/api/reference#getting-an-access-token)
'
flows:
clientCredentials:
tokenUrl: https://auth.sandbox.ostrom-api.io/oauth2/token
scopes: {}
OAuth2BasicAuth:
type: http
scheme: basic