Skip to content

Resources API v1 (GA)

BankAccounts

Query information about bank accounts.

Get

Validate the IBAN and look up the corresponding bank.

Input: BankAccountRequest

Field Type Rules Description
*tenant string The tenant to query for.
*iban string The International Bank Account Number.

InvalidIbanSyntaxError

The provided IBAN does not fit into the IBAN syntax.

InvalidIbanUnknownBankError

The system could not find a known bank using the provided IBAN.

Cities

City lookup for address auto-completion.

List

List all known cities for a postal code.

Input: CityListRequest

Field Type Rules Description
*tenant string The tenant to query for.
*region string The region the cities are located in as a CLDR region code.
*postal_code string A postal code of the city (a city may have more than one).
Example: 76131 for Karlsruhe inner city

Output: CityList

Field Type Rules Description
cities City repeated The requested cities.

City

Field Type Rules Description
canonical_name string The canonical name of the city.
Example: Karlsruhe

ContractAnnotations

Manage annotations on contracts.

Add

Add an annotation to a specific contract.

Input: ContractAnnotationAddRequest

Field Type Rules Description
*tenant string The tenant the annotation belongs to.
*contract_annotation ContractAnnotation The annotation which should be added to the contract.

Output: ContractAnnotation

Field Type Rules Description
tenant string output only The tenant the annotation belongs to
Output only.
id string output only The ID of the annotation.
Output only.
*contract string immutable The ID of the contract this annotation belongs to.
*type ContractAnnotation.AnnotationType immutable The type of the annotation.
*subject string immutable The subject of the annotation.
*note string immutable The note of the annotation.

Get

Get a specific annotation for a specific contract.

Input: ContractAnnotationRequest

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

Output: ContractAnnotation

Field Type Rules Description
tenant string output only The tenant the annotation belongs to
Output only.
id string output only The ID of the annotation.
Output only.
*contract string immutable The ID of the contract this annotation belongs to.
*type ContractAnnotation.AnnotationType immutable The type of the annotation.
*subject string immutable The subject of the annotation.
*note string immutable The note of the annotation.

List

List all annotations for a specific contract.

Input: ContractAnnotationListRequest

Field Type Rules Description
*tenant 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.
*contract string The contract ID for annotation lookup.

Output: ContractAnnotationList

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

ContractAnnotation.AnnotationType

Name Number Description
ANNOTATION_TYPE_UNSPECIFIED 0 The annotation type is unspecified.
NOTE 1 The annotation is a note.
PHONE 2 The annotation correlates to a phone call.
MAIL 3 The annotation correlates to a mail.

ContractBilling

Manage billing details for contracts.

GetContact

Get the current contact for a specific contract.

SetContact

Change the contact for a specific contract.

Input: ContractBillingSetContactRequest

Field Type Rules Description
*tenant string The tenant the billing-contact belongs to.
*contract string The contract ID the billing-contact belongs to.
*contact enpowerx.types.Contact The desired contact.

SetAllContacts

Change the contact for all contracts of a specific customer.

Input: ContractBillingSetAllContactsRequest

Field Type Rules Description
*tenant string The tenant the billing-contact belongs to.
*customer string The customer ID the billing-contact belongs to.
*contact enpowerx.types.Contact The desired contact.

GetMyContact

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

SetMyContact

Change the contact for a specific contract of the current customer (identity from OAuth token).

Input: ContractBillingSetContactRequest

Field Type Rules Description
*tenant string The tenant the billing-contact belongs to.
*contract string The contract ID the billing-contact belongs to.
*contact enpowerx.types.Contact The desired contact.

SetAllMyContacts

Change the contact for all contracts of the current customer (identity from OAuth token).

Input: ContractBillingSetAllMyContactsRequest

Field Type Rules Description
*tenant string The tenant the billing-contact belongs to.
*contact enpowerx.types.Contact The desired contact.

GetPayment

Get the current payment details for a specific contract.

Output: ContractPayment

Field Type Rules Description
*payment_method enpowerx.types.PaymentMethod The payment method.
bank_account enpowerx.types.BankAccount The bank account used if payment_method is DIRECT_DEBIT.

SetPayment

Change the payment details for a specific contract.

Input: ContractBillingSetPaymentRequest

Field Type Rules Description
*tenant string The tenant the billing-contact belongs to.
*contract string The contract ID the billing-contact belongs to.
*payment ContractPayment The desired payment.

SetAllPayments

Change the payment details for all contracts of a specific customer.

Input: ContractBillingSetAllPaymentsRequest

Field Type Rules Description
*tenant string The tenant the billing-contact belongs to.
*customer string The customer ID the billing-contact belongs to.
*payment ContractPayment The desired payment.

GetMyPayment

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

Output: ContractPayment

Field Type Rules Description
*payment_method enpowerx.types.PaymentMethod The payment method.
bank_account enpowerx.types.BankAccount The bank account used if payment_method is DIRECT_DEBIT.

SetMyPayment

Change the payment details for a specific contract of the current customer (identity from OAuth token).

Input: ContractBillingSetPaymentRequest

Field Type Rules Description
*tenant string The tenant the billing-contact belongs to.
*contract string The contract ID the billing-contact belongs to.
*payment ContractPayment The desired payment.

SetAllMyPayments

Change the payment details for all contracts of the current customer (identity from OAuth token).

Input: ContractBillingSetAllMyPaymentsRequest

Field Type Rules Description
*tenant string The tenant the billing-contact belongs to.
*payment ContractPayment The desired payment.

ContractCommunicationPreferences

Manage contract-related communication preferences (e.g., invoices via email or letter).

Get

Retrieve the current communication preference for a specific contract.

Output: ContractCommunicationPreference

Field Type Rules Description
*tenant string immutable The tenant of the contract.
*contract string immutable The ID of the contract.
*transactional_channel enpowerx.types.CommunicationChannel The preferred channel for transactional messages. Must be either LETTER or EMAIL.

