# Retrieve a tariff

Retrieve details for a single, specific tariff.
Public tariffs are visible to every application. A custom tariff created with `POST /tariffs` is private to the organisation that created it, and returns `404` to any other application. A tariff owned by a user, including one created in the ev.energy app, is visible only to that user, to users it is assigned to, and to organisations whose users created it or have it as their import or export tariff. Anyone else gets `404`.

Endpoint: GET /tariffs/{tariff_id}
Version: 2.0
Security: oauth2

## Security:

  - `oauth2` (unknown)
    oauth2 scopes: tariff:read

## Path parameters:

  - `tariff_id` (string, required)
    The ID of the specific tariff to retrieve.

## Query parameters:

  - `expand` (array)
    Specify a url field to expand into a nested resource. Price amounts in the prices expansion are `null` for licensed tariffs without the tariff:prices:read scope.

  - `available_for_user_id` (string)
    Filter to only return resources available in the user's region and program.
Must be `me` or a user the caller can read with `GET /users/{id}`. Any other
user, including one that does not exist, returns a `400` with the
`object-id` problem type.

## Header parameters:

  - `EvEnergy-Version` (number)
    Specify the version of this endpoint to use.

  - `EvEnergy-User` (string)
    If the client is authenticated using Client Credentials, setting EvEnergy-User to a valid user ID allows requests to be made as if you were directly authenticated as that user.

## Response 200:

  - `200` (unknown)
    Return a single Tariff.

## Response 200 fields (application/json):

  - `current_price` (integer | null)
    The price of the tariff at the current time, given in the smallest unit of the currency of the tariff. For example, 10 means 10 pence. `null` for licensed tariffs without the tariff:prices:read scope.
    Example: 10

  - `supplier_tariff_id` (string | null)
    The supplier's own identifier for this tariff, if one was provided.
    Example: ABC-1

  - `prices` (any)
    Link to prices endpoint by default. When expanded with ?expand=prices, returns all of the tariff's prices, newest first. Use `GET /tariffs/{tariff_id}/prices` to page through a time range. Price amounts on licensed tariffs are `null` without the tariff:prices:read scope.

  - `prices.started_at` (string, required)
    When this price interval began (ISO 8601 datetime).
    Example: 2024-01-15T10:00:00Z

  - `prices.interval_seconds` (integer, required)
    The duration of this price interval in seconds.
    Example: 1800

  - `prices.price_minor_units` (integer | null, required)
    The price in minor currency units (e.g., pence for GBP), truncated toward zero to a whole unit (e.g., 7.5p is given as `7`). Use `price_minor_units_decimal` for the exact price. Whether it includes VAT is given by the tariff's `prices_include_vat`. `null` for licensed tariffs without the tariff:prices:read scope.
    Example: 24

  - `prices.price_excluding_vat_minor_units` (integer | null, required)
    The price excluding VAT in minor currency units (e.g., pence for GBP), truncated toward zero to a whole unit. Use `price_excluding_vat_minor_units_decimal` for the exact price. `null` if the tariff's price source does not provide it, or for licensed tariffs without the tariff:prices:read scope.
    Example: 23

  - `prices.price_minor_units_decimal` (string | null, required)
    The exact price in minor currency units (e.g., pence for GBP) as a decimal string, without trailing zeros or exponent notation. Whether it includes VAT is given by the tariff's `prices_include_vat`. `null` for licensed tariffs without the tariff:prices:read scope.
    Example: 24.57

  - `prices.price_excluding_vat_minor_units_decimal` (string | null, required)
    The exact price excluding VAT in minor currency units (e.g., pence for GBP) as a decimal string, without trailing zeros or exponent notation. `null` if the tariff's price source does not provide it, or for licensed tariffs without the tariff:prices:read scope.
    Example: 23.4

  - `prices.is_internal_forecast` (boolean, required)
    `true` when price is forecasted using past data and tariff type. Generally, forecast data is only used as a temporary measure for creating schedules in advance while real price data has not been published yet.
    Example: false

  - `rate_periods` (array | null)
    The weekly rate pattern in force today, in the tariff's timezone, in the same format used by `POST /tariffs`. A repricing scheduled with `PATCH /tariffs/{tariff_id}` is not shown here until its `effective_from` date.
