asyncapi: 2.0.0
info:
  title: eBay Notifications
  version: 1.0.0
  description: This contract defines eBay notification for AUTHORIZATION_REVOCATION
channels:
  AUTHORIZATION_REVOCATION:
    subscribe:
      message:
        $ref: '#/components/messages/message'
      bindings:
        http:
          type: request
          method: POST
          headers:
            type: object
            properties:
              Content-Type:
                type: string
                enum: ['application/json']
components:
  messages:
    message:
      headers:
        type: object
        properties:
          X-EBAY-SIGNATURE:
            description: ECC message signature
            type: string
      payload:
        type: object
        properties:
          metadata:
            $ref: '#/components/schemas/MetaData'
          notification:
            $ref: '#/components/schemas/Notification'

  schemas:
    MetaData:
      type: object
      properties:
        topic:
          type: string
          description: 'Topic subscribed to.'
        schemaVersion:
          type: string
          description: 'The schema for this topic.'
        deprecated:
          type: boolean
          description: 'If this is a deprecated schema or topic.'
          default: 'false'

    Notification:
      type: object
      properties:
        notificationId:
          type: string
          description: 'The notification Id.'
        eventDate:
          type: string
          description: 'The event date associated with this notification in UTC.'
        publishDate:
          type: string
          description: 'The message publish date in UTC.'
        publishAttemptCount:
          type: integer
          description: 'The number of attempts made to publish this message.'
        data:
         $ref: '#/components/schemas/AuthorizationRevocationData'


    AuthorizationRevocationData:
      type: object
      description: 'The Authorization Revocation payload.'
      properties:
        username:
          type: string
          description: 'The username for the user. Effective September 26, 2025, select developers will no longer receive username data for U.S. users through this field. Instead, an immutable user ID will be returned in its place.'
        userId:
          type: string
          description: 'The immutable public userId for the user'
        eiasToken:
          type: string
          description: 'The legacy eiasToken specific to the user'
        revokeReason:
          type: string
          enum:
            - REVOKED_BY_APP
            - REVOKED_BY_USER
            - REVOKED_BY_EBAY
            - PASSWORD_CHANGE
          description: 'The reason for authorization revocation'
        revocationDate:
          type: string
          description: 'Date and time when the autorization was revoked'