Set

Set the communication preference for a specific contract.

Input: ContractCommunicationPreference

Field Type Rules Description
*tenant string immutable The tenant of the contract.
*contract string immutable The ID of the contract.
*transactional_channel enpowerx.types.CommunicationChannel The preferred channel for transactional messages. Must be either LETTER or EMAIL.

GetMine

Retrieve the current communication preference for a specific contract of the current customer (identity from OAuth token).

Output: ContractCommunicationPreference

Field Type Rules Description
*tenant string immutable The tenant of the contract.
*contract string immutable The ID of the contract.
*transactional_channel enpowerx.types.CommunicationChannel The preferred channel for transactional messages. Must be either LETTER or EMAIL.

SetMine

Set the communication preference for a specific contract of the current customer (identity from OAuth token).

Input: ContractCommunicationPreference

Field Type Rules Description
*tenant string immutable The tenant of the contract.
*contract string immutable The ID of the contract.
*transactional_channel enpowerx.types.CommunicationChannel The preferred channel for transactional messages. Must be either LETTER or EMAIL.

ContractInstallments

Manage installments for contracts.

Get

Get the current installment for a specific contract.

Output: ContractInstallmentResponse

Field Type Rules Description
*current ContractInstallment The currently active installment.
pending ContractInstallment An optional pending installment that will replace the current one in the future.
*minimum_amount google.type.Money The minimum possible installment.
*maximum_amount google.type.Money The maximum possible installment.

Set

Change the installment for a specific contract.

Input: ContractInstallmentChangeRequest

Field Type Rules Description
*tenant string The tenant the installment belongs to.
*contract string The contract ID the installment belongs to.
*amount google.type.Money The desired installment amount.

GetMine

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

Output: ContractInstallmentResponse

Field Type Rules Description
*current ContractInstallment The currently active installment.
pending ContractInstallment An optional pending installment that will replace the current one in the future.
*minimum_amount google.type.Money The minimum possible installment.
*maximum_amount google.type.Money The maximum possible installment.

SetMine

Change the installment for a specific contract of the current customer (identity from OAuth token).

Input: ContractInstallmentChangeRequest

Field Type Rules Description
*tenant string The tenant the installment belongs to.
*contract string The contract ID the installment belongs to.
*amount google.type.Money The desired installment amount.

ContractInstallment

Field Type Rules Description
amount google.type.Money The installment amount.
start_date google.type.Date The date when the installment starts.
end_date google.type.Date The date when the installment ends.
next_due_date google.type.Date The next due date of the installment.

Contracts

Manage contracts.

Get

Get a specific contract.

Input: ContractRequest

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
*tenant string immutable The tenant the contract belongs to.
*id string immutable The contract's ID in the tenant's scope.
*state Contract.State The current state of the contract.
cancellation_reason ContractCancellationReason output only The reason for the contract cancellation.
*customer string The ID of the customer this contract belongs to.
*delivery enpowerx.types.EnergyDelivery Which kind and amount of energy is to be delivered to where.
*billing enpowerx.types.Billing The billing details.
*meter_number string The current meter number.
start_date google.type.Date output only The start date of the contract.
end_date google.type.Date output only The end date of the terminated contract.
minimum_duration enpowerx.types.Duration output only The minimum duration of the contract.
cancellation_period enpowerx.types.Duration output only The cancellation period of the contract.
next_cancellation_date google.type.Date output only The next date when a cancellation can take place.
renewal_period enpowerx.types.Duration output only The renewal period of the contract.
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.
tariff Tariff output only The tariff this contract is for.
future_tariff Tariff output only The future tariff of this contract

List

List contracts with optional filters.

Input: ContractListRequest

Field Type Rules Description
*tenant 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 ContractListFilter The filter to be applied on all contracts.

Output: ContractList

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.

GetBilling

Get billing details of a specific contract.

Input: ContractRequest

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

SetBilling

Update billing details of a specific contract.

Input: ContractSetBillingRequest

Field Type Rules Description
*tenant string Deprecated. The tenant the contract belongs to.
*id string Deprecated. The contract's ID in the tenant's scope.
*billing enpowerx.types.Billing Deprecated. The billing details.

ChangeProduct

Change the product for a specific contract.

Input: ContractProductChangeRequest

Field Type Rules Description
*tenant string The tenant the contract belongs to.
*id string The contract's ID this request is targeting.
*product enpowerx.types.ScheduledRequest The new product.
campaign string Optional override for the default campaign.

Cancel

Cancel a specific contract.

Input: ContractCancelRequest

Field Type Rules Description
*tenant string The tenant the contract belongs to.
*id string The contract's ID this request is targeting.
*cancellation_reason ContractCancellationReason 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.

ListMine

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

Input: ContractListRequest

Field Type Rules Description
*tenant 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 ContractListFilter The filter to be applied on all contracts.

Output: ContractList

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: ContractRequest

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
*tenant string immutable The tenant the contract belongs to.
*id string immutable The contract's ID in the tenant's scope.
*state Contract.State The current state of the contract.
cancellation_reason ContractCancellationReason output only The reason for the contract cancellation.
*customer string The ID of the customer this contract belongs to.
*delivery enpowerx.types.EnergyDelivery Which kind and amount of energy is to be delivered to where.
*billing enpowerx.types.Billing The billing details.
*meter_number string The current meter number.
start_date google.type.Date output only The start date of the contract.
end_date google.type.Date output only The end date of the terminated contract.
minimum_duration enpowerx.types.Duration output only The minimum duration of the contract.
cancellation_period enpowerx.types.Duration output only The cancellation period of the contract.
next_cancellation_date google.type.Date output only The next date when a cancellation can take place.
renewal_period enpowerx.types.Duration output only The renewal period of the contract.
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.
tariff Tariff output only The tariff this contract is for.
future_tariff Tariff output only The future tariff of this contract

GetMyBilling

