Class: Pago::V2026_04::Services::Meters

Inherits:
Service
  • Object
show all
Defined in:
lib/pago/v2026_04/services/meters.rb,
sig/pago/v2026_04/generated.rbs

Instance Attribute Summary

Attributes inherited from Service

#client

Instance Method Summary collapse

Methods inherited from Service

#initialize

Constructor Details

This class inherits a constructor from Pago::Service

Instance Method Details

#create(body: {}) ⇒ Models::Meter

Create a meter.

Scopes: meters:write

Parameters:

  • body (Hash, Models::MeterCreate) (defaults to: {})

    the request body.

  • body: (Object) (defaults to: {})

Returns:

Raises:



52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/pago/v2026_04/services/meters.rb', line 52

def create(body: {})
  data = client.request(
    http_method: "POST",
    path: "/v1/meters/",
    path_params: {},
    query: {},
    body: body,
    response_type: :json,
    errors: { 422 => Errors::HTTPValidationError }
  )
  Models::Meter.from_json(data)
end

#get(id) ⇒ Models::Meter

Get a meter by ID.

Scopes: meters:read meters:write

Parameters:

  • id (String)

    The meter ID.

Returns:

Raises:



74
75
76
77
78
79
80
81
82
83
84
# File 'lib/pago/v2026_04/services/meters.rb', line 74

def get(id)
  data = client.request(
    http_method: "GET",
    path: "/v1/meters/{id}",
    path_params: { "id" => id },
    query: {},
    response_type: :json,
    errors: { 404 => Errors::ResourceNotFound, 422 => Errors::HTTPValidationError }
  )
  Models::Meter.from_json(data)
end

#list(organization_id: nil, query: nil, is_archived: nil, page: 1, limit: 10, sorting: ["name"], metadata: nil) ⇒ Models::ListResourceMeter

List meters.

Scopes: meters:read meters:write

Parameters:

  • organization_id (String, Array<String>, nil) (defaults to: nil)

    Filter by organization ID.

  • query (String, nil) (defaults to: nil)

    Filter by name.

  • is_archived (Boolean, nil) (defaults to: nil)

    Filter on archived meters.

  • page (Integer) (defaults to: 1)

    Page number, defaults to 1.

  • limit (Integer) (defaults to: 10)

    Size of a page, defaults to 10. Maximum is 100.

  • sorting (Array<String>, nil) (defaults to: ["name"])

    Sorting criterion. Several criteria can be used simultaneously and will be applied in order. Add a minus sign - before the criteria name to sort by descending order.

  • metadata (Object) (defaults to: nil)

    Filter by metadata key-value pairs. It uses the deepObject style, e.g. ?metadata[key]=value.

  • organization_id: (Object) (defaults to: nil)
  • query: (String, nil) (defaults to: nil)
  • is_archived: (Boolean, nil) (defaults to: nil)
  • page: (Integer, nil) (defaults to: 1)
  • limit: (Integer, nil) (defaults to: 10)
  • sorting: (Array[String], nil) (defaults to: ["name"])
  • metadata: (Object) (defaults to: nil)

Returns:

Raises:



21
22
23
24
25
26
27
28
29
30
31
# File 'lib/pago/v2026_04/services/meters.rb', line 21

def list(organization_id: nil, query: nil, is_archived: nil, page: 1, limit: 10, sorting: ["name"], metadata: nil)
  data = client.request(
    http_method: "GET",
    path: "/v1/meters/",
    path_params: {},
    query: { "organization_id" => organization_id, "query" => query, "is_archived" => is_archived, "page" => page, "limit" => limit, "sorting" => sorting, "metadata" =>  },
    response_type: :json,
    errors: { 422 => Errors::HTTPValidationError }
  )
  Models::ListResourceMeter.from_json(data)
end

#list_each(organization_id: nil, query: nil, is_archived: nil, limit: 10, sorting: ["name"], metadata: nil) {|item| ... } ⇒ Pago::Paginator

Enumerate every item of list, fetching pages on demand.