`null` when the tariff's rates cannot be described this way, for example tariffs with dynamic prices or with rates for specific dates. Use `GET /tariffs/{tariff_id}/prices` for the actual prices of any tariff. `null` for licensed tariffs without the tariff:prices:read scope.

  - `rate_periods.months` (array, required)
    Months this period applies to, where 1 is January and 12 is December.
    Example: [1,2,3,4,5,6,7,8,9,10,11,12]

  - `rate_periods.iso_weekdays` (array, required)
    ISO 8601 weekdays this period applies to, where 1 is Monday and 7 is Sunday.
    Example: [1,2,3,4,5]

  - `rate_periods.rates` (array, required)
    The rates for one day. Together they must cover all 24 hours with no gaps or overlaps.

  - `rate_periods.rates.start_time` (string, required)
    Local start time as `HH:MM`, on the hour or half hour.
    Example: 00:00

  - `rate_periods.rates.end_time` (string, required)
    Local end time as `HH:MM`, on the hour or half hour.
    Example: 07:00

  - `rate_periods.rates.price_minor_units_per_kwh` (string, required)
    Price per kWh in the smallest unit of the tariff's currency (for example pence for GBP or cents for USD), as a decimal string with up to 6 decimal places. Negative prices are allowed.
    Example: 7.5

  - `rate_periods.rates.is_off_peak` (boolean)
    Whether this rate is an off-peak rate. Off-peak rates are labelled as such in charging summaries and in the app.

  - `public_holiday_rates` (any)
    The rates that replace the normal rates on public holidays, as in force today. `null` if the tariff has no holiday rates, or if `rate_periods` is `null`.

  - `public_holiday_rates.country` (string, required)
    ISO 3166-1 alpha-2 country code whose public holidays apply.
    Example: GB

  - `public_holiday_rates.subdivision` (string | null)
    Optional country subdivision whose public holidays apply, for example `ENG` (England) for GB or `NY` for US. Omit or send `null` to use only the national holidays.
    Example: ENG

  - `public_holiday_rates.rates` (array, required)
    The rates for a public holiday. Together they must cover all 24 hours with no gaps or overlaps.

## Response 200 headers (application/json):

  - `EvEnergy-Version` (number)
    Indicates the version of the API that generated this response. If EvEnergy-Version was not specified in the request, this will be your OAuth application's default version.
    Enum: "2"

  - `X-RateLimit-Limit` (number)
    The maximum number of requests that can be made to this endpoint per hour. Defaults to 1000 but may vary per client.

  - `X-RateLimit-Remaining` (number)
    The number of requests remaining until this client's rate limit is reached.

  - `RetryAfter` (number)
    The number of seconds until this client's requests will not be rate limited.

## Response 400:

  - `400` (unknown)
    A problem with the request's parameters prevented it being fulfilled.

## Response 400 fields (application/problem+json):

  - `type` (string)
    Example: https://api.ev.energy/v2/problems/example-problem/

  - `status` (number)
    Example: 400

  - `title` (string, required)
    Example: Short description

  - `detail` (string, required)
    Example: Long, more specific description.

  - `instance` (string)
    Example: https://api.ev.energy/v2/users/user01HN2P75GBNFRJPCZJXEFVXH5E

  - `notification` (object)
    Something that the user should be informed about.

  - `notification.id` (string, required)
    Unique identifier for the Notification
    Example: notf67O36PLTFDB57M0E5L33JZLGM0

  - `notification.url` (string, required)
    Example: https://api.ev.energy/notifications/notf67O36PLTFDB57M0E5L33JZLGM0

  - `notification.message_id` (string, required)
    Internal identifier for this notification type. E.g. 'ERR0023'

  - `notification.category` (string, required)
    Category of this notification type
    Enum: "ACTIONABLE", "SERVICE", "RETRY", "MARKETING", "INTERNAL"

  - `notification.event_time` (string, required)
    The timestamp of the event described by this notification

  - `notification.short_text_title` (string, required)
    Short title for the notification

  - `notification.short_text_body` (string, required)
    Short description of the event being notified

  - `notification.detail_page_title` (string, required)
    Title of a help page giving more information about this notification

  - `notification.detail_page_body` (string, required)
    Text of a help page giving more information about this notification

  - `notification.external_link` (string | null, required)
    URL of a web page giving further information about this notification

  - `notification.external_button_label` (string, required)
    Text to be displayed on a button leading to the external_link location

  - `notification.read_at` (string)
    When the user examined the contents of this notification

  - `notification.resolved_at` (string)
    When the problem associated with this notification was resolved

## Response 400 headers (application/problem+json):

  - `EvEnergy-Version` (number)
    Indicates the version of the API that generated this response. If EvEnergy-Version was not specified in the request, this will be your OAuth application's default version.
    Enum: "2"

  - `X-RateLimit-Limit` (number)
    The maximum number of requests that can be made to this endpoint per hour. Defaults to 1000 but may vary per client.

  - `X-RateLimit-Remaining` (number)
    The number of requests remaining until this client's rate limit is reached.

## Response 401:

  - `401` (unknown)
    You need to authorise requests to access this resource.

## Response 401 fields (application/problem+json):

  - `status` (number)
    Example: 401

  - `title` (string, required)
    Example: Unauthorized

  - `detail` (string, required)
    Example: Authentication credentials were not provided.

## Response 401 headers (application/problem+json):

  - `EvEnergy-Version` (number)
    Indicates the version of the API that generated this response. If EvEnergy-Version was not specified in the request, this will be your OAuth application's default version.
    Enum: "2"

  - `X-RateLimit-Limit` (number)
    The maximum number of requests that can be made to this endpoint per hour. Defaults to 1000 but may vary per client.

  - `X-RateLimit-Remaining` (number)
    The number of requests remaining until this client's rate limit is reached.

  - `RetryAfter` (number)
    The number of seconds until this client's requests will not be rate limited.

## Response 403:

  - `403` (unknown)
    You do not have permission to perform this action.

## Response 403 fields (application/problem+json):

  - `status` (number)
    Example: 403

  - `title` (string, required)
    Example: Forbidden

  - `detail` (string, required)
    Example: You do not have permission to perform this action.

## Response 403 headers (application/problem+json):

  - `EvEnergy-Version` (number)
    Indicates the version of the API that generated this response. If EvEnergy-Version was not specified in the request, this will be your OAuth application's default version.
    Enum: "2"

  - `X-RateLimit-Limit` (number)
    The maximum number of requests that can be made to this endpoint per hour. Defaults to 1000 but may vary per client.

  - `X-RateLimit-Remaining` (number)
    The number of requests remaining until this client's rate limit is reached.

  - `RetryAfter` (number)
    The number of seconds until this client's requests will not be rate limited.

## Response 404:

  - `404` (unknown)
    This resource either does not exist or the client is not authorized to access it.

## Response 404 fields (application/problem+json):

  - `status` (number)
    Example: 404

  - `title` (string, required)
    Example: Not found

  - `detail` (string, required)
    Example: Resource does not exist or cannot be accessed.

## Response 404 headers (application/problem+json):

  - `EvEnergy-Version` (number)
    Indicates the version of the API that generated this response. If EvEnergy-Version was not specified in the request, this will be your OAuth application's default version.
    Enum: "2"

  - `X-RateLimit-Limit` (number)
    The maximum number of requests that can be made to this endpoint per hour. Defaults to 1000 but may vary per client.

  - `X-RateLimit-Remaining` (number)
    The number of requests remaining until this client's rate limit is reached.

  - `RetryAfter` (number)
    The number of seconds until this client's requests will not be rate limited.

## Response 406:

  - `406` (unknown)
    Could not satisfy the request Accept header.

## Response 406 fields (application/problem+json):

  - `status` (number)
    Example: 406

  - `title` (string, required)
    Example: Not Acceptable

  - `detail` (string, required)
    Example: Could not satisfy the request Accept header.

## Response 406 headers (application/problem+json):

  - `EvEnergy-Version` (number)
    Indicates the version of the API that generated this response. If EvEnergy-Version was not specified in the request, this will be your OAuth application's default version.
    Enum: "2"

  - `X-RateLimit-Limit` (number)
    The maximum number of requests that can be made to this endpoint per hour. Defaults to 1000 but may vary per client.

  - `X-RateLimit-Remaining` (number)
    The number of requests remaining until this client's rate limit is reached.

  - `RetryAfter` (number)
    The number of seconds until this client's requests will not be rate limited.

## Response 429:

  - `429` (unknown)
    The client has exceeded its rate limit.

## Response 429 fields (application/problem+json):

  - `type` (string)
    Example: https://api.ev.energy/v2/problems/example-problem/

  - `status` (number)
    Example: 400

  - `title` (string, required)
    Example: Short description

  - `detail` (string, required)
    Example: Long, more specific description.

  - `instance` (string)
    Example: https://api.ev.energy/v2/users/user01HN2P75GBNFRJPCZJXEFVXH5E

  - `notification` (object)
    Something that the user should be informed about.

  - `notification.id` (string, required)
    Unique identifier for the Notification
    Example: notf67O36PLTFDB57M0E5L33JZLGM0

  - `notification.url` (string, required)
    Example: https://api.ev.energy/notifications/notf67O36PLTFDB57M0E5L33JZLGM0

  - `notification.message_id` (string, required)
    Internal identifier for this notification type. E.g. 'ERR0023'

  - `notification.category` (string, required)
    Category of this notification type
    Enum: "ACTIONABLE", "SERVICE", "RETRY", "MARKETING", "INTERNAL"

  - `notification.event_time` (string, required)
    The timestamp of the event described by this notification

  - `notification.short_text_title` (string, required)
    Short title for the notification

  - `notification.short_text_body` (string, required)
    Short description of the event being notified

  - `notification.detail_page_title` (string, required)
    Title of a help page giving more information about this notification

  - `notification.detail_page_body` (string, required)
    Text of a help page giving more information about this notification

  - `notification.external_link` (string | null, required)
    URL of a web page giving further information about this notification

  - `notification.external_button_label` (string, required)
    Text to be displayed on a button leading to the external_link location

  - `notification.read_at` (string)
    When the user examined the contents of this notification

  - `notification.resolved_at` (string)
    When the problem associated with this notification was resolved

## Response 429 headers (application/problem+json):

  - `EvEnergy-Version` (number)
    Indicates the version of the API that generated this response. If EvEnergy-Version was not specified in the request, this will be your OAuth application's default version.
    Enum: "2"

  - `Retry-After` (number)
    The number of seconds until this client's requests will not be rate limited.

  - `X-RateLimit-Limit` (number)
    The maximum number of requests that can be made to this endpoint per hour. Defaults to 1000 but may vary per client.

  - `X-RateLimit-Remaining` (number)
    The number of requests remaining until this client's rate limit is reached.

## Response 400 examples:

  - `Unsupported Version` (unknown)

## Response 429 examples:

  - `Example 1` (unknown)