Get billing details of for the current customer (identity from OAuth token).

Input: ContractRequest

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

SetMyBilling

Update billing details of a specific contract for the current customer (identity from OAuth token).

Input: ContractSetBillingRequest

Field Type Rules Description
*tenant string Deprecated. The tenant the contract belongs to.
*id string Deprecated. The contract's ID in the tenant's scope.
*billing enpowerx.types.Billing Deprecated. The billing details.

ChangeMyProduct

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

Input: ContractProductChangeRequest

Field Type Rules Description
*tenant string The tenant the contract belongs to.
*id string The contract's ID this request is targeting.
*product enpowerx.types.ScheduledRequest The new product.
campaign string Optional override for the default campaign.

GetAvailableTariffs

Get all available tariffs to change an existing contract to.

Input: ContractRequest

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

Output: AvailableTariffList

Field Type Rules Description
tariffs AvailableTariff repeated The available tariffs.

GetMyAvailableTariffs

Get all available tariffs to change an existing contract to for the current customer.

Input: ContractRequest

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

Output: AvailableTariffList

Field Type Rules Description
tariffs AvailableTariff repeated The available tariffs.

AvailableTariff

Field Type Rules Description
*product_code string Product code of the tariff.
*display_name string Name of the tariff.

ContractListFilter

Field Type Rules Description
field_mask google.protobuf.FieldMask The field mask used to mark fields which shall be respected for the filter.
customer string The customer to filter contracts for.

FailedPreconditionTariffChangeNotAllowedForContractError

Changing tariff is for the provided contract currently not allowed.

Contract.State

Name Number Description
STATE_UNSPECIFIED 0 The contract state is unspecified.
OPEN 1 The contract is new and awaiting further processing.
TERMINATING_PREVIOUS_PROVIDER 2 In the process of terminating the customer's contract with their previous provider.
WAITING_FOR_NETWORK_PROVIDER 3 Waiting for acknowledgment from the network provider.
WAITING_FOR_SUPPLY 4 Waiting for power supply to start.
ACTIVE 5 The contract is active.
BLOCKED 6 The contract is blocked.
TERMINATION_REQUESTED 7 Contract termination has been requested
TERMINATED 8 Contract has been terminated.
CANCELLED 10 The contract was cancelled.

ContractCancellationReason

Name Number Description
CONTRACT_CANCELLATION_REASON_UNSPECIFIED 0 Reason unspecified.
MOVE_OUT 1 The customer has moved out.
MOVE_OUT_3RD_PARTY 2 Move out reported by third party.
CHANGE_OF_SUPPLIER 3 The supplier has changed.
PRICE_ADJUSTMENT 4 Contract cancelled because of price adjustment.
DEATH 5 Customer died.
METER_DECOMMISSIONING 6 The meter was decommissioned.
BAD_PAYER 7 The customer has not complied with the payments.
COMPANY_DEREGISTRATION 8 Company de-registered.
LOCKED_DELIVERY_POINT 9 The delivery point is locked.
MISSING_READINGS_FOR_ICM 10 Missing reading for Intelligent Electricity Meter.
RELOCATION_WITH_CONTRACT_TRANSFER 11 The customer relocates and wants to keep his contract.

CustomerCommunicationPreferences

Manage customer communication preferences and consents (e.g., marketing messages).

Get

Retrieve the current communication preference for a specific customer.

Output: CustomerCommunicationPreference

Field Type Rules Description
*tenant string immutable The tenant of the customer.
*customer string immutable The ID of the customer. Set to "me" for the current customer (identity from OAuth token).
*transactional_channel enpowerx.types.CommunicationChannel The preferred channel for transactional messages. Must be either LETTER or EMAIL.
marketing CustomerCommunicationPreference.Marketing The marketing specific preferences.
*consent_text string The consent text agreed on or declined by the customer.
evidence CustomerCommunicationPreference.Evidence input only Additional information on how the preferences were recorded
metadata google.protobuf.Struct Deprecated. Request metadata
Deprecated: Use evidence instead

Set

Set the communication preference for a specific customer.

Input: CustomerCommunicationPreference

Field Type Rules Description
*tenant string immutable The tenant of the customer.
*customer string immutable The ID of the customer. Set to "me" for the current customer (identity from OAuth token).
*transactional_channel enpowerx.types.CommunicationChannel The preferred channel for transactional messages. Must be either LETTER or EMAIL.
marketing CustomerCommunicationPreference.Marketing The marketing specific preferences.
*consent_text string The consent text agreed on or declined by the customer.
evidence CustomerCommunicationPreference.Evidence input only Additional information on how the preferences were recorded
metadata google.protobuf.Struct Deprecated. Request metadata
Deprecated: Use evidence instead

SetDraft

Set a draft of the communication preference in the name of a specific customer.
The draft will not be effective until ConfirmDraft is called.

Input: CustomerCommunicationPreferenceDraft

Field Type Rules Description
*tenant string immutable The tenant of the customer.
This must match draft.tenant.
*id string immutable The ID of the draft.
*draft CustomerCommunicationPreference The drafted communication preference.

ConfirmDraft

Confirm a specific communication preference draft.
This removes the draft and applies its content to the effective communication preference.

Input: CustomerCommunicationPreferenceDraft

Field Type Rules Description
*tenant string immutable The tenant of the customer.
This must match draft.tenant.
*id string immutable The ID of the draft.
*draft CustomerCommunicationPreference The drafted communication preference.

GetMine

Retrieve the current communication preference for the current customer (identity from OAuth token).

Output: CustomerCommunicationPreference

Field Type Rules Description
*tenant string immutable The tenant of the customer.
*customer string immutable The ID of the customer. Set to "me" for the current customer (identity from OAuth token).
*transactional_channel enpowerx.types.CommunicationChannel The preferred channel for transactional messages. Must be either LETTER or EMAIL.
marketing CustomerCommunicationPreference.Marketing The marketing specific preferences.
*consent_text string The consent text agreed on or declined by the customer.
evidence CustomerCommunicationPreference.Evidence input only Additional information on how the preferences were recorded
metadata google.protobuf.Struct Deprecated. Request metadata
Deprecated: Use evidence instead

