Skip to content

Contracting API v3 (Alpha)

MonopolxContractsAdapter

MonopolX PSFS Contracting API Adapter.

GetContract

Get a specific contract.

ListContracts

List contracts with optional filters.
Due to performance limitation, this method is restricted to return a maximum of 50 contracts per call.

CreateContract

Create a contract.

CommodityB2CContractSubjectDetails

Field Type Rules Description
*delivery EnergyDelivery Which kind and amount of energy is to be delivered to where.
*meter_number string The current meter number.
is_relocatable bool output only The contract can be relocated.
previous_contract string output only The id of the previous contract, if contract was relocated.
next_invoice google.type.Date output only The expected next invoice.
latest_cancellation_date google.type.Date output only The latest date when a cancellation can take place.
tariff ContractTariff output only The tariff this contract is for.
future_tariff ContractTariff output only The future tariff of this contract.
delivery_date google.type.Date The delivery start date.
*cancel_for_customer bool Cancel contract for customer.
(-- api-linter: core::0140::prepositions=disabled
*previous_provider string Previous Provider.

ContractTariff

Field Type Rules Description
active_range enpowerx.types.v3.DateRange The date range when the tariff is active.
product string The product ID.
display_name string A human-readable name for the product.
fixed_cost RecurringCost The fixed recurring cost.
working_price enpowerx.types.v3.Price The price per usage in kWh.
eco_percentage int32 The percentage of environmentally friendly power generation.
graduated_prices ContractTariff.GraduatedPrice repeated The graduated prices belonging to this contract, if it is a contract based on graduated prices.
is_price_adjustment bool True if current tariff was created as a price adjustment of any previous tariff

ContractTariff.GraduatedPrice

Field Type Rules Description
start int32 The starting range in kWh.
end int32 The end range in kWh.
base_price enpowerx.types.v3.Price The base price component of the graduated price.
working_prices ContractTariff.GraduatedPrice.WorkingPrice repeated The working price components (HT/NT) of the graduated price.

ContractTariff.GraduatedPrice.WorkingPrice

Field Type Rules Description
register_type RegisterType The type of register this price is valid for.
price enpowerx.types.v3.Price The actual working price.

RegisterType

Name Number Description
REGISTER_TYPE_UNSPECIFIED 0 Type is not specified
SINGLE_TARIFF 1 Single tariff meter
DOUBLE_TARIFF_PEAK 2 aka Hochtarif (HT)
DOUBLE_TARIFF_OFF_PEAK 3 aka Niedertarif (NT)

Address

The address of a legal entity. At least one of the following must be set.

Field Type Rules Description
email string The email address.
phone string The phone number.
mobile_phone string The mobile phone number.
postal_address enpowerx.types.v3.PostalAddress The postal address.

Contact

Information on how to address a legal entity. A legal entity can be either a natural person or a company with an optional contact Natural Person: Must provide person Company: Must provide company

Field Type Rules Description
*name string The resource's full qualified name. Use _customer_id when creating contacts while creating a customer.
etag string The etag of the contact (for legal_contact the etag of the customer is used)
REQUIRED for mutating requests
update_time google.protobuf.Timestamp output only The timestamp that the resource was updated.
*purpose string The purpose the contact is meant to be used for.
Known values are:
- marketing
- billing
annotations google.protobuf.Struct Annotations for his contact.
person Person The person.
company string The company name.
*address Address The address of the entity.

Person

Field Type Rules Description
salutation Person.SalutationForm The salutation of the person.
title string The title of the person.
*firstname string The first name of the person.
*lastname string The last name of the person.
birthday google.type.Date The birthday of the person.

Person.SalutationForm

Name Number Description
SALUTATION_FORM_UNSPECIFIED 0 The salutation form is unspecified.
MRS 1 The salutation form is Mrs..
MR 2 The salutation form is Mr..
DIVERSE 3 The salutation form is Diverse.
FAMILY 4 The salutation form is Family.

Contracts

Manage contracts.

GetContract

Get a specific contract.

Input: GetContractRequest

Field Type Rules Description
*name string The contract's full qualified name

Output: Contract

Field Type Rules Description
*name string The resource's full qualified name
annotations google.protobuf.Struct The resource's annotations
etag string The etag of this contract to detect concurrent access collisions
REQUIRED except for creating contract
update_time google.protobuf.Timestamp output only The timestamp that the resource was updated.
*subject Contract.Subject The contract's subject
*billing_details BillingDetails The current billing details associated of the contract.
*billing_cycle Contract.BillingCycle The billing cycle for this contract.
*billing_contact string The resource name of the billing contact for this contract.
target_invoice_date google.type.Date The target invoice date to be used for this contract.
- day set: The specified day is used every billed month.
- month and day set: The day of month is used every year.
- full date set: The specified day is used.
payment_due enpowerx.types.v3.Duration The payment due duration to be applied on each and every invoice.
For recurrence check target_invoice_date.
state StateEntry output only The current state of the contract.
*period enpowerx.types.v3.DateRange The contract period.
end is set if the contract was already terminated or has a planned termination in the future.
This period aggregates the complete renewal history.
minimum_duration enpowerx.types.v3.Duration The minimum duration of the contract.
cancellation_period enpowerx.types.v3.Duration The cancellation period of the contract.
next_cancellation_date google.type.Date output only The next date when a cancellation can take place.
automatic_renewal_period enpowerx.types.v3.Duration The renewal period of the contract.

ContractB2CDetails

Only exists to generate b2c contract details messages.
(-- api-linter: core::0127::http-annotation=disabled
aip.dev/not-precedent: We need to do this because we want to generate documentation for unused messages. --)

Input: GetContractRequest

Field Type Rules Description
*name string The contract's full qualified name

ContractMonopolXDetails

Only exists to generate monopolX contract details messages.
(-- api-linter: core::0127::http-annotation=disabled
aip.dev/not-precedent: We need to do this because we want to generate documentation for unused messages. --)

Input: GetContractRequest

Field Type Rules Description
*name string The contract's full qualified name

ListContracts

List contracts with optional filters.

Input: ListContractsRequest

Field Type Rules Description
*parent string The tenant the contract belongs to.
page_size int32 The maximum number of items to return. 0 for default.
page_token string The next_page_token value returned from a previous List request, if any.
filter string The filter to be applied on all contracts.
order_by string Comma separated list of fields to order by. Use - for descending order, e.g. "-next_cancellation_date".

Output: ListContractsResponse

Field Type Rules Description
contracts Contract repeated The requested contracts.
next_page_token string Token to retrieve the next page of results, or empty if there are no more results in the list.

CreateContract

TODO: unklar
Create a contract.

Input: CreateContractRequest

Field Type Rules Description
*parent string The resource's parent
*contract Contract The contract to be created
contract_id string The ID to use for the contract, which will become the final component of the contract's resource name.

Output: Contract

Field Type Rules Description
*name string The resource's full qualified name
annotations google.protobuf.Struct The resource's annotations
etag string The etag of this contract to detect concurrent access collisions
REQUIRED except for creating contract
update_time google.protobuf.Timestamp output only The timestamp that the resource was updated.
*subject Contract.Subject The contract's subject
*billing_details BillingDetails The current billing details associated of the contract.
*billing_cycle Contract.BillingCycle The billing cycle for this contract.
*billing_contact string The resource name of the billing contact for this contract.
target_invoice_date google.type.Date The target invoice date to be used for this contract.
- day set: The specified day is used every billed month.
- month and day set: The day of month is used every year.
- full date set: The specified day is used.
payment_due enpowerx.types.v3.Duration The payment due duration to be applied on each and every invoice.
For recurrence check target_invoice_date.
state StateEntry output only The current state of the contract.
*period enpowerx.types.v3.DateRange The contract period.
end is set if the contract was already terminated or has a planned termination in the future.
This period aggregates the complete renewal history.
minimum_duration enpowerx.types.v3.Duration The minimum duration of the contract.
cancellation_period enpowerx.types.v3.Duration The cancellation period of the contract.
next_cancellation_date google.type.Date output only The next date when a cancellation can take place.
automatic_renewal_period enpowerx.types.v3.Duration The renewal period of the contract.

GetStateHistory

Get a specific contract's state history.

Input: GetStateHistoryRequest

Field Type Rules Description
*name string The contract's full qualified name

Output: StateHistory

Field Type Rules Description
*entries StateEntry repeated The entries of the history.

GetRenewalHistory

Get a specific contract's renewal history.

Input: GetRenewalHistoryRequest

Field Type Rules Description
*name string The contract's full qualified name

Output: RenewalHistory

Field Type Rules Description
*entries RenewContractRequest repeated The entries of the history.

RenewContract

Renew a contract.

Input: RenewContractRequest

Field Type Rules Description
*name string The renewed contract.
*target_end_date google.type.Date The next date when a cancellation can take place.
*initiator Initiator The initiator for the renewal.
create_time google.protobuf.Timestamp output only The date the renewal was created.

Output: RenewalHistory

Field Type Rules Description
*entries RenewContractRequest repeated The entries of the history.

GetBillingDetailsHistory

Get a specific contract's billing details history.
(-- api-linter: core::0127::http-template-syntax=disabled
aip.dev/not-precedent: We need to do this because otherwise we would have billing details as one word which
is not very readable --)

Input: GetBillingDetailsHistoryRequest

Field Type Rules Description
*name string The contract's full qualified name

Output: BillingDetailsHistory

Field Type Rules Description
*entries BillingDetails repeated The history entries.

RegisterBillingDetails

Register new billing details for a contract.
(-- api-linter: core::0127::http-template-syntax=disabled
aip.dev/not-precedent: We need to do this because otherwise we would have billing details as one word which
is not very readable --)

Input: BillingDetails

Field Type Rules Description
*parent string The contract the billing details belong to.
*active google.type.Date The date these details start being active.
The entry where min(|today-active|) | today>active is the currently active one.
bank_account_depositing string The bank account for deposits attached to this contract.
bank_account_withdrawal string The bank account for withdrawals to this contract.
Required if method is DIRECT_DEBIT
sepa_mandate_reference string SEPA mandate reference. Only for DIRECT_DEBIT
*payment_method PaymentMethod immutable The payment method used for withdrawals.

Output: BillingDetailsHistory

Field Type Rules Description
*entries BillingDetails repeated The history entries.

CancelContract

Cancel a specific contract.

Input: ContractCancelRequest

Field Type Rules Description
*name string The contract's full qualified name
*cancellation_reason string The reason for the contract cancellation.
due_date google.type.Date The date the cancellation shall take place. Waits until the end of the contract period if unset.
details google.protobuf.Any Potential details for this cancellation.

UpdateContract

Update contract.

Input: UpdateContractRequest

Field Type Rules Description
*contract Contract The contract resource which replaces the resource on the server.
update_mask google.protobuf.FieldMask The update mask applies to the resource. For the FieldMask definition,
see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmask
only billing_contact can be updated

Output: Contract

Field Type Rules Description
*name string The resource's full qualified name
annotations google.protobuf.Struct The resource's annotations
etag string The etag of this contract to detect concurrent access collisions
REQUIRED except for creating contract
update_time google.protobuf.Timestamp output only The timestamp that the resource was updated.
*subject Contract.Subject The contract's subject
*billing_details BillingDetails The current billing details associated of the contract.
*billing_cycle Contract.BillingCycle The billing cycle for this contract.
*billing_contact string The resource name of the billing contact for this contract.
target_invoice_date google.type.Date The target invoice date to be used for this contract.
- day set: The specified day is used every billed month.
- month and day set: The day of month is used every year.
- full date set: The specified day is used.
payment_due enpowerx.types.v3.Duration The payment due duration to be applied on each and every invoice.
For recurrence check target_invoice_date.
state StateEntry output only The current state of the contract.
*period enpowerx.types.v3.DateRange The contract period.
end is set if the contract was already terminated or has a planned termination in the future.
This period aggregates the complete renewal history.
minimum_duration enpowerx.types.v3.Duration The minimum duration of the contract.
cancellation_period enpowerx.types.v3.Duration The cancellation period of the contract.
next_cancellation_date google.type.Date output only The next date when a cancellation can take place.
automatic_renewal_period enpowerx.types.v3.Duration The renewal period of the contract.

ListMine

List contracts for the current customer (identity from OAuth token).

Input: ListContractsRequest

Field Type Rules Description
*parent string The tenant the contract belongs to.
page_size int32 The maximum number of items to return. 0 for default.
page_token string The next_page_token value returned from a previous List request, if any.
filter string The filter to be applied on all contracts.
order_by string Comma separated list of fields to order by. Use - for descending order, e.g. "-next_cancellation_date".

Output: ListContractsResponse

Field Type Rules Description
contracts Contract repeated The requested contracts.
next_page_token string Token to retrieve the next page of results, or empty if there are no more results in the list.

GetMine

Get a specific contract for the current customer (identity from OAuth token).

Input: MyContractRequest

Field Type Rules Description
*tenant string The tenant the contract belongs to.
*id string The contract's ID this request is targeting.

Output: Contract

Field Type Rules Description
*name string The resource's full qualified name
annotations google.protobuf.Struct The resource's annotations
etag string The etag of this contract to detect concurrent access collisions
REQUIRED except for creating contract
update_time google.protobuf.Timestamp output only The timestamp that the resource was updated.
*subject Contract.Subject The contract's subject
*billing_details BillingDetails The current billing details associated of the contract.
*billing_cycle Contract.BillingCycle The billing cycle for this contract.
*billing_contact string The resource name of the billing contact for this contract.
target_invoice_date google.type.Date The target invoice date to be used for this contract.
- day set: The specified day is used every billed month.
- month and day set: The day of month is used every year.
- full date set: The specified day is used.
payment_due enpowerx.types.v3.Duration The payment due duration to be applied on each and every invoice.
For recurrence check target_invoice_date.
state StateEntry output only The current state of the contract.
*period enpowerx.types.v3.DateRange The contract period.
end is set if the contract was already terminated or has a planned termination in the future.
This period aggregates the complete renewal history.
minimum_duration enpowerx.types.v3.Duration The minimum duration of the contract.
cancellation_period enpowerx.types.v3.Duration The cancellation period of the contract.
next_cancellation_date google.type.Date output only The next date when a cancellation can take place.
automatic_renewal_period enpowerx.types.v3.Duration The renewal period of the contract.

Contract.Subject

Field Type Rules Description
*display_name string The subject's display name.
*kind string The full-qualified protobuf message name of the details.
*details google.protobuf.Any The subject specific details of a contract.

ContractIDRequest

Field Type Rules Description
*tenant string The tenant the contract belongs to.
*id string The ID identifying the contract in the tenant's scope.

StateEntry

Field Type Rules Description
state StateEntry.State output only The state of the contract
*active google.type.Date The date the state became active.
Active range is considered to be the interval between active and the next entry's active date.
*initiator Initiator The initiator of this state change.
reason string The reason for this state change.
details google.protobuf.Any Potential details for this specific state change.

Contract.BillingCycle

Name Number Description
BILLING_CYCLE_UNSPECIFIED 0 The contract is unspecified.
ONCE 1 The contract is only billed once.
DAILY 2 The contract is billed daily.
MONTHLY 3 The contract is billed monthly.
BI_MONTHLY 4 The contract is billed every other month.
QUARTERLY 5 The contract is billed every three months.
FOUR_MONTHLY 6 The contract is billed every four months.
SEMI_ANNUAL 7 The contract is billed twice a year.
ANNUAL 8 The contract is billed annually.

Initiator

Name Number Description
INITIATOR_UNSPECIFIED 0 Event was initiated by an unknown entity.
CUSTOMER 1 Event was initiated by Customer.
AGENT 2 Event was initiated by Agent.
PROVIDER 3 Event was initiated by Provider.
SYSTEM 4 Event was initiated by System.

StateEntry.State

Name Number Description
STATE_UNSPECIFIED 0 The contract state is unspecified.
CREATING 1 The contract is newly created in 'contracting' and psfs is called to create the contract.
CREATED 2 The contract is newly created in psfs and awaiting further processing.
WAITING 3 The contract waiting for some business requirements to be pleased (acknowledgement from grid operator, ...)
ACTIVE 4 The contract is active.
CANCELLING 5 The contract cancellation has been requested.
CANCELLED_ACTIVE 6 The cancellation is confirmed but the contract is still active.
CANCELLED 7 The contract reached its cancellation date.
ABORTING 8 Contract was in a invalid state and abortion has been requested.
ABORTED 9 Contract has been aborted due to an invalid state.
RENEWING 10 Contract renewal has been requested.
EXPIRED 11 Contract has exceeded its time of validity.

CustomerType

Represents the kind of the customer.

Name Number Description
CUSTOMER_TYPE_UNSPECIFIED 0 The customer type is unspecified.
PRIVATE 1 The customer type is private.
BUSINESS 2 The customer type is business.
BOTH 3 The customer type is private and business.

Customers

Manage customers.

GetCustomer

Get a specific customer.

Input: GetCustomerRequest

Field Type Rules Description
*name string The customer's full qualified name.

Output: Customer

Field Type Rules Description
name string output only The resource's full qualified name.
annotations google.protobuf.Struct The resource's annotations.
etag string The etag of this customer to detect concurrent access collisions
REQUIRED except for creating customer
update_time google.protobuf.Timestamp output only The timestamp that the resource was updated.
*type CustomerType The type of this customer.
person Person The legal contact for this customer. At least one of person or company is required
The person.
company string The company name.
*address Address The address of the entity.
contacts Contact repeated The other contacts for this customer;
this could be marketing or alternative billing contacts.

CreateCustomer

Create a specific customer.
If a customer with the the same 'legal_contact' already exists,
the request will fail with ALREADY_EXISTS and return the existing customer's name.

Input: CreateCustomerRequest

(-- api-linter: core::0133::request-id-field=disabled aip.dev/not-precedent: We need to do this because contracting service generates a unique customer number. --)

Field Type Rules Description
*parent string The resource's parent
*customer Customer The customer to be created

Output: Customer

Field Type Rules Description
name string output only The resource's full qualified name.
annotations google.protobuf.Struct The resource's annotations.
etag string The etag of this customer to detect concurrent access collisions
REQUIRED except for creating customer
update_time google.protobuf.Timestamp output only The timestamp that the resource was updated.
*type CustomerType The type of this customer.
person Person The legal contact for this customer. At least one of person or company is required
The person.
company string The company name.
*address Address The address of the entity.
contacts Contact repeated The other contacts for this customer;
this could be marketing or alternative billing contacts.

UpdateCustomer

Update a customer.

Input: UpdateCustomerRequest

Field Type Rules Description
customer Customer The customer resource which replaces the resource on the server.
update_mask google.protobuf.FieldMask The update mask applies to the resource. For the FieldMask definition,
see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmask

Output: Customer

Field Type Rules Description
name string output only The resource's full qualified name.
annotations google.protobuf.Struct The resource's annotations.
etag string The etag of this customer to detect concurrent access collisions
REQUIRED except for creating customer
update_time google.protobuf.Timestamp output only The timestamp that the resource was updated.
*type CustomerType The type of this customer.
person Person The legal contact for this customer. At least one of person or company is required
The person.
company string The company name.
*address Address The address of the entity.
contacts Contact repeated The other contacts for this customer;
this could be marketing or alternative billing contacts.

ListCustomers

List customers with optional filters.

Input: ListCustomersRequest

Field Type Rules Description
*parent string The tenant the contract belongs to.
page_size int32 The maximum number of items to return. 0 for default.
page_token string The next_page_token value returned from a previous List request, if any.
filter string The filter to be applied on all customers.
order_by string Comma separated list of fields to order by. Use - for descending order, e.g. "-last_name".

Output: ListCustomersResponse

Field Type Rules Description
customers Customer repeated The requested customers.
next_page_token string Token to retrieve the next page of results, or empty if there are no more results in the list.

GetMe

Get the current customer (identity from OAuth token).
(-- api-linter: core::0131::response-message-name=disabled
aip.dev/not-precedent: We need to do this because we want to return the customer object of the requester. --)

Input: GetMeRequest

Field Type Rules Description
*name string The tenant the customer belongs to.

Output: Customer

Field Type Rules Description
name string output only The resource's full qualified name.
annotations google.protobuf.Struct The resource's annotations.
etag string The etag of this customer to detect concurrent access collisions
REQUIRED except for creating customer
update_time google.protobuf.Timestamp output only The timestamp that the resource was updated.
*type CustomerType The type of this customer.
person Person The legal contact for this customer. At least one of person or company is required
The person.
company string The company name.
*address Address The address of the entity.
contacts Contact repeated The other contacts for this customer;
this could be marketing or alternative billing contacts.

ImpersonateCustomer

Impersonate a customer. The impersonating identity is taken from the OAuth token.

Input: GetCustomerRequest

Field Type Rules Description
*name string The customer's full qualified name.

GetBankAccount

Get a bank account.
(-- api-linter: core::0127::http-template-syntax=disabled
aip.dev/not-precedent: We need to do this because otherwise we would have bank accounts as one word which
is not very readable --)

Input: GetBankAccountRequest

Field Type Rules Description
*name string The bank account's full qualified name.

Output: BankAccount

Field Type Rules Description
*name string The resource's full qualified name.
etag string The etag of the bank account
REQUIRED for mutating requests
update_time google.protobuf.Timestamp output only The timestamp that the resource was updated.
*account_holder string The full name of the bank account holder.
*iban string The International Bank Account Number.
bic string The Bank Identifier Code.
bank string The name of the bank.

CreateBankAccount

Create a new bank account for a customer.
(-- api-linter: core::0127::http-template-syntax=disabled
aip.dev/not-precedent: We need to do this because otherwise we would have bank accounts as one word which
is not very readable --)

Input: CreateBankAccountRequest

Field Type Rules Description
*parent string The resource's parent
*bank_account BankAccount The bank account to be created
bank_account_id string The ID to use for the bank account, which will become the final component of
the bank account's resource name.

Output: BankAccount

Field Type Rules Description
*name string The resource's full qualified name.
etag string The etag of the bank account
REQUIRED for mutating requests
update_time google.protobuf.Timestamp output only The timestamp that the resource was updated.
*account_holder string The full name of the bank account holder.
*iban string The International Bank Account Number.
bic string The Bank Identifier Code.
bank string The name of the bank.

ListBankAccounts

List bank accounts for a customer.
(-- api-linter: core::0127::http-template-syntax=disabled
aip.dev/not-precedent: We need to do this because otherwise we would have bank accounts as one word which
is not very readable --)

Input: ListBankAccountsRequest

Field Type Rules Description
*parent string The customer the bank account belongs to.
page_size int32 The maximum number of items to return. 0 for default.
page_token string The next_page_token value returned from a previous List request, if any.
filter string The filter to be applied on all customers.
order_by string Comma separated list of fields to order by. Use - for descending order, e.g. "-account_holder".

Output: ListBankAccountsResponse

Field Type Rules Description
bank_accounts BankAccount repeated The requested bank accounts.
next_page_token string Token to retrieve the next page of results, or empty if there are no more results in the list.

GetContact

Get a specific contact.

Input: GetContactRequest

Field Type Rules Description
*name string The contact's full qualified name

CreateContact

Create a contact.

Input: CreateContactRequest

Field Type Rules Description
*parent string The resource's parent.
*contact Contact The contact to be created
contact_id string The ID to use for the contact, which will become the final component of the contact's resource name.

UpdateContact

Update a contact.

Input: UpdateContactRequest

Field Type Rules Description
*contact Contact The contact resource which replaces the resource on the server.
update_mask google.protobuf.FieldMask The update mask applies to the resource. For the FieldMask definition,
see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmask

BankAccountRequest

Field Type Rules Description
*name string The resource's full qualified name.

EnergyDelivery

Describes which kind and amount of energy is to be delivered to where.

Field Type Rules Description
*energy_type enpowerx.types.v3.Commodity The kind of the energy.
*customer_type CustomerType The kind of the customer.
*address enpowerx.types.v3.PostalAddress The address to deliver energy to.
annual_usage int32 The estimated power usage in kWh per year.
usage_type EnergyDelivery.UsageType The usage type for the delivered energy.
annual_usage_nt int32 The estimated off-peak power usage in kWh per year (DE: Niedertarifverbrauch).

EnergyDelivery.UsageType

Name Number Description
USAGE_TYPE_UNSPECIFIED 0 The consumption type is unspecified.
HOUSEHOLD_ELECTRICITY 1 The energy is used for household.
CHARGING_CURRENT 2 The energy is used for charging.
STORAGE_HEATER 3 The energy is used for a storage heater.
HEAT_PUMP 4 The energy is used for a heat pump.
HOUSEHOLD_ELECTRICITY_AND_STORAGE_HEATER 5 The energy is used for household with storage heater.
HOUSEHOLD_ELECTRICITY_AND_HEAT_PUMP 6 The energy is used for household with heat pump.

ContractAborted

Field Type Rules Description
contract Contract The aborted contract.

ContractCancelled

Field Type Rules Description
contract Contract The cancelled contract.

ContractCreated

Field Type Rules Description
contract Contract The created contract.

ContractRenewed

Field Type Rules Description
contract Contract The renewed contract.

ContractUpdated

Field Type Rules Description
contract Contract The updated contract.

CustomerBankAccountCreated

Field Type Rules Description
bank_account BankAccount The created bank account.

CustomerCreated

Field Type Rules Description
customer Customer The created customer.

CustomerUpdated

Field Type Rules Description
customer Customer The updated customer.

MonopolXContractSubjectDetails

Field Type Rules Description
*energy_type enpowerx.types.v3.Commodity The kind of the energy.
*delivery_location MonopolXContractSubjectDetails.DeliveryLocation The delivery locations associated with the contract.
meters MonopolXContractSubjectDetails.Meter output only
repeated
The meters associated with the contract.
*consumption_prognosis MonopolXContractSubjectDetails.ConsumptionPrognosis The consumption prognosis associated with the contract.
*product string The product associated with this contract.
create_time google.protobuf.Timestamp output only The creation time of the contract.
update_time google.protobuf.Timestamp output only The last update time of the contract.

MonopolXContractSubjectDetails.ConsumptionPrognosis

Field Type Rules Description
validity_start_date google.type.Date Date from which the prognosis will be valid, if not set the date will be determined by the following rules:
- The contract's start data on contract creating
- The current date on contract updating
*prognosis enpowerx.types.v3.Decimal Estimated annual consumption prognosis.

MonopolXContractSubjectDetails.DeliveryLocation

Field Type Rules Description
malo string output only The MaLo (DE: Marktlokation) associated with delivery location.
*installation string Reference to the installation (DE: Anlage) of the delivery location.
floor string output only Floor of the building or other more specific description if the premise (DE: Verbrauchsstelle).
address enpowerx.types.v3.PostalAddress output only Address of the connection object (DE: Anschlussobjekt)
geo_location google.type.LatLng output only Geolocation

MonopolXContractSubjectDetails.Meter

Field Type Rules Description
device string output only The device associated with the meter.
meter_number string output only The number of the meter
melo string output only The MeLo (DE: Messlokation) associated with the meter.

PaymentMethod

Possible methods for paying invoices.

Name Number Description
PAYMENT_METHOD_UNSPECIFIED 0 The payment method method is unspecified.
DIRECT_DEBIT 1 Money is automatically withdrawn from the specified bank account.
MANUAL_TRANSFER 2 The customer pays bills manually using money transfers.

RecurringCost

Represents a price/cost that repeats at a fixed interval.

Field Type Rules Description
*price enpowerx.types.v3.Price The price per interval.
*interval google.type.CalendarPeriod The interval at which the cost occurs (per day, month, etc.).

Shared Types

Amount

Field Type Rules Description
unit string The unit of the amount. E.g.'kWh' or 'PCS' for pieces.
units int64 The whole units of the amount.
For example if unit is "PCS", then 1 unit is one piece.
nanos int32 Number of nano (10^-9) units of the amount.
The value must be between -999,999,999 and +999,999,999 inclusive.
If units is positive, nanos must be positive or zero.
If units is zero, nanos can be positive, zero, or negative.
If units is negative, nanos must be negative or zero.
For example $-1.75 is represented as units=-1 and nanos=-750,000,000.

BankAccount

Information about a bank account.

Field Type Rules Description
*iban string The International Bank Account Number.
bic string The Bank Identifier Code.
account_holder string The name of the account holder.
bank string The name of the bank.

CustomerType

Represents the kind of the customer.

Name Number Description
CUSTOMER_TYPE_UNSPECIFIED 0 The customer type is unspecified.
PRIVATE 1 The customer type is private.
BUSINESS 2 The customer type is business.
BOTH 3 The customer type is private and business.

DateRange

Represents a range of dates.

Field Type Rules Description
*start google.type.Date The inclusive start date.
end google.type.Date The inclusive end date.
end_exclusive google.type.Date The exclusive end date.
time_zone string The time zone of the date range (defaults to Europe/Berlin).

DateTimeRange

Represents a range of date times.

Field Type Rules Description
*start google.protobuf.Timestamp The inclusive start date.
end google.protobuf.Timestamp The inclusive end date.

Decimal

Field Type Rules Description
units int64 The whole units of the amount.
nanos int32 Number of nano (10^-9) units of the amount.
The value must be between -999,999,999 and +999,999,999 inclusive.
If units is positive, nanos must be positive or zero.
If units is zero, nanos can be positive, zero, or negative.
If units is negative, nanos must be negative or zero.
For example $-1.75 is represented as units=-1 and nanos=-750,000,000.

Billing

Billing details.

Field Type Rules Description
*contact Contact The contact to send invoices to.
*payment_method PaymentMethod The payment method method.
bank_account BankAccount The bank account used if payment_method is DIRECT_DEBIT.

CommunicationChannel

Communication channel.

Name Number Description
COMMUNICATION_CHANNEL_UNSPECIFIED 0 Channel not specified.
LETTER 1 Send messages via letter.
EMAIL 2 Send messages via email.
SMS 3 Send messages via SMS.
MESSENGER 4 Send messages via messenger apps like WhatsApp.
PHONE 5 Communicate via telephone.

Contact

Contact details (postal, phone, etc.).

Field Type Rules Description
*person Person Information on how to address the contact.
postal_address PostalAddress The contact's postal address.
phone_number string The phone number of the contact.
Values are normalized into the form +123456789.
email string The email address of the contact.
careof Person A person that may receive communication in the name of the actual recipient (e.g. a "C/O" line added to the postal address).

Reading

Information about a reading.

Field Type Rules Description
*date google.type.Date The date when the reading was taken.
channel Reading.Channel How the reading was reported.
This is value is ignored when submitting via AddMine.
*values Reading.ValuesEntry repeated A map of values to submit with OBIS codes as the key.
ignore_plausibility_check_reason google.protobuf.StringValue If set the meter reading(s) will be saved, even if they're not plausible.
Specifies the reason why the plausibility check is to be ignored.

Reading.ValuesEntry

Field Type Rules Description
key string
value double

Reading.Channel

Name Number Description
CHANNEL_UNSPECIFIED 0 No channel specified.
PORTAL 1 Reported via end-user portal.
EMAIL 2 Reported via email.
LETTER 3 Reported via letter.
PHONE 4 Reported via phone call.
MSCONS 5 Reported via Metered Services Consumption report message.

Relocation

Information about the relocation of an contract.

Field Type Rules Description
*contract string The contract's ID this request is targeting.
*moveout_date google.type.Date The move-out date.
*movein_date google.type.Date The move-in date.
*delivery EnergyDelivery Which kind and amount of energy is to be delivered to where.
*use_new_address Relocation.UseNewAddress Use the new address as postal and billing address.
*meter string The ID of the meter at the new consumption point.
last_reading Reading The last reading at the old consumption point.
old_meter string The ID of the meter at the old consumption point.
Optional, must be set if a last reading is provided.

Relocation.UseNewAddress

Name Number Description
USE_NEW_ADDRESS_UNSPECIFIED 0 Use unspecified.
NO 1 Use not desired.
IMMEDIATELY 2 Use immediately desired.
ON_MOVE_IN 3 Use on moving in desired.

SalesInfo

Information on how a sale was made.

Field Type Rules Description
sales_partner_code string Direct sales partner code.
sales_partner_code_second string Second direct sales partner code.
campaign string Optional override for the default campaign.

ScheduledRequest

Reference to an entity with an optional scheduled starting date.

Field Type Rules Description
*id string The ID referencing the entity.
scheduled_date google.type.Date The scheduled starting date (earliest possible if unset).

TransitionType

Specifies modalities of a contract transition.

Name Number Description
TRANSITION_TYPE_UNSPECIFIED 0 The transition type is unspecified
MANUAL_TERMINATION 1 The customer terminates the prior contract.
VENDOR_TERMINATION 2 The vendor terminates the prior contract.
RELOCATION 3 The customer is going to or has recently moved to the new address.

Duration

Represents a coarse time duration (e.g., 2 months).

Field Type Rules Description
*units int32 The number of time units.
*type google.type.CalendarPeriod The type the units refer to (days, months, etc.).

EnergyDelivery

Describes which kind and amount of energy is to be delivered to where.

Field Type Rules Description
*energy_type EnergyType The kind of the energy.
*customer_type CustomerType The kind of the customer.
*address PostalAddress The address to deliver energy to.
annual_usage int32 The estimated power usage in kWh per year.
usage_type EnergyDelivery.UsageType The usage type for the delivered energy.
annual_usage_nt int32 The estimated off-peak power usage in kWh per year (DE: Niedertarifverbrauch).

EnergyDelivery.UsageType

Name Number Description
USAGE_TYPE_UNSPECIFIED 0 The consumption type is unspecified.
HOUSEHOLD_ELECTRICITY 1 The energy is used for household.
CHARGING_CURRENT 2 The energy is used for charging.
STORAGE_HEATER 3 The energy is used for a storage heater.
HEAT_PUMP 4 The energy is used for a heat pump.
HOUSEHOLD_ELECTRICITY_AND_STORAGE_HEATER 5 The energy is used for household with storage heater.
HOUSEHOLD_ELECTRICITY_AND_HEAT_PUMP 6 The energy is used for household with heat pump.

EnergyType

Represents the kind of the energy.

Name Number Description
ENERGY_TYPE_UNSPECIFIED 0 The energy type is unspecified.
ELECTRICITY 1 The energy type is electricity.
GAS 2 The energy type is gas.

FileContent

Field Type Rules Description
*mime_type string The media type / content type of the document.
*content bytes The raw data of the document.

AnnotationFilter

AnnotationFilter provides filter semantics for annotations.

Field Type Rules Description
*field string The annotation field path is a symbolic field path to target an annotation's field, for example:

"invoice.id", "is_consumption_based", ...
value google.protobuf.Value The value to match the annotation field's value.

DateFilter

DateFilter provides match semantics for date fields.

Field Type Rules Description
*date google.type.Date The date to filter for.
match_mode DateFilter.MatchMode The match mode to use. The default is EQUAL.

DateRangeFilter

DateTimeRangeFilter provides match semantics for date fields. The filter treats the start and end date as inclusive.

Field Type Rules Description
*start_date google.type.Date The start date to filter for.
*end_date google.type.Date The end date to filter for.

DateTimeFilter

DateTimeFilter provides match semantics for date time fields.

Field Type Rules Description
*time google.protobuf.Timestamp The date time to filter for.
match_mode DateTimeFilter.MatchMode The match mode to use. The default is EQUAL.

DateTimeRangeFilter

DateTimeRangeFilter provides match semantics for date time fields.

Field Type Rules Description
*start_time google.protobuf.Timestamp The start date time to filter for.
*end_time google.protobuf.Timestamp The end date time to filter for.

StringListFilter

Strings filter x IN and x NOT IN semantics.

Field Type Rules Description
*values string repeated The value to filter for.
negate bool If true the expression is negated.

StringScalarFilter

StringFilter provides match semantics for strings fields.

Field Type Rules Description
*value string The value to filter for.
match_mode StringScalarFilter.MatchMode The match mode to use.
negate bool If true the expression is negated.

DateFilter.MatchMode

Name Number Description
MATCH_MODE_UNSPECIFIED 0 The match mode is unspecified.
EQUAL 1 Filter only matches if the date is equal to the provided date.
BEFORE 2 Filter matches all dates that are before the provided date.
AFTER 3 Filter matches all dates that are after the provided date.
BEFORE_OR_EQUAL 4 Filter matches all dates that are before or equal to the provided date.
AFTER_OR_EQUAL 5 Filter matches all dates that are after or equal to the provided date.

DateTimeFilter.MatchMode

Name Number Description
MATCH_MODE_UNSPECIFIED 0 The match mode is unspecified.
EQUAL 1 Filter only matches if the date is equal to the provided date.
BEFORE 2 Filter matches all dates that are before the provided date.
AFTER 3 Filter matches all dates that are after the provided date.
BEFORE_OR_EQUAL 4 Filter matches all dates that are before or equal to the provided date.
AFTER_OR_EQUAL 5 Filter matches all dates that are after or equal to the provided date.

StringScalarFilter.MatchMode

Name Number Description
MATCH_MODE_UNSPECIFIED 0 The match mode is unspecified.
EXACT 1 Filter only matches if the field contains exactly the expected value.
PREFIX 2 Filter matches all fields that are prefixed with the given value.
SUFFIX 3 Filter matches all fields that are suffixed with the given value.
SUBSTRING 4 Filter matches all fields that contain the given value.

LetterAddress

Combines a name and a postal address.

Field Type Rules Description
*person Person The person being addressed.
careof string A person that may receive letters in the name of the actual recipient (e.g. a "C/O" line added to the postal address).
*postal_address PostalAddress The postal address.

MonthOfYear

Represents a month of a year.

Field Type Rules Description
month int32 Month of the year.
year int32 Year.

PaymentMethod

Possible methods for paying invoices.

Name Number Description
PAYMENT_METHOD_UNSPECIFIED 0 The payment method method is unspecified.
DIRECT_DEBIT 1 Money is automatically withdrawn from the specified bank account.
MANUAL_TRANSFER 2 The customer pays bills manually using money transfers.

Period

A period of time with inclusive start and inclusive and exclusive end time. If both (inclusive and exclusive) ends are specified, they must be consistent. If no end is specified, the period is considered unbounded on the end. If the time is unspecified it is considered to be 00:00:00.000000000 for the start (and exclusive end) and 23:59:59.999999999 for the inclusive end.

The following example represents a period of time from 2006-01-01 to 2006-01-31: { start_time: { hours: 0 minutes: 0 seconds: 0 nanos: 0 } start_date: { year: 2006 month: 1 day: 1 } end_time: { hours: 23 minutes: 59 seconds: 59 nanos: 999999999 } end_date: { year: 2006 month: 1 day: 31 } end_date_exclusive: { year: 2006 month: 2 day: 1 } end_time_exclusive: { hours: 0 minutes: 0 seconds: 0 nanos: 0 } }

Field Type Rules Description
start_time google.type.TimeOfDay The start time of the period (inclusive).
end_time google.type.TimeOfDay The end time of the period (inclusive).
start_date google.type.Date The start date of the period (inclusive).
end_date google.type.Date The end date of the period (inclusive).
end_time_exclusive google.type.TimeOfDay The end time of the period (exclusive).
end_date_exclusive google.type.Date The end date of the period (exclusive).
time_zone string The time zone of the period (defaults to Europe/Berlin).

Person

Information on how to address a person. A person can be either a natural person or a company with an optional contact Natural Person: Must provide firstname, lastname Company: Must provide company

Field Type Rules Description
salutation Person.SalutationForm The salutation of the person.
title string The title of the person.
firstname string The first name of the person.
lastname string The last name of the person.
birthday google.type.Date The birthday of the person.
company string The company name.

Person.SalutationForm

Name Number Description
SALUTATION_FORM_UNSPECIFIED 0 The salutation form is unspecified.
MRS 1 The salutation form is Mrs..
MR 2 The salutation form is Mr..
DIVERSE 3 The salutation form is Diverse.
FAMILY 4 The salutation form is Family.

PostalAddress

Represents a postal address, e.g. for postal delivery or payments addresses.

Field Type Rules Description
*region string The region the address is located in as a CLDR region code.
Example: DE for Germany
*postal_code string A postal code of the city (a city may have more than one).
Example: 76131 for Karlsruhe inner city
*city string The canonical name of the city (there may be more than one per postal code).
Example: Karlsruhe
street string The canonical name of the street.
Example: Kaiserstr.
house_number string The house number.
Examples: 32, 32a, 32/1
postbox_number string Postbox number in case address is a postbox.
district string Administrative division (i.e. Stadtteil).
additional_address_lines string repeated Additional address lines
Example: Appartment 104, Care of etc.

Price

Represents a price before and after taxes.

Field Type Rules Description
*net google.type.Money The price without VAT.
*gross google.type.Money The price including VAT.
unit string The unit the price is related to (e.g "kWh", "PCS", "month", etc.)

Quantity

Field Type Rules Description
unit string The unit of the quantity. E.g.'kWh' or 'PCS' for pieces.
units int64 The whole units of the quantity.
For example if unit is "PCS", then 1 unit is one piece.
nanos int32 Number of nano (10^-9) units of the quantity.
The value must be between -999,999,999 and +999,999,999 inclusive.
If units is positive, nanos must be positive or zero.
If units is zero, nanos can be positive, zero, or negative.
If units is negative, nanos must be negative or zero.
For example $-1.75 is represented as units=-1 and nanos=-750,000,000.

RecurringCost

Represents a price/cost that repeats at a fixed interval.

Field Type Rules Description
*price Price The price per interval.
*interval google.type.CalendarPeriod The interval at which the cost occurs (per day, month, etc.).

TenantScopedListRequest

Field Type Rules Description
*tenant string The tenant the list belongs to.
page_size int32 The maximum number of items to return. 0 for default.
page_token string The next_page_token value returned from a previous List request, if any.

TenantScopedResource

A tenant scoped resource.

Field Type Rules Description
*tenant string The tenant the resource belongs to.
*id string The ID of the resource.

TimeRange

A range of time with inclusive start, inclusive and exclusive end time. If both (inclusive and exclusive) ends are specified, they must be consistent. If no end is specified, the period is considered unbounded on the end.

Field Type Rules Description
start google.protobuf.Timestamp The inclusive start.
end google.protobuf.Timestamp The inclusive end.
end_exclusive google.protobuf.Timestamp The exclusive end.

File-level Extensions

Extension Type Base Number Description
throws string .google.protobuf.MethodOptions 76131 throws is used to document error messages that the method might return in status.details.

CalendarPeriod

A CalendarPeriod represents the abstract concept of a time period that has a canonical start. Grammatically, "the start of the current CalendarPeriod." All calendar times begin at midnight UTC.

Name Number Description
CALENDAR_PERIOD_UNSPECIFIED 0 Undefined period, raises an error.
DAY 1 A day.
WEEK 2 A week. Weeks begin on Monday, following
ISO 8601.
FORTNIGHT 3 A fortnight. The first calendar fortnight of the year begins at the start
of week 1 according to
ISO 8601.
MONTH 4 A month.
QUARTER 5 A quarter. Quarters start on dates 1-Jan, 1-Apr, 1-Jul, and 1-Oct of each
year.
HALF 6 A half-year. Half-years start on dates 1-Jan and 1-Jul.
YEAR 7 A year.

Date

Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following:

  • A full date, with non-zero year, month, and day values
  • A month and day value, with a zero year, such as an anniversary
  • A year on its own, with zero month and day values
  • A year and month value, with a zero day, such as a credit card expiration date

Related types are [google.type.TimeOfDay][google.type.TimeOfDay] and google.protobuf.Timestamp.

Field Type Rules Description
year int32 Year of the date. Must be from 1 to 9999, or 0 to specify a date without
a year.
month int32 Month of a year. Must be from 1 to 12, or 0 to specify a year without a
month and day.
day int32 Day of a month. Must be from 1 to 31 and valid for the year and month, or 0
to specify a year by itself or a year and month where the day isn't
significant.

Money

Represents an amount of money with its currency type.

Field Type Rules Description
currency_code string The three-letter currency code defined in ISO 4217.
units int64 The whole units of the amount.
For example if currencyCode is "USD", then 1 unit is one US dollar.
nanos int32 Number of nano (10^-9) units of the amount.
The value must be between -999,999,999 and +999,999,999 inclusive.
If units is positive, nanos must be positive or zero.
If units is zero, nanos can be positive, zero, or negative.
If units is negative, nanos must be negative or zero.
For example $-1.75 is represented as units=-1 and nanos=-750,000,000.

Scalar Value Types

.proto Type Notes C++ Java Python Go C# PHP Ruby
double double double float float64 double float Float
float float float float float32 float float Float
int32 Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. int32 int int int32 int integer Bignum or Fixnum (as required)
int64 Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. int64 long int/long int64 long integer/string Bignum
uint32 Uses variable-length encoding. uint32 int int/long uint32 uint integer Bignum or Fixnum (as required)
uint64 Uses variable-length encoding. uint64 long int/long uint64 ulong integer/string Bignum or Fixnum (as required)
sint32 Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. int32 int int int32 int integer Bignum or Fixnum (as required)
sint64 Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. int64 long int/long int64 long integer/string Bignum
fixed32 Always four bytes. More efficient than uint32 if values are often greater than 2^28. uint32 int int uint32 uint integer Bignum or Fixnum (as required)
fixed64 Always eight bytes. More efficient than uint64 if values are often greater than 2^56. uint64 long int/long uint64 ulong integer/string Bignum
sfixed32 Always four bytes. int32 int int int32 int integer Bignum or Fixnum (as required)
sfixed64 Always eight bytes. int64 long int/long int64 long integer/string Bignum
bool bool boolean boolean bool bool boolean TrueClass/FalseClass
string A string must always contain UTF-8 encoded or 7-bit ASCII text. string String str/unicode string string string String (UTF-8)
bytes May contain any arbitrary sequence of bytes. string ByteString str []byte ByteString string String (ASCII-8BIT)

Legend

*) required