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

# List an organization's pending user-facing action projections.

> Render pending cues + unread information notifications into a merged, newest-first list of
``DeviceAction`` projections. Both source tables are capped at ``limit + offset`` rows at SQL
before the Python-side merge + sort + slice, so page cost scales with the requested window,
not the org's total pending backlog.

``code`` filters both sources on the cue code: an action cue matches its own ``code``, an
information notification matches its linked cue's code (so cue-less sends drop out under a code
filter). ``created_after``/``created_before`` bound each source's own timestamp (cue
``created_at`` / notification ``sent_at``).



## OpenAPI

````yaml https://app.podero.com/api/partners/v2.0/openapi.json get /api/partners/v2.0/org/{org_id}/notifications/actions
openapi: 3.1.0
info:
  title: Podero Partner API
  version: '2.0'
  description: >-
    This API provides a unified interaction point for Podero's partner
    companies.


    The goal of this API is to give partners easily integratable endpoints that
    don't require extensive software

    development. For this reason, the endpoints focus around user and device
    management, setting of preferences

    and high level device controls.


    While direct control of devices is implemented for special use cases such as
    pause power, we abstract away low level

    direct device steering so developers and partners can focus on delivering
    maximum value to end users.
  termsOfService: https://www.podero.com/terms-and-conditions
servers: []
security: []
paths:
  /api/partners/v2.0/org/{org_id}/notifications/actions:
    get:
      tags:
        - Notifications
      summary: List an organization's pending user-facing action projections.
      description: >-
        Render pending cues + unread information notifications into a merged,
        newest-first list of

        ``DeviceAction`` projections. Both source tables are capped at ``limit +
        offset`` rows at SQL

        before the Python-side merge + sort + slice, so page cost scales with
        the requested window,

        not the org's total pending backlog.


        ``code`` filters both sources on the cue code: an action cue matches its
        own ``code``, an

        information notification matches its linked cue's code (so cue-less
        sends drop out under a code

        filter). ``created_after``/``created_before`` bound each source's own
        timestamp (cue

        ``created_at`` / notification ``sent_at``).
      operationId: integrations_api_api_v2_organizations_notifications_router_list_actions
      parameters:
        - in: path
          name: org_id
          schema:
            description: The organization ID.
            format: uuid
            title: Org Id
            type: string
          required: true
          description: The organization ID.
        - in: query
          name: owner_id
          schema:
            anyOf:
              - format: uuid
                type: string
              - type: 'null'
            description: Restrict to a single owner's actions.
            title: Owner Id
          required: false
          description: Restrict to a single owner's actions.
        - in: query
          name: device_id
          schema:
            anyOf:
              - format: uuid
                type: string
              - type: 'null'
            description: Restrict to a single device's actions.
            title: Device Id
          required: false
          description: Restrict to a single device's actions.
        - in: query
          name: device_type
          schema:
            anyOf:
              - $ref: '#/components/schemas/DeviceField'
              - type: 'null'
            description: Restrict to one device type.
          required: false
          description: Restrict to one device type.
        - in: query
          name: code
          schema:
            anyOf:
              - items:
                  $ref: '#/components/schemas/CueCode'
                type: array
              - type: 'null'
            description: >-
              Restrict to actions whose cue carries one of these codes
              (repeatable).
            title: Code
          required: false
          description: >-
            Restrict to actions whose cue carries one of these codes
            (repeatable).
        - in: query
          name: created_after
          schema:
            anyOf:
              - format: date-time
                type: string
              - type: 'null'
            description: Only actions created at or after this time.
            title: Created After
          required: false
          description: Only actions created at or after this time.
        - in: query
          name: created_before
          schema:
            anyOf:
              - format: date-time
                type: string
              - type: 'null'
            description: Only actions created at or before this time.
            title: Created Before
          required: false
          description: Only actions created at or before this time.
        - in: query
          name: limit
          schema:
            default: 50
            description: Page size.
            maximum: 100
            minimum: 1
            title: Limit
            type: integer
          required: false
          description: Page size.
        - in: query
          name: offset
          schema:
            default: 0
            description: Items to skip.
            minimum: 0
            title: Offset
            type: integer
          required: false
          description: Items to skip.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                items:
                  discriminator:
                    mapping:
                      information:
                        $ref: '#/components/schemas/InformationActionProjection'
                      reauthenticate:
                        $ref: '#/components/schemas/ReauthenticateProjection'
                      soc_input_requested:
                        $ref: '#/components/schemas/SocInputRequestedProjection'
                    propertyName: code
                  oneOf:
                    - $ref: '#/components/schemas/ReauthenticateProjection'
                    - $ref: '#/components/schemas/InformationActionProjection'
                    - $ref: '#/components/schemas/SocInputRequestedProjection'
                title: Response
                type: array
      security:
        - OAuth2: []