SetMine

Set the communication preference for the current customer (identity from OAuth token).

Input: CustomerCommunicationPreference

Field Type Rules Description
*tenant string immutable The tenant of the customer.
*customer string immutable The ID of the customer. Set to "me" for the current customer (identity from OAuth token).
*transactional_channel enpowerx.types.CommunicationChannel The preferred channel for transactional messages. Must be either LETTER or EMAIL.
marketing CustomerCommunicationPreference.Marketing The marketing specific preferences.
*consent_text string The consent text agreed on or declined by the customer.
evidence CustomerCommunicationPreference.Evidence input only Additional information on how the preferences were recorded
metadata google.protobuf.Struct Deprecated. Request metadata
Deprecated: Use evidence instead

CustomerCommunicationPreference.Evidence

Field Type Rules Description
ip_address string The original caller IP address.

CustomerCommunicationPreference.Marketing

Field Type Rules Description
channels enpowerx.types.CommunicationChannel repeated The approved channels for marketing messages.
allowed_topics string repeated The approved topics for marketing messages.
A topic must not be present in allowed_marketing_topics and denied_marketing_topics.
denied_topics string repeated The disapproved topics for marketing messages.
A topic must not be present in allowed_marketing_topics and denied_marketing_topics.

CustomerIdentityProofs

Prove ownership of customers that don't yet have an account

Provide

Provide proof of ownership of a customer and get a token for account registration in return.

Input: CustomerIdentityProof

Field Type Rules Description
*tenant string The tenant the contract belongs to.
customer string The customer ID.
contract string The contract ID.
*meter string A meter number associated with the contract.

CustomerMessages

Send messages to customers using various channels (letters, mails, etc.).

Get

Retrieve information about a previously sent message.

Input: CustomerMessageRequest

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

Output: CustomerMessage

Field Type Rules Description
*tenant string immutable The tenant the message belongs to.
*id string immutable The ID identifying the message in the tenant's scope.
*contact enpowerx.types.Contact The contact details of the recipient of the message.
*kind CustomerMessageKind The kind of message.
marketing_topic string The topic of the message. Only relevant when kind is MARKETING. Used to give customer's more fine-grained opt-in/out control.
customer string The customer ID of the recipient of the message.
This must be set unless the kind is TECHNICAL or IDENTITY_CHECK.
*template string The ID of the template to use for sending the message.
parameters google.protobuf.Struct The parameters used to replace placeholders inside of the specified template.

Send

Send a message.

Input: CustomerMessage

Field Type Rules Description
*tenant string immutable The tenant the message belongs to.
*id string immutable The ID identifying the message in the tenant's scope.
*contact enpowerx.types.Contact The contact details of the recipient of the message.
*kind CustomerMessageKind The kind of message.
marketing_topic string The topic of the message. Only relevant when kind is MARKETING. Used to give customer's more fine-grained opt-in/out control.
customer string The customer ID of the recipient of the message.
This must be set unless the kind is TECHNICAL or IDENTITY_CHECK.
*template string The ID of the template to use for sending the message.
parameters google.protobuf.Struct The parameters used to replace placeholders inside of the specified template.

Output: CustomerMessage

Field Type Rules Description
*tenant string immutable The tenant the message belongs to.
*id string immutable The ID identifying the message in the tenant's scope.
*contact enpowerx.types.Contact The contact details of the recipient of the message.
*kind CustomerMessageKind The kind of message.
marketing_topic string The topic of the message. Only relevant when kind is MARKETING. Used to give customer's more fine-grained opt-in/out control.
customer string The customer ID of the recipient of the message.
This must be set unless the kind is TECHNICAL or IDENTITY_CHECK.
*template string The ID of the template to use for sending the message.
parameters google.protobuf.Struct The parameters used to replace placeholders inside of the specified template.

IsTopicAllowed

Determines whether sending a message with a specific topic is allowed based on the user's current preferences.

Input: CustomerMessageIsTopicAllowedRequest

Field Type Rules Description
*tenant string The tenant of the customer.
*customer string The ID of the customer.
*marketing_topic string The topic of the message.

SendUpselling

Send an upselling message.

Input: CustomerMessageUpselling

Field Type Rules Description
*tenant string immutable The tenant the message belongs to.
*id string immutable The ID identifying the message in the tenant's scope.
*customer string The customer ID of the recipient of the message.
*customer_type enpowerx.types.CustomerType The type of customer.
*offer string The ID of the offer.
*contract string The ID of the contract the offer is for.
*meter_number string The meter number the offer is for.
*old_product_name string The name of the product the customer has before accepting the offer.
*owner enpowerx.types.Person The contract owner.
*delivery enpowerx.types.EnergyDelivery Which kind and amount of energy is to be delivered to where.
*billing enpowerx.types.Billing The billing details.
*tariff Tariff The tariff being offered to the customer.

Output: CustomerMessage

Field Type Rules Description
*tenant string immutable The tenant the message belongs to.
*id string immutable The ID identifying the message in the tenant's scope.
*contact enpowerx.types.Contact The contact details of the recipient of the message.
*kind CustomerMessageKind The kind of message.
marketing_topic string The topic of the message. Only relevant when kind is MARKETING. Used to give customer's more fine-grained opt-in/out control.
customer string The customer ID of the recipient of the message.
This must be set unless the kind is TECHNICAL or IDENTITY_CHECK.
*template string The ID of the template to use for sending the message.
parameters google.protobuf.Struct The parameters used to replace placeholders inside of the specified template.

CustomerMessageKind

