> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tangoanalytics.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Update Custom Meter

> A `PUT` request will update a custom meter with a matching identifier.



## OpenAPI

````yaml /tango_watchwire/integrations/guides/watchwire-api.yaml put /custommeters/{customMeterId}
openapi: 3.1.0
info:
  title: WatchWire API
  version: 1.0.0
  description: >-
    The WatchWire Platform has APIs that allow you to access your data
    programmatically. There are several APIs designed for the modules in the
    WatchWire platform including - Invoice Data, Real-Time, Accounts Payable,
    and Measurement & Verification. All are highly scalable, and secure APIs
    that communicate over HTTPS RESTful protocols with JSON based documents.


    > **Note**: Not all WatchWire modules are available as an API.


    # Authentication


    You need credentials to access the APIs - it is the same credentials as your
    WatchWire login. The `/authenticate` will return a Token that needs to be
    included in the header of every subsequent request. The token renews with
    each request and expires after 60 minutes of inactivity (at which point you
    will need to re-authenticate and get a new token).


    > Please contact the WatchWire team for any questions or request for API
    credential access.


    # Error Codes


    There will be various error codes specific to the API you are using, but
    generally follows these principles:


    *   `Unauthorized` - *you are unauthenticated or unauthorized to request
    actions on an asset*

    *   `Asset doesn't exist` - *the item you are querying for doesn't exist*

    *   `Server error`\- *general exception raised in our application code*
        

    # Rate limit


    Rate limited to 10 transactions per meter / second
servers:
  - url: https://auth.replace-me.example.com
    description: Authentication service (Postman variable {{ww-api-baseurl}})
  - url: https://realtime.replace-me.example.com
    description: RealTime API (Postman variable {{gateway-realtime-api}})
  - url: https://ap.replace-me.example.com
    description: Accounts Payable API (Postman variable {{gateway-ap-api}})
  - url: https://invoice.replace-me.example.com
    description: Invoice API (Postman variable {{portal-api-baseurl}})
  - url: https://mv.replace-me.example.com
    description: Measurement & Verification API (Postman variable {{invoice-api}})
security:
  - BearerAuth: []
tags:
  - name: Authentication
  - name: RealTime API - Custom Meter
  - name: RealTime API - Meter Readings
  - name: RealTime API - Meter Readings Aggregations
  - name: RealTime API - Meter Readings Batch Operations
  - name: RealTime API - Obvius Meter Readings
  - name: Accounts Payable API - Audit Statements
  - name: Accounts Payable API - Nexus Statements
  - name: Accounts Payable API - Standard Statements
  - name: Accounts Payable API - Statement PDFs
  - name: Invoice API - Reference IDs
  - name: Invoice API - Invoice
  - name: Measurement & Verification API - M&V
paths:
  /custommeters/{customMeterId}:
    put:
      tags:
        - RealTime API - Custom Meter
      summary: Update Custom Meter
      description: A `PUT` request will update a custom meter with a matching identifier.
      operationId: updateCustomMeter
      parameters:
        - name: customMeterId
          in: path
          required: true
          schema:
            type: integer
          description: Unique identifier of the custom meter.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                utilityAccountNumber:
                  type: string
                accountId:
                  type: integer
                submeterAccountId:
                  type:
                    - string
                    - 'null'
                meterNumber:
                  type: string
                type:
                  type: string
                multiplier:
                  type: integer
                readingsPerHour:
                  type: integer
                name:
                  type: string
                timezone:
                  type: string
                displayTimezone:
                  type: string
                meterProvider:
                  type: string
                energyUnit:
                  type: string
                energyUnitCode:
                  type:
                    - string
                    - 'null'
                isCumulative:
                  type: boolean
                additionalSettings:
                  type: object
                  properties:
                    password:
                      type: string
                    serialNumber:
                      type: string
                    device:
                      type: string
                    readingColumns:
                      type: string
                    timestampColumn:
                      type: integer
                shiftCumulativeReadings:
                  type: boolean
                shiftReadings:
                  type: boolean
                cumulative:
                  type: boolean
            example:
              utilityAccountNumber: '6789'
              accountId: 500
              submeterAccountId: null
              meterNumber: '5678'
              type: realtime
              multiplier: 100
              readingsPerHour: 18
              name: 'Meter: 5678'
              timezone: UTC
              displayTimezone: UTC
              meterProvider: OBVIUS_METER
              energyUnit: MW
              energyUnitCode: null
              isCumulative: false
              additionalSettings:
                password: '********'
                serialNumber: 001ABCDE
                device: '2'
                readingColumns: '8'
                timestampColumn: 1
              shiftCumulativeReadings: false
              shiftReadings: false
              cumulative: false
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: integer
                  utilityAccountNumber:
                    type: string
                  accountId:
                    type: integer
                  meterNumber:
                    type: string
                  type:
                    type: string
                  multiplier:
                    type: integer
                  readingsPerHour:
                    type: integer
                  name:
                    type: string
                  timezone:
                    type: string
                  displayTimezone:
                    type: string
                  commodity:
                    type: string
                  meterProvider:
                    type: string
                  sourceCategory:
                    type: string
                  isCumulative:
                    type: boolean
                  additionalSettings:
                    type: object
                    properties:
                      password:
                        type: string
                      serialNumber:
                        type: string
                      device:
                        type: string
                      readingColumns:
                        type: string
                      timestampColumn:
                        type: integer
                  virtualMeter:
                    type: boolean
                  cumulative:
                    type: boolean
                  energyUnitCode:
                    type: string
                  energyUnit:
                    type: string
              example:
                id: 12406
                utilityAccountNumber: '6789'
                accountId: 500
                meterNumber: '5678'
                type: realtime
                multiplier: 100
                readingsPerHour: 18
                name: 'Meter: 5678'
                timezone: UTC
                displayTimezone: UTC
                commodity: electric
                meterProvider: OBVIUS_METER
                sourceCategory: CONSUMPTION
                isCumulative: false
                additionalSettings:
                  password: '********'
                  serialNumber: 001ABCDE
                  device: '2'
                  readingColumns: '8'
                  timestampColumn: 1
                cumulative: false
                virtualMeter: false
                energyUnitCode: KWH
                energyUnit: kWh
        '401':
          description: Unauthorized - missing, invalid or expired token
      security:
        - BearerAuth: []
      servers:
        - url: https://realtime.replace-me.example.com
          description: RealTime API (Postman variable {{gateway-realtime-api}})
components:
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: >-
        Token returned by `POST /authenticate`. Expires after 60 minutes of
        inactivity.

````