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

# Get a pass notification

> Fetches a single notification, the polling endpoint for delivery progress. The overall `status` resolves to `SENT`, `PARTIAL`, `FAILED` or `SKIPPED` once every applicable platform finished; `apple.deviceCount` of `0` means the pass artifact was updated but no Apple device is registered for updates.

Requires the `pass-notifications:read` scope on the access token.



## OpenAPI

````yaml /api-reference/openapi.json get /v1/passes/{id}/notifications/{notificationId}
openapi: 3.1.0
info:
  title: Passlet API (Public)
  version: 0.2.0
  description: >-
    Public integration API for Passlet. Every route is callable with a `plt_*`
    access token, and each operation lists the required access-token scope.
  license:
    name: UNLICENSED
    identifier: UNLICENSED
servers:
  - url: https://api.passlet.io
    description: Production
security: []
paths:
  /v1/passes/{id}/notifications/{notificationId}:
    get:
      tags:
        - passes
      summary: Get a pass notification
      description: >-
        Fetches a single notification, the polling endpoint for delivery
        progress. The overall `status` resolves to `SENT`, `PARTIAL`, `FAILED`
        or `SKIPPED` once every applicable platform finished;
        `apple.deviceCount` of `0` means the pass artifact was updated but no
        Apple device is registered for updates.


        Requires the `pass-notifications:read` scope on the access token.
      operationId: getV1PassesIdNotificationsNotificationId
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            pattern: >-
              ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
          description: Pass identifier
        - name: notificationId
          in: path
          required: true
          schema:
            type: string
            format: uuid
            pattern: >-
              ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
          description: Pass notification identifier
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PassNotification'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '429':
          description: Rate limited
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '503':
          description: Service unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
      security:
        - bearerAuth: []
components:
  schemas:
    PassNotification:
      $schema: https://json-schema.org/draft/2020-12/schema
      type: object
      properties:
        id:
          type: string
          format: uuid
          pattern: >-
            ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
          description: Pass notification identifier
        passId:
          type: string
          format: uuid
          pattern: >-
            ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
          description: Pass identifier
        body:
          type: string
          description: Message text
        options:
          anyOf:
            - type: object
              properties:
                google:
                  type: object
                  properties:
                    header:
                      description: Title shown above the message in the Google Wallet app
                      type: string
                      minLength: 1
                      maxLength: 100
                  additionalProperties: false
              additionalProperties: false
              description: Provider-specific delivery options
            - type: 'null'
          description: Provider-specific options supplied at creation
        sendAt:
          anyOf:
            - type: string
              format: date-time
              pattern: >-
                ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
              description: ISO 8601 timestamp
            - type: 'null'
          description: Scheduled delivery time; null for immediate sends
        status:
          type: string
          enum:
            - SCHEDULED
            - PENDING
            - SENT
            - PARTIAL
            - FAILED
            - SKIPPED
          description: >-
            Overall delivery status: SCHEDULED (sendAt in the future, nothing
            dispatched), PENDING (delivery in progress), SENT (delivered on
            every applicable platform), PARTIAL (one platform sent, the other
            failed), FAILED (failed on every applicable platform), SKIPPED (no
            targeted platform was applicable)
          example: SCHEDULED
        apple:
          type: object
          properties:
            status:
              type: string
              enum:
                - PENDING
                - SENT
                - FAILED
                - SKIPPED
              description: Per-provider delivery status
              example: PENDING
            error:
              anyOf:
                - type: string
                - type: 'null'
              description: Last delivery error, if any
            deviceCount:
              anyOf:
                - type: integer
                  minimum: -9007199254740991
                  maximum: 9007199254740991
                - type: 'null'
              description: >-
                Registered Apple devices that were pushed to. 0 means the pass
                artifact was updated but no device is registered for updates
          required:
            - status
            - error
            - deviceCount
          additionalProperties: false
        google:
          type: object
          properties:
            status:
              type: string
              enum:
                - PENDING
                - SENT
                - FAILED
                - SKIPPED
              description: Per-provider delivery status
              example: PENDING
            error:
              anyOf:
                - type: string
                - type: 'null'
              description: Last delivery error, if any
          required:
            - status
            - error
          additionalProperties: false
        createdAt:
          type: string
          format: date-time
          pattern: >-
            ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
          description: ISO 8601 timestamp
        updatedAt:
          type: string
          format: date-time
          pattern: >-
            ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
          description: ISO 8601 timestamp
      required:
        - id
        - passId
        - body
        - options
        - sendAt
        - status
        - apple
        - google
        - createdAt
        - updatedAt
      additionalProperties: false
    ApiError:
      $schema: https://json-schema.org/draft/2020-12/schema
      type: object
      properties:
        errorCode:
          type: string
          enum:
            - UNAUTHORIZED
            - FORBIDDEN
            - SCANNER_OFFLINE_DISABLED
            - TOKEN_EXPIRED
            - TOKEN_INVALID
            - CSRF_TOKEN_INVALID
            - TENANT_EXPIRED
            - TENANT_NOT_FOUND
            - ORGANIZATION_REQUIRED
            - TENANT_SUSPENDED
            - VALIDATION_ERROR
            - INVALID_INPUT
            - MISSING_REQUIRED_FIELD
            - INVALID_FORMAT
            - SYSTEM_VARIABLE_READONLY
            - NOT_FOUND
            - PASS_NOT_FOUND
            - TEMPLATE_NOT_FOUND
            - WEBHOOK_NOT_FOUND
            - NOTIFICATION_NOT_FOUND
            - PASS_NOTIFICATION_NOT_FOUND
            - PASS_NOTIFICATION_BROADCAST_NOT_FOUND
            - CONFLICT
            - VERSION_CONFLICT
            - DUPLICATE_PASS
            - IDEMPOTENCY_CONFLICT
            - SCANNER_SNAPSHOT_STALE
            - TEMPLATE_VERSION_NOT_NEWER
            - WEBHOOK_MANAGED_EXTERNALLY
            - WEBHOOK_SUBSCRIPTION_OWNERSHIP_CONFLICT
            - TEMPLATE_PASS_TYPE_LOCKED
            - PASS_ALREADY_ISSUED
            - PASS_ALREADY_VOIDED
            - PASS_NOT_ISSUED
            - PASS_ISSUING_FAILED
            - PASS_NOTIFICATION_ALREADY_SENT
            - PASS_NOTIFICATION_BROADCAST_ALREADY_DISPATCHED
            - APPLE_SIGNING_FAILED
            - APPLE_APNS_FAILED
            - GOOGLE_API_FAILED
            - GOOGLE_JWT_FAILED
            - PROVIDER_UNAVAILABLE
            - LINK_REVOKED
            - LINK_INVALID
            - TOKEN_SIGNATURE_INVALID
            - TOKEN_CLOCK_SKEW
            - RATE_LIMITED
            - TOO_MANY_REQUESTS
            - PASS_NOTIFICATION_RATE_LIMITED
            - INTERNAL_ERROR
            - SERVICE_UNAVAILABLE
            - JOB_FAILED
          description: Machine-readable error code
          example: UNAUTHORIZED
        message:
          type: string
          description: Human-readable error message
        correlationId:
          type: string
          description: Request correlation ID for debugging
        details:
          description: Additional error details
          type: object
          propertyNames:
            type: string
          additionalProperties: {}
      required:
        - errorCode
        - message
        - correlationId
      additionalProperties: false
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: plt_<secret>
      description: >-
        Passlet access token (`plt_*`) sent as `Authorization: Bearer <token>`
        or `X-API-Key`. Authorized scopes are listed per operation under
        `x-required-scopes`.

````