Name Number Description
CUSTOMER_MESSAGE_KIND_UNSPECIFIED 0 Kind not specified.
TECHNICAL 1 A technical message (e.g. password reset). Always sent via email, customer can not opt-out.
IDENTITY_CHECK 2 A message used to verify a person's identity. Always sent via letter, customer can not opt-out.
TRANSACTIONAL 100 A transactional message (e.g. referring to a customer's contract). Sent via customer-selected channel, customer can not opt-out.
TRANSACTIONAL_INVOICE 101 A transactional message containing an invoice. Sent via customer-selected channel, customer can not opt-out.
MARKETING 200 A marketing message (e.g. advertisement). Sent via customer-selected channel, customer can opt-out.

Customers

Manage customers.

Get

Get a specific customer.

Input: CustomerRequest

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

Output: Customer

Field Type Rules Description
*tenant string immutable The tenant the customer belongs to.
*id string immutable The customer's ID in the tenant's scope.
*type enpowerx.types.CustomerType The type of this customer.
*person enpowerx.types.Person The personal details.
is_vacant bool output only A flag indicating a vacancy, i.e. the metering point belongs to a flat that is vacant.

List

List customers with optional filters.

Input: CustomerListRequest

Field Type Rules Description
*tenant string The tenant the customers belong 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 CustomerListFilter Filters to limit the response.

Output: CustomerList

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.

GetPerson

Get personal details for a specific customer.

Input: CustomerRequest

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

SetPerson

Update personal details for a specific customer.
Also update billing.contact.person for all of the customer's contracts unless they were already different before calling this.

Input: CustomerSetPersonRequest

Field Type Rules Description
*tenant string The tenant the customer belongs to.
*id string The customer's ID in the tenant's scope.
*person enpowerx.types.Person The personal details to set.

GetMe

Get the current customer (identity from OAuth token).

Input: CustomerGetMeRequest

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

Output: Customer

Field Type Rules Description
*tenant string immutable The tenant the customer belongs to.
*id string immutable The customer's ID in the tenant's scope.
*type enpowerx.types.CustomerType The type of this customer.
*person enpowerx.types.Person The personal details.
is_vacant bool output only A flag indicating a vacancy, i.e. the metering point belongs to a flat that is vacant.

GetMyPerson

Get personal details for the current customer (identity from OAuth token).

Input: CustomerGetMeRequest

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

SetMyPerson

Update personal details for the current customer (identity from OAuth token).
Also update billing.contact.person for all of the customer's contracts unless they were already different before calling this.

Input: CustomerSetMyPersonRequest

Field Type Rules Description
*tenant string The tenant the customer belongs to.
*person enpowerx.types.Person The personal details to set.

SetMyBilling

Update billing details for all contracts of the current customer (identity from OAuth token).

Input: CustomerSetMyBillingRequest

Field Type Rules Description
*tenant string Deprecated. The tenant the customer belongs to.
*billing enpowerx.types.Billing Deprecated. The billing details.

CustomerListFilter

Field Type Rules Description
field_mask google.protobuf.FieldMask The field mask used to mark fields which shall be respected for the filter.
type enpowerx.types.CustomerType The customer type to filter for.

Documents

Store and retrieve documents (usually PDFs).

Get

Retrieve a specific document.

Input: DocumentRequest

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

Output: Document

Field Type Rules Description
*tenant string immutable The tenant the document belongs to.
*id string immutable The ID identifying the document in the tenant's scope.
stored_timestamp google.protobuf.Timestamp output only The timestamp the document was stored.
*revision int32 Revision is incremented when a document is overwritten.
*payload DocumentPayload The content of the document.

Set

Add a new document.

Input: Document

Field Type Rules Description
*tenant string immutable The tenant the document belongs to.
*id string immutable The ID identifying the document in the tenant's scope.
stored_timestamp google.protobuf.Timestamp output only The timestamp the document was stored.
*revision int32 Revision is incremented when a document is overwritten.
*payload DocumentPayload The content of the document.

Output: Document

Field Type Rules Description
*tenant string immutable The tenant the document belongs to.
*id string immutable The ID identifying the document in the tenant's scope.
stored_timestamp google.protobuf.Timestamp output only The timestamp the document was stored.
*revision int32 Revision is incremented when a document is overwritten.
*payload DocumentPayload The content of the document.

DocumentPayload

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

ErrorReports

Receive error logs from external sources to include them into our internal logging system

Report

Add new error report

Input: ErrorReportRequest

Field Type Rules Description
*tenant string The tenant the errorlog belongs to.
*report ErrorReport The report to set.

ErrorReport

Stores information on unhandled errors from external sources (i.e. frontend apps)

Field Type Rules Description
*app string Identifies the app throwing that error
uri string The uri where the error occured
user_data ErrorReport.UserData Optional userData information
*errors ErrorReport.Error repeated Contains n-errors

ErrorReport.Error

Contains information about the error that occured

Field Type Rules Description
*msg string The error message or description
stacktrace string The stack trace if there is one

ErrorReport.UserData

Holds information about the user

Field Type Rules Description
*user_agent string UserAgent of the user (browser version etc.)
*os string The operating system of the user

Invoices

Manage invoices.

List

List invoices for a specific contract.

Input: InvoiceListRequest

Field Type Rules Description
*tenant string The tenant to list invoices for.
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.
*contract string The ID of the contract to list invoices for.

Output: InvoiceList

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

Download

Download a specific invoice.

Input: InvoiceRequest

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

ListMine

List invoices for a specific contract of the current customer (identity from OAuth token).

Input: InvoiceListRequest

Field Type Rules Description
*tenant string The tenant to list invoices for.
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.
*contract string The ID of the contract to list invoices for.

Output: InvoiceList

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

DownloadMine

Download a specific invoice of the current customer (identity from OAuth token).

Input: InvoiceRequest

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

Invoice

Field Type Rules Description
*tenant string immutable The tenant the invoice belongs to.
*id string immutable The invoice's ID in the tenant's scope.
*customer string The ID of the customer this invoice belongs to.
*invoice_number string The invoice number that is customer facing
*start_date google.type.Date The start of the invoice period.
*end_date google.type.Date The end of the invoice period.
*annual_usage int32 The estimated power usage in kWh per year.
*value enpowerx.types.Price The invoice amount for the defined time period.
*is_paid bool Indicates if the invoice was paid.
*is_cancelled bool Indicates if the invoice was cancelled.
*kind Invoice.Kind The kind of invoice, e.g. regular or final invoice.
*invoice_date google.type.Date The date the invoice was charged [Rechnungsdatum]
This date is used for accounting and has legal implications
*archive_id string TODO: Find out which Id this is
*storage_repository_id string TODO: Find out which Id this is
*external_archive_id string TODO: Find out which Id this is

Invoice.Kind

Name Number Description
KIND_UNSPECIFIED 0 Kind not specified.
REGULAR 1 The default kind of recurring invoices.
INTERIM 2 An out-of-cycle invoice.
FINAL 3 The final invoice when a contract terminates.

Meters

Manage energy meters (a.k.a counters).

List

List meters associated with a specific contract.

Input: MeterListRequest

Field Type Rules Description
*tenant string The tenant to list meters for.
*contract string The ID of the contract to list meters for.
active_only bool Only return currently active meters.

Output: MeterList

Field Type Rules Description
meters Meter repeated A list of readings sorted anti-chronologically (newest first).

ListMine

List meter meters associated with a specific contract of the current customer (identity from OAuth token).

Input: MeterListRequest

Field Type Rules Description
*tenant string The tenant to list meters for.
*contract string The ID of the contract to list meters for.
active_only bool Only return currently active meters.

Output: MeterList

Field Type Rules Description
meters Meter repeated A list of readings sorted anti-chronologically (newest first).

Meter

Field Type Rules Description
*tenant string The tenant the meter belongs to.
*id string The meter number in the tenant's scope.
*start_date google.type.Date The date when the meter became active.
end_date google.type.Date The date when the meter stopped being active. Unset if the meter is currently active.
*registers Meter.RegistersEntry repeated A map of registers with OBIS codes as the key.
*type MeterType The type of the meter.
*data_acquisition_type DataAcquisitionType The data-acquisition-type of the meter.

Meter.Register

Field Type Rules Description
*type RegisterType The type of the register.
*units_digits int32 The number of digits the register has before the decimal point.
*decimal_digists int32 The number of digits the register has after the decimal point.

Meter.RegistersEntry

Field Type Rules Description
key string
value Meter.Register

DataAcquisitionType

Name Number Description
DATA_ACQUISITION_TYPE_UNSPECIFIED 0 Type is not specified
REMOTE_READABLE_METER 1 Remote readable meter (AMR)
MANUAL_READABLE_METER 2 Manual readable meter (MMR)

MeterType

Name Number Description
METER_TYPE_UNSPECIFIED 0 Type is not specified
ANALOG_HOUSEHOLD_METER 1 Analog household meter (AHZ)
MODERN_MEASUREMENT_DEVICE 2 Modern measurement device (MME)
ELECTRONIC_HOUSEHOLD_METER 3 Electronic household meter (EHZ)

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)