components:
  schemas:
    DeviceField:
      description: >-
        A device type's ORM relation name — and the key into its state-store
        binding.


        The value doubles as the related-name used in ORM kwargs (e.g.
        ``HeatPumpDataPoint(heat_pump=…)``),

        so this is a ``StrEnum`` to stay interchangeable with that string at
        those sites.
      enum:
        - heat_pump
        - inverter
        - electric_vehicle
        - wallbox
      title: DeviceField
      type: string
    CueCode:
      enum:
        - reauthenticate
        - virtual_key_required
        - subscription_required
        - remote_access_disabled
        - terms_not_accepted
        - discarded
        - information
        - steering_recovery_failed
        - oem_charge_cap_detected
        - wallbox_current_cap_detected
        - battery_mode_reset_failed
        - device_offline
        - fully_charged
        - soc_input_requested
        - vendor_access_required
        - premium_subscription_required
      title: CueCode
      type: string
    InformationActionProjection:
      description: Action showing a message to the user.
      properties:
        code:
          const: information
          description: Discriminator identifying this as an information action.
          title: Code
          type: string
        origin_code:
          allOf:
            - $ref: '#/components/schemas/CueCode'
          default: information
          description: >-
            The originating cue code (e.g. `device_offline`,
            `steering_recovery_failed`). Every rich code renders under the
            single `information` discriminator, so this carries the real code
            for callers that rank/label by severity. `information` for generic
            sends.
        resolution_link:
          $ref: '#/components/schemas/cue_handler__api_schemas__ResolutionLinkSchema'
          description: Link the caller follows to resolve the message showing.
        metadata:
          additionalProperties: true
          description: >-
            Action-specific metadata. Carries the user-visible message under
            `message`.
          title: Metadata
          type: object
        sent_at:
          description: >-
            Timestamp when the latest message in this action was sent to the
            user.
          format: date-time
          title: Sent At
          type: string
        device_id:
          anyOf:
            - format: uuid
              type: string
            - type: 'null'
          description: The device this message relates to, if any.
          title: Device Id
        device_type:
          anyOf:
            - type: string
            - type: 'null'
          description: >-
            The device's type key (e.g. `electric_vehicle`), matching the status
            roll-up keys.
          title: Device Type
        owner:
          anyOf:
            - $ref: '#/components/schemas/OwnerIdentity'
            - type: 'null'
          description: >-
            The device owner (id + email/name), so callers skip the device→owner
            lookup.
      required:
        - code
        - resolution_link
        - sent_at
      title: InformationActionProjection
      type: object
    ReauthenticateProjection:
      description: >-
        Action requiring the partner to reauthenticate the user against an
        upstream provider.


        Once more action codes are introduced, expose them as sibling classes
        (e.g.

        `FooAction` with `code: Literal["foo"]`) and combine them into a
        discriminated

        union (`Annotated[ReauthenticateAction | FooAction,
        Field(discriminator="code")]`)

        so OpenAPI consumers can branch on `code` to select the right shape.
      properties:
        code:
          const: reauthenticate
          description: Discriminator identifying this as a reauthentication action.
          title: Code
          type: string
        resolution_link:
          $ref: >-
            #/components/schemas/cue_handler__actions__reauth__ResolutionLinkSchema
          description: Link the caller follows to start the reauthentication.
        device_id:
          anyOf:
            - format: uuid
              type: string
            - type: 'null'
          description: The device this action belongs to.
          title: Device Id
        device_type:
          anyOf:
            - type: string
            - type: 'null'
          description: >-
            The device's type key (e.g. `electric_vehicle`), matching the status
            roll-up keys.
          title: Device Type
        owner:
          anyOf:
            - $ref: '#/components/schemas/OwnerIdentity'
            - type: 'null'
          description: >-
            The device owner (id + email/name), so callers skip the device→owner
            lookup.
        created_at:
          anyOf:
            - format: date-time
              type: string
            - type: 'null'
          description: When the action was raised (the originating cue's creation time).
          title: Created At
      required:
        - code
        - resolution_link
      title: ReauthenticateProjection
      type: object
    SocInputRequestedProjection:
      description: >-
        Action asking the user for the connected car's state of charge.


        Action-style (it drives `action_needed`), but with no dismiss
        requirement: the cue

        re-arms at every SoC-less spot session start and self-resolves on input
        or session

        end, so surfacing it is enough — there is nothing for the user to
        acknowledge away.
      properties:
        code:
          const: soc_input_requested
          description: Discriminator identifying this as a state-of-charge input request.
          title: Code
          type: string
        resolution_link:
          $ref: '#/components/schemas/cue_handler__api_schemas__ResolutionLinkSchema'
          description: >-
            The session-soc endpoint for this wallbox: POST the user's input
            there (`soc_pct` in the body) under the normal partner authorisation
            — no secret parameter. The action disappears once the input is
            accepted or the charging session ends.
        capacity_configured:
          description: >-
            Whether the wallbox's battery capacity is configured. When false,
            collect the capacity alongside the state of charge
            (`battery_capacity_kwh` in the same request): the session-soc
            endpoint rejects input without it.
          title: Capacity Configured
          type: boolean
        default_battery_capacity_kwh:
          anyOf:
            - type: number
            - type: 'null'
          description: >-
            The wallbox's currently configured car battery capacity (kWh) to
            pre-fill the form with. Null when none is configured — the
            `capacity_configured=false` case.
          title: Default Battery Capacity Kwh
        default_charge_deadline:
          anyOf:
            - type: string
            - type: 'null'
          description: >-
            The deadline this session will be planned against unless overridden,
            as an ISO-8601 instant. Already rolled to its next occurrence
            server-side, so it can be shown as-is.
          title: Default Charge Deadline
        default_charge_target_pct:
          anyOf:
            - type: integer
            - type: 'null'
          description: >-
            The state of charge this session will aim for unless overridden —
            the wallbox's configured charge limit.
          title: Default Charge Target Pct
        device_id:
          anyOf:
            - format: uuid
              type: string
            - type: 'null'
          description: The wallbox this request belongs to.
          title: Device Id
        device_type:
          anyOf:
            - type: string
            - type: 'null'
          description: >-
            The device's type key (e.g. `wallbox`), matching the status roll-up
            keys.
          title: Device Type
        owner:
          anyOf:
            - $ref: '#/components/schemas/OwnerIdentity'
            - type: 'null'
          description: >-
            The device owner (id + email/name), so callers skip the device→owner
            lookup.
        created_at:
          anyOf:
            - format: date-time
              type: string
            - type: 'null'
          description: When the action was raised (the originating cue's creation time).
          title: Created At
      required:
        - code
        - resolution_link
        - capacity_configured
      title: SocInputRequestedProjection
      type: object
    cue_handler__api_schemas__ResolutionLinkSchema:
      properties:
        url:
          description: >-
            Relative URL the caller hits to resolve the action. Already includes
            the action's ID and a signed `secret` query parameter; the secret is
            bound to the member and expires 1 hour after issuance.
          title: Url
          type: string
        required_parameters:
          description: >-
            Names of the body fields the caller must supply when resolving the
            action.
          items:
            type: string
          title: Required Parameters
          type: array
      required:
        - url
        - required_parameters
      title: ResolutionLinkSchema
      type: object
    OwnerIdentity:
      description: >-
        The device owner inlined on device-keyed projections, so a caller
        resolves

        device→owner→user from the row itself instead of fetching the whole
        device list.
      properties:
        id:
          description: The owner member's id.
          format: uuid
          title: Id
          type: string
        email:
          anyOf:
            - type: string
            - type: 'null'
          description: The owner's email, if known.
          title: Email
        first_name:
          anyOf:
            - type: string
            - type: 'null'
          description: The owner's first name, if known.
          title: First Name
        last_name:
          anyOf:
            - type: string
            - type: 'null'
          description: The owner's last name, if known.
          title: Last Name
      required:
        - id
      title: OwnerIdentity
      type: object
    cue_handler__actions__reauth__ResolutionLinkSchema:
      properties:
        url:
          description: >-
            Relative URL the caller hits to start the action. Already includes
            the action's ID and a signed `secret` query parameter; the secret is
            bound to the member and expires 1 hour after issuance.
          title: Url
          type: string
        required_parameters:
          description: >-
            Names of the body fields the caller must supply when starting the
            action.
          items:
            type: string
          title: Required Parameters
          type: array
      required:
        - url
        - required_parameters
      title: ResolutionLinkSchema
      type: object
  securitySchemes:
    OAuth2:
      type: oauth2
      flows:
        password:
          tokenUrl: /api/partners/v2.0/auth/token
          scopes: {}
        clientCredentials:
          tokenUrl: /api/partners/v2.0/auth/token
          scopes: {}

````