> ## 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.

# Get invoice details for a node

> Request invoice details for a single nodeId and specific list of commodities (ie. ELECTRIC) and filter on invoices that have a statement date between start and end dates.  See Commodity model for full list of possible commodityCodes.  Please note, that you can only filter on commodities available for that node, since not all nodes have all commodities. This can be verified by a call to the info API endpoint



## OpenAPI

````yaml /tango_watchwire/integrations/guides/watchwire-api.yaml post /invoice/node/{nodeId}/{commodityCodes}/{startDate}/{endDate}
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:
  /invoice/node/{nodeId}/{commodityCodes}/{startDate}/{endDate}:
    post:
      tags:
        - Invoice API - Invoice
      summary: Get invoice details for a node
      description: >-
        Request invoice details for a single nodeId and specific list of
        commodities (ie. ELECTRIC) and filter on invoices that have a statement
        date between start and end dates.  See Commodity model for full list of
        possible commodityCodes.  Please note, that you can only filter on
        commodities available for that node, since not all nodes have all
        commodities. This can be verified by a call to the info API endpoint
      operationId: getInvoiceDetailsForANode
      parameters:
        - name: nodeId
          in: path
          required: true
          schema:
            type: integer
          description: >-
            ID for a specific node (property/region etc.) as found in the
            response from info API endpoint
        - name: commodityCodes
          in: path
          required: true
          schema:
            type: string
          description: >-
            Comma separated list of commodity codes, ie. ELECTRIC,NATURAL_GAS
            (full list found as enum in the Commodity model)
        - name: startDate
          in: path
          required: true
          schema:
            type: string
            format: date
          description: >-
            Used to limit query to invoices with statement dates after start
            date (yyyy-mm-dd)
        - name: endDate
          in: path
          required: true
          schema:
            type: string
            format: date
          description: >-
            Used to limit query to invoices with statement dates before end date
            (yyyy-mm-dd)
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                type: object
        '400':
          description: Invalid ID supplied
        '401':
          description: Unauthorized - missing, invalid or expired token
        '403':
          description: Unauthorized access to id
      security:
        - TokenHeader: []
      servers:
        - url: https://invoice.replace-me.example.com
          description: Invoice API (Postman variable {{portal-api-baseurl}})
components:
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: >-
        Token returned by `POST /authenticate`. Expires after 60 minutes of
        inactivity.
    TokenHeader:
      type: apiKey
      in: header
      name: Token
      description: API token sent in the `Token` header.

````