Offers

Create and track offers.

Get

Get a specific offer.

Input: OfferRequest

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

Output: Offer

Field Type Rules Description
*tenant string immutable The tenant the offer belongs to.
*id string immutable The ID identifying the offer in the tenant's scope.
*state Offer.State The current state of the offer.
*delivery enpowerx.types.EnergyDelivery Which kind and amount of energy is to be delivered to where.
*customer string The ID of the customer this offer was made to.
contract string The ID of the customer's existing contract if applicable.
*tariff Tariff The tariff that was offered to the customer.

List

List offers with optional filters.

Input: OfferListRequest

Field Type Rules Description
*tenant string The tenant the offers list belong 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 OfferListFilter Filters to limit the response.

Output: OfferList

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

Set

Create a new offer or update an existing one.

Input: Offer

Field Type Rules Description
*tenant string immutable The tenant the offer belongs to.
*id string immutable The ID identifying the offer in the tenant's scope.
*state Offer.State The current state of the offer.
*delivery enpowerx.types.EnergyDelivery Which kind and amount of energy is to be delivered to where.
*customer string The ID of the customer this offer was made to.
contract string The ID of the customer's existing contract if applicable.
*tariff Tariff The tariff that was offered to the customer.

Output: Offer

Field Type Rules Description
*tenant string immutable The tenant the offer belongs to.
*id string immutable The ID identifying the offer in the tenant's scope.
*state Offer.State The current state of the offer.
*delivery enpowerx.types.EnergyDelivery Which kind and amount of energy is to be delivered to where.
*customer string The ID of the customer this offer was made to.
contract string The ID of the customer's existing contract if applicable.
*tariff Tariff The tariff that was offered to the customer.

Delete

Delete a specific offer.

Input: OfferRequest

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

SetState

Change the state of an existing offer.

Input: SetOfferStateRequest

Field Type Rules Description
*tenant string The tenant the offer belongs to.
*id string The ID identifying the offer in the tenant's scope.
*state Offer.State The state to set the offer to.

Output: Offer

Field Type Rules Description
*tenant string immutable The tenant the offer belongs to.
*id string immutable The ID identifying the offer in the tenant's scope.
*state Offer.State The current state of the offer.
*delivery enpowerx.types.EnergyDelivery Which kind and amount of energy is to be delivered to where.
*customer string The ID of the customer this offer was made to.
contract string The ID of the customer's existing contract if applicable.
*tariff Tariff The tariff that was offered to the customer.

OfferListFilter

Field Type Rules Description
field_mask google.protobuf.FieldMask The field mask used to mark fields which shall be respected for the filter.
state Offer.State The current state of the offer to filter offers for.
customer string The ID of the customer to filter offers for.

Offer.State

Name Number Description
STATE_UNSPECIFIED 0 The offer state is unspecified.
PREPARED 1 The offer is ready but has not yet been sent to the customer.
OFFERED 2 The offer has been sent to the customer and is awaiting a response.
ACCEPTED 3 The customer accepted the offer.
DECLINED 4 The offer declined the offer.
EXPIRED 5 The offer has expired.

Orders

Create orders.

Set

Create a new order or update an existing one.

Input: Order

Field Type Rules Description
*tenant string immutable The tenant who requested the order.
*id string immutable The unique identifier of the process instance in scope the tenant.
*product enpowerx.types.ScheduledRequest The product the customer wishes to order.
*person enpowerx.types.Person The personal details.
*delivery enpowerx.types.EnergyDelivery Which kind and amount of energy is to be delivered to where.
*billing enpowerx.types.Billing The billing details.
sales_info enpowerx.types.SalesInfo Information on how the sale was made.
transition_type enpowerx.types.TransitionType Specifies modalities of a contract transition.
transition_type impacts the interpretation of product.scheduled_date.
previous_provider string The ID of the previous provider of the lead contained in the order.
You can get provider IDs via Providers.List().
meter_number string The number of the meter.

Output: Order

Field Type Rules Description
*tenant string immutable The tenant who requested the order.
*id string immutable The unique identifier of the process instance in scope the tenant.
*product enpowerx.types.ScheduledRequest The product the customer wishes to order.
*person enpowerx.types.Person The personal details.
*delivery enpowerx.types.EnergyDelivery Which kind and amount of energy is to be delivered to where.
*billing enpowerx.types.Billing The billing details.
sales_info enpowerx.types.SalesInfo Information on how the sale was made.
transition_type enpowerx.types.TransitionType Specifies modalities of a contract transition.
transition_type impacts the interpretation of product.scheduled_date.
previous_provider string The ID of the previous provider of the lead contained in the order.
You can get provider IDs via Providers.List().
meter_number string The number of the meter.

Relocate

Create a new order for a new contract and disable the previous one.

Input: RelocationOrder

Field Type Rules Description
*tenant string The tenant who requested the relocation order.
*id string immutable The unique identifier of the process instance in scope the tenant.
*relocation enpowerx.types.Relocation The relocation details.

Output: RelocationOrder

Field Type Rules Description
*tenant string The tenant who requested the relocation order.
*id string immutable The unique identifier of the process instance in scope the tenant.
*relocation enpowerx.types.Relocation The relocation details.

Products

Query energy products provided by the current tenant.

Get

Get the latest version of a specific product.

Input: ProductRequest

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

Output: Product

Field Type Rules Description
*tenant string immutable The tenant the product belongs to.
*id string immutable The product ID.
*version int32 immutable The version of the product.
*display_name string A human-readable name for the product.
*energy_type enpowerx.types.EnergyType The energy type of the product.
*acquisition Product.Acquisition How this product is acquired.
contract_term enpowerx.types.Duration The minimum amount of time before the contract can be cancelled.
price_guarantee enpowerx.types.Duration The minimum amount of time for which the price is guaranteed to stay the same.
price_guarantee_date google.type.Date The date until the price is guaranteed to stay the same.

GetVersioned

Get a specific version of a specific product.

Input: ProductVersionedRequest

Field Type Rules Description
*tenant string The tenant the product belongs to.
*id string The product ID.
*version int32 The version of the product.

Output: Product

Field Type Rules Description
*tenant string immutable The tenant the product belongs to.
*id string immutable The product ID.
*version int32 immutable The version of the product.
*display_name string A human-readable name for the product.
*energy_type enpowerx.types.EnergyType The energy type of the product.
*acquisition Product.Acquisition How this product is acquired.
contract_term enpowerx.types.Duration The minimum amount of time before the contract can be cancelled.
price_guarantee enpowerx.types.Duration The minimum amount of time for which the price is guaranteed to stay the same.
price_guarantee_date google.type.Date The date until the price is guaranteed to stay the same.

List

List all products.

Input: ProductListRequest

Field Type Rules Description
*tenant string The tenant the products belong 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.

Output: ProductList

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

Product.Acquisition

Name Number Description
ACQUISITION_UNSPECIFIED 0 The product acquisition is unspecified.
COMPETITIVE 1 The product is explicitly chosen by customers.
BASIC 2 The product is automatically provided by an area's default provider when power is consumed without an existing contract.
SUBSTITUTE 3 The product is automatically provided by an area's default provider when the previous provider is no longer available (e.g. lost license).

Providers

Query all known energy providers.

List

List all known providers for an energy type.

Input: ProviderListRequest

Field Type Rules Description
*tenant string The tenant to query for.
*region string The region to get providers for as a CLDR region code.
Example: DE for Germany
*energy_type enpowerx.types.EnergyType The kind of the energy to get providers for.

Output: ProviderList

Field Type Rules Description
providers Provider repeated The requested providers.

GetDefault

Return the default provider for a specific address.

Input: ProviderDefaultRequest

Field Type Rules Description
*tenant string The tenant to query for.
*address enpowerx.types.PostalAddress The address to get the default provider for.
*energy_type enpowerx.types.EnergyType The kind of the energy to get the default provider for.

Output: Provider

Field Type Rules Description
id string The ID identifying the provider. In Germany this is the BDEW code.
canonical_name string The canonical name of the provider.
Example: Stadtwerke Karlsruhe GmbH

Readings

Submit and retrieve meter readings.

List

List meter readings for a specific contract.

Input: ReadingListRequest

Field Type Rules Description
*tenant string The tenant to list readings for.
*contract string The ID of the contract to list readings for.

Output: ReadingList

Field Type Rules Description
meters ReadingList.MetersEntry repeated A map of meters with meter numbers as the key.

Add

Submit a new reading for a specific meter.

Input: ReadingAddRequest