Parameters:

  • organization_id: (Object) (defaults to: nil)
  • query: (String, nil) (defaults to: nil)
  • is_archived: (Boolean, nil) (defaults to: nil)
  • limit: (Integer, nil) (defaults to: 10)
  • sorting: (Array[String], nil) (defaults to: ["name"])
  • metadata: (Object) (defaults to: nil)

Yield Parameters:

Returns:



37
38
39
40
41
42
# File 'lib/pago/v2026_04/services/meters.rb', line 37

def list_each(organization_id: nil, query: nil, is_archived: nil, limit: 10, sorting: ["name"], metadata: nil, &block)
  paginator = ::Pago::Paginator.new do |page_number|
    list(organization_id: organization_id, query: query, is_archived: is_archived, page: page_number, limit: limit, sorting: sorting, metadata: )
  end
  block ? paginator.each(&block) : paginator
end

#quantities(id, start_timestamp:, end_timestamp:, interval:, timezone: "UTC", customer_id: nil, external_customer_id: nil, customer_aggregation_function: nil, metadata: nil) ⇒ Models::MeterQuantities

Get quantities of a meter over a time period.

Scopes: meters:read meters:write

Parameters:

  • id (String)

    The meter ID.

  • start_timestamp (String)

    Start timestamp.

  • end_timestamp (String)

    End timestamp.

  • interval (String)

    Interval between two timestamps.

  • timezone (String) (defaults to: "UTC")

    Timezone to use for the timestamps. Default is UTC.

  • customer_id (String, Array<String>, nil) (defaults to: nil)

    Filter by customer ID.

  • external_customer_id (String, Array<String>, nil) (defaults to: nil)

    Filter by external customer ID.

  • customer_aggregation_function (String, nil) (defaults to: nil)

    If set, will first compute the quantities per customer before aggregating them using the given function. If not set, the quantities will be aggregated across all events.

  • metadata (Object) (defaults to: nil)

    Filter by metadata key-value pairs. It uses the deepObject style, e.g. ?metadata[key]=value.

  • start_timestamp: (String)
  • end_timestamp: (String)
  • interval: (String)
  • timezone: (String, nil) (defaults to: "UTC")
  • customer_id: (Object) (defaults to: nil)
  • external_customer_id: (Object) (defaults to: nil)
  • customer_aggregation_function: (String, nil) (defaults to: nil)
  • metadata: (Object) (defaults to: nil)

Returns:

Raises:



126
127
128
129
130
131
132
133
134
135
136
# File 'lib/pago/v2026_04/services/meters.rb', line 126

def quantities(id, start_timestamp:, end_timestamp:, interval:, timezone: "UTC", customer_id: nil, external_customer_id: nil, customer_aggregation_function: nil, metadata: nil)
  data = client.request(
    http_method: "GET",
    path: "/v1/meters/{id}/quantities",
    path_params: { "id" => id },
    query: { "start_timestamp" => start_timestamp, "end_timestamp" => end_timestamp, "interval" => interval, "timezone" => timezone, "customer_id" => customer_id, "external_customer_id" => external_customer_id, "customer_aggregation_function" => customer_aggregation_function, "metadata" =>  },
    response_type: :json,
    errors: { 404 => Errors::ResourceNotFound, 422 => Errors::HTTPValidationError }
  )
  Models::MeterQuantities.from_json(data)
end

#update(id, body: {}) ⇒ Models::Meter

Update a meter.

Scopes: meters:write

Parameters:

  • id (String)

    The meter ID.

  • body (Hash, Models::MeterUpdate) (defaults to: {})

    the request body.

  • body: (Object) (defaults to: {})

Returns:

Raises:



96
97
98
99
100
101
102
103
104
105
106
107
# File 'lib/pago/v2026_04/services/meters.rb', line 96

def update(id, body: {})
  data = client.request(
    http_method: "PATCH",
    path: "/v1/meters/{id}",
    path_params: { "id" => id },
    query: {},
    body: body,
    response_type: :json,
    errors: { 404 => Errors::ResourceNotFound, 422 => Errors::HTTPValidationError }
  )
  Models::Meter.from_json(data)
end