Field Type Rules Description
*tenant string The tenant to submit a reading for.
*contract string The ID of the contract to submit a reading for.
*meter string The meter number to submit a reading for.
*reading enpowerx.types.Reading The reading to add.

ListMine

List readings for a specific contract of the current customer (identity from OAuth token).

Input: ReadingListRequest

Field Type Rules Description
*tenant string The tenant to list readings for.
*contract string The ID of the contract to list readings for.

Output: ReadingList

Field Type Rules Description
meters ReadingList.MetersEntry repeated A map of meters with meter numbers as the key.

AddMine

Submit a new reading for a specific meter of the current customer (identity from OAuth token).

Input: ReadingAddRequest

Field Type Rules Description
*tenant string The tenant to submit a reading for.
*contract string The ID of the contract to submit a reading for.
*meter string The meter number to submit a reading for.
*reading enpowerx.types.Reading The reading to add.

ReadingList.Meter

Field Type Rules Description
registers ReadingList.Meter.RegistersEntry repeated A map of registers with OBIS codes as the key.

ReadingList.Meter.RegistersEntry

Field Type Rules Description
key string
value ReadingList.Register

ReadingList.MetersEntry

Field Type Rules Description
key string
value ReadingList.Meter

ReadingList.Reading

Field Type Rules Description
date google.type.Date The date when the value was read.
value double The value that was read.
channel enpowerx.types.Reading.Channel How the reading was reported.
origin ReadingOrigin Who reported the reading.

ReadingList.Register

Field Type Rules Description
type RegisterType The type of the register.
readings ReadingList.Reading repeated A list of readings sorted anti-chronologically (newest first).

ReadingOrigin

Name Number Description
READING_ORIGIN_UNSPECIFIED 0 No origin specified.
NETWORK_OPERATOR 1 Distributed network operator (DNO) [DE: Verteilnetzbetreiber (VNB)].
PREVIOUS_PROVIDER 2 The last provider of delivery location
CUSTOMER 3 The customer herself.
METER_POINT_OPERATOR 4 The meter point operator [DE: Messstellenbetereiber (MSB)].
THIRD_PARTY 5 No origin specified.

Streets

Street lookup for address auto-completion.

List

List all known streets for a postal code and city.

Input: StreetListRequest

Field Type Rules Description
*tenant string The tenant to query for.
*region string The region the streets are located in as a CLDR region code.
Example: DE for Germany
*postal_code string Postal code the streets are located in.
Example: 76131 for Karlsruhe inner city
*city string The canonical name of the city the streets are located in.
Example: Karlsruhe

Output: StreetList

Field Type Rules Description
streets Street repeated The requested streets.

Street

Field Type Rules Description
canonical_name string The canonical name of the street.
Example: Kaiserstr.

Tariffs

Query energy tariffs provided by the current tenant.

Get

Get the tariff for a specific product at an address.

Input: TariffRequest

Field Type Rules Description
*tenant string The tenant the tariffs belong to.
*product string The product ID.
*delivery enpowerx.types.EnergyDelivery Which kind and amount of energy is to be delivered to where.
query_date google.type.Date Query for tariffs that are active at this date.
The date can be in the past or future.
If unset the query will return currently active tariffs.
campaign string Optional override for the default campaign.

Output: Tariff

Field Type Rules Description
*product Product The underlying product for this tariff.
*fixed_cost enpowerx.types.RecurringCost The fixed recurring cost.
*working_price enpowerx.types.Price The price per usage in kWh.
estimated_total_cost enpowerx.types.RecurringCost The estimated total cost.
bonus enpowerx.types.Price The one-time bonus granted to the customer.
*eco_percentage int32 The percentage of environmentally friendly power generation.
start_date google.type.Date output only Start date of the tariff.
end_date google.type.Date output only End date of the tariff.

List

List all tariffs provided at an address.

Input: TariffListRequest

Field Type Rules Description
*tenant string The tenant the tariffs belong to.
*delivery enpowerx.types.EnergyDelivery Which kind and amount of energy is to be delivered to where.
query_date google.type.Date Query for tariffs that are active at this date.
The date can be in the past or future.
If unset the query will return currently active tariffs.
campaign string Optional override for the default campaign.

Output: TariffList

Field Type Rules Description
tariffs Tariff repeated The requested tariffs.

VerificationTokens

Manage verification tokens (e.g. for e-mail verification links).

Set

Create a new token. An existing token can not be modified.

Input: VerificationToken

Field Type Rules Description
*tenant string immutable The tenant the token belongs to.
*id string immutable The token identifier. This is the value to be given to an external consumer (e.g. in the form of an e-mail validation link).
payload google.protobuf.Struct This can be used to attach information to the token that remains invisible to an external consumer (e.g. a customer ID).

Output: VerificationToken

Field Type Rules Description
*tenant string immutable The tenant the token belongs to.
*id string immutable The token identifier. This is the value to be given to an external consumer (e.g. in the form of an e-mail validation link).
payload google.protobuf.Struct This can be used to attach information to the token that remains invisible to an external consumer (e.g. a customer ID).

Inspect

Check if a specific token exists and get its payload.

Input: VerificationTokenRequest

Field Type Rules Description
*tenant string The tenant the token belongs to.
*id string The token identifier.

Output: VerificationToken

Field Type Rules Description
*tenant string immutable The tenant the token belongs to.
*id string immutable The token identifier. This is the value to be given to an external consumer (e.g. in the form of an e-mail validation link).
payload google.protobuf.Struct This can be used to attach information to the token that remains invisible to an external consumer (e.g. a customer ID).

Redeem

Redeem a specific token and resume other processes waiting for this token.

Input: VerificationTokenRedeemRequest

Field Type Rules Description
*tenant string The tenant the token belongs to.
*id string The token identifier.

Delete

Delete a specific token.

Input: VerificationTokenRequest

Field Type Rules Description
*tenant string The tenant the token belongs to.
*id string The token identifier.

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