openapi: 3.1.0
info:
  title: Waylay Storage
  description: '

    Manage storage buckets and subscriptions.

    '
  version: 0.9.0
paths:
  /storage/v1/bucket:
    get:
      tags:
      - Bucket
      summary: List Buckets
      description: List authorized buckets.
      operationId: list_bucket
      parameters:
      - name: store
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Store
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BucketListing'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security: &id001
      - waylayApiKeySecret: []
  /storage/v1/bucket/{bucket_name}:
    get:
      tags:
      - Bucket
      summary: Get Bucket
      description: Get a descriptive representation of a bucket.
      operationId: get_bucket
      parameters:
      - name: bucket_name
        in: path
        required: true
        schema:
          type: string
          title: Bucket Name
      - name: store
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Store
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Bucket'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security: *id001
  /storage/v1/bucket/{bucket_name}/{object_path}:
    get:
      tags:
      - Object
      summary: List Objects
      description: "List, inspect or sign objects.\n\n* list the objects of a bucket\
        \ with {object_path} prefix\n    * (`recursive=true`) list content recursively\n\
        \    * (`all=true`) include hidden objects\n* (`stat=true`) get the meta of\
        \ the object at {object_path}\n* (`sign=[GET,PUT,POST]`) fetch presigned urls\
        \ to operate on {object_path}\n    * (`all=true`) allow link creation for\
        \ hidden objects"
      operationId: list_object
      parameters:
      - name: bucket_name
        in: path
        required: true
        schema:
          type: string
          title: Bucket Name
      - name: object_path
        in: path
        required: true
        schema:
          type: string
          title: Object Path
      - name: stat
        in: query
        required: false
        schema:
          type: boolean
          default: false
          title: Stat
      - name: recursive
        in: query
        required: false
        schema:
          anyOf:
          - type: boolean
          - type: 'null'
          title: Recursive
      - name: all
        in: query
        required: false
        schema:
          anyOf:
          - type: boolean
          - type: 'null'
          title: All
      - name: start_after
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Start After
      - name: fetch_content_type
        in: query
        required: false
        schema:
          type: boolean
          description: 'If true, fetch content type for each object when not already
            available from the listing (e.g. on s3 stores).

            This is less efficient but may be necessary for certain use cases.'
          default: false
          title: Fetch Content Type
        description: 'If true, fetch content type for each object when not already
          available from the listing (e.g. on s3 stores).

          This is less efficient but may be necessary for certain use cases.'
      - name: get_as_attachment
        in: query
        required: false
        schema:
          type: boolean
          default: true
          title: Get As Attachment
      - name: sign
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Sign
      - name: max_keys
        in: query
        required: false
        schema:
          anyOf:
          - type: integer
          - type: 'null'
          title: Max Keys
      - name: store
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Store
      - name: expiry_days
        in: query
        required: false
        schema:
          anyOf:
          - type: integer
          - type: 'null'
          title: Expiry Days
      - name: expiry_hours
        in: query
        required: false
        schema:
          anyOf:
          - type: integer
          - type: 'null'
          title: Expiry Hours
      - name: expiry_seconds
        in: query
        required: false
        schema:
          anyOf:
          - type: integer
          - type: 'null'
          title: Expiry Seconds
      - name: content_length_min
        in: query
        required: false
        schema:
          type: integer
          default: 0
          title: Content Length Min
      - name: content_length_max
        in: query
        required: false
        schema:
          anyOf:
          - type: integer
          - type: 'null'
          title: Content Length Max
      - name: content_type
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Content Type
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                anyOf:
                - $ref: '#/components/schemas/BucketObjectListing'
                - $ref: '#/components/schemas/BucketObject'
                - $ref: '#/components/schemas/HALEntity'
                title: Response List Object
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security: *id001
    delete:
      tags:
      - Object
      summary: Remove Object Or Folder
      description: 'Remove the object or folder at {object_path}.


        An {object_path} ending in a `/` requests folder deletion of an empty

        folder unless:

        * (`recursive=true`) forces recursive deletion of a (non-empty) folder.

        * (`all=true`) forces recursive deletion, including hidden objects.'
      operationId: remove_object
      parameters:
      - name: bucket_name
        in: path
        required: true
        schema:
          type: string
          title: Bucket Name
      - name: object_path
        in: path
        required: true
        schema:
          type: string
          title: Object Path
      - name: recursive
        in: query
        required: false
        schema:
          anyOf:
          - type: boolean
          - type: 'null'
          title: Recursive
      - name: all
        in: query
        required: false
        schema:
          anyOf:
          - type: boolean
          - type: 'null'
          title: All
      - name: start_after
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Start After
      - name: max_keys
        in: query
        required: false
        schema:
          anyOf:
          - type: integer
          - type: 'null'
          title: Max Keys
      - name: store
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Store
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HALEntity'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security: *id001
  /storage/v1/bucket/{bucket_name}/{object_path}/:
    put:
      tags:
      - Object
      summary: Create Folder
      description: "Create a (virtual) folder.\n\n* (`all=true`) force creation of\
        \ a hidden folder,\n  having a path element that starts with a `.`."
      operationId: createFolder_object
      parameters:
      - name: bucket_name
        in: path
        required: true
        schema:
          type: string
          title: Bucket Name
      - name: object_path
        in: path
        required: true
        schema:
          type: string
          title: Object Path
      - name: all
        in: query
        required: false
        schema:
          type: boolean
          default: false
          title: All
      - name: store
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Store
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BucketObject'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security: *id001
  /storage/v1/bucket/{bucket_name}/{target_path}:
    put:
      tags:
      - Object
      summary: Copy Or Move Object
      description: Copy or move object to new location.
      operationId: copyOrMove_object
      parameters:
      - name: bucket_name
        in: path
        required: true
        schema:
          type: string
          title: Bucket Name
      - name: target_path
        in: path
        required: true
        schema:
          type: string
          title: Target Path
      - name: source
        in: query
        required: true
        schema:
          type: string
          title: Source
      - name: move
        in: query
        required: false
        schema:
          type: boolean
          default: false
          title: Move
      - name: store
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Store
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HALEntity'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security: *id001
  /storage/v1/subscription:
    get:
      tags:
      - Subscription
      summary: Query All Subscriptions
      description: List notification subscriptions per bucket that have notification
        enabled.
      operationId: list_subscription
      parameters:
      - name: store
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Store
      - name: prefix
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Prefix
      - name: suffix
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Suffix
      - name: event_type
        in: query
        required: false
        schema:
          anyOf:
          - $ref: '#/components/schemas/EVENT_TYPE'
          - type: 'null'
          title: Event Type
      - name: channel_type
        in: query
        required: false
        schema:
          anyOf:
          - $ref: '#/components/schemas/CHANNEL_TYPE'
          - type: 'null'
          title: Channel Type
      - name: channel_id
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Channel Id
      - name: max_keys
        in: query
        required: false
        schema:
          anyOf:
          - type: integer
          - type: 'null'
          title: Max Keys
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SubscriptionsListing'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security: *id001
  /storage/v1/subscription/{bucket_name}:
    get:
      tags:
      - Subscription
      summary: Query Bucket Subscriptions
      description: List notification subscriptions for given bucket.
      operationId: query_subscription
      parameters:
      - name: bucket_name
        in: path
        required: true
        schema:
          type: string
          title: Bucket Name
      - name: start_after
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Start After
      - name: store
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Store
      - name: prefix
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Prefix
      - name: suffix
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Suffix
      - name: event_type
        in: query
        required: false
        schema:
          anyOf:
          - $ref: '#/components/schemas/EVENT_TYPE'
          - type: 'null'
          title: Event Type
      - name: channel_type
        in: query
        required: false
        schema:
          anyOf:
          - $ref: '#/components/schemas/CHANNEL_TYPE'
          - type: 'null'
          title: Channel Type
      - name: channel_id
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Channel Id
      - name: max_keys
        in: query
        required: false
        schema:
          anyOf:
          - type: integer
          - type: 'null'
          title: Max Keys
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Subscriptions'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security: *id001
    delete:
      tags:
      - Subscription
      summary: Delete All Bucket Subscriptions
      description: 'Remove all notification subscriptions on a bucket

        that match a given event and/or channel filter.


        > it can take a few minutes before this change

        > is fully effective on the forwarding of change events'
      operationId: deleteBy_subscription
      parameters:
      - name: bucket_name
        in: path
        required: true
        schema:
          type: string
          title: Bucket Name
      - name: start_after
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Start After
      - name: prefix
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Prefix
      - name: suffix
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Suffix
      - name: event_type
        in: query
        required: false
        schema:
          anyOf:
          - $ref: '#/components/schemas/EVENT_TYPE'
          - type: 'null'
          title: Event Type
      - name: channel_type
        in: query
        required: false
        schema:
          anyOf:
          - $ref: '#/components/schemas/CHANNEL_TYPE'
          - type: 'null'
          title: Channel Type
      - name: channel_id
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Channel Id
      - name: store
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Store
      - name: max_keys
        in: query
        required: false
        schema:
          anyOf:
          - type: integer
          - type: 'null'
          title: Max Keys
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HALEntity'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security: *id001
    post:
      tags:
      - Subscription
      summary: Create Bucket Subscription
      description: 'Create a new notification subscription...


        on a bucket with a given or generated id.


        > it can take a few minutes before this change

        > is fully effective on the forwarding of change events'
      operationId: create_subscription
      parameters:
      - name: bucket_name
        in: path
        required: true
        schema:
          type: string
          title: Bucket Name
      - name: store
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Store
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SubscriptionConfig-Input'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SubscriptionConfig-Output'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security: *id001
  /storage/v1/subscription/{bucket_name}/{subscription_id}:
    get:
      tags:
      - Subscription
      summary: Get Bucket Subscription
      description: Fetch a notification subscription.
      operationId: get_subscription
      parameters:
      - name: bucket_name
        in: path
        required: true
        schema:
          type: string
          title: Bucket Name
      - name: subscription_id
        in: path
        required: true
        schema:
          type: string
          title: Subscription Id
      - name: store
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Store
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SubscriptionConfig-Output'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security: *id001
    delete:
      tags:
      - Subscription
      summary: Delete Bucket Subscription
      description: Remove a notification subscription.
      operationId: remove_subscription
      parameters:
      - name: bucket_name
        in: path
        required: true
        schema:
          type: string
          title: Bucket Name
      - name: subscription_id
        in: path
        required: true
        schema:
          type: string
          title: Subscription Id
      - name: store
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Store
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HALEntity'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security: *id001
    put:
      tags:
      - Subscription
      summary: Replace Bucket Subscription
      description: 'Create or replace a notification subscription on a bucket with
        a given id.


        > it can take a few minutes before this change

        > is fully effective on the forwarding of change events'
      operationId: replace_subscription
      parameters:
      - name: bucket_name
        in: path
        required: true
        schema:
          type: string
          title: Bucket Name
      - name: subscription_id
        in: path
        required: true
        schema:
          type: string
          title: Subscription Id
      - name: store
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Store
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SubscriptionConfig-Input'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SubscriptionConfig-Output'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security: *id001
  /storage/v1/:
    get:
      tags:
      - About
      summary: Version
      description: Get the application version.
      operationId: get_about
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: string
                title: Response Get
      security: *id001
  /storage/v1/status:
    get:
      tags:
      - About
      summary: Status
      description: Validate consistency of buckets and notification queues for this
        tenant.
      operationId: status_about
      parameters:
      - name: store
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Store
      - name: include_buckets
        in: query
        required: false
        schema:
          type: boolean
          default: true
          title: Include Buckets
      - name: include_queues
        in: query
        required: false
        schema:
          type: boolean
          default: true
          title: Include Queues
      - name: include_disk_usage
        in: query
        required: false
        schema:
          type: boolean
          default: false
          title: Include Disk Usage
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TenantStatusReport'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security: *id001
components:
  schemas:
    AUTH:
      type: string
      enum:
      - DEFAULT
      - NONE
      - API_KEY
      - TOKEN
      - WAYLAY_APP
      - WAYLAY_TOKEN
      - WEBSCRIPT
      title: AUTH
      description: Supported authentication methods for notifications.
    AuthenticationConfig:
      properties:
        method:
          $ref: '#/components/schemas/AUTH'
          default: DEFAULT
        key:
          anyOf:
          - type: string
          - type: 'null'
          title: Key
        secret:
          anyOf:
          - type: string
          - type: 'null'
          title: Secret
      type: object
      title: AuthenticationConfig
      description: Authentication configuration when forwarding an event to a channel.
    BUCKET_CREATION_STATUS:
      type: string
      enum:
      - unknown
      - missing
      - invalid
      - up_to_date
      title: BUCKET_CREATION_STATUS
      description: Possbile bucket creation status codes.
    BUCKET_POLICY_STATUS:
      type: string
      enum:
      - unknown
      - missing
      - out_dated
      - up_to_date
      title: BUCKET_POLICY_STATUS
      description: Possible bucket policy status codes.
    Bucket:
      properties:
        _links:
          additionalProperties:
            anyOf:
            - $ref: '#/components/schemas/HALLink'
            - items:
                $ref: '#/components/schemas/HALLink'
              type: array
          type: object
          title: Links
        alias:
          type: string
          title: Alias
        name:
          type: string
          title: Name
        store:
          $ref: '#/components/schemas/Store'
        creation_date:
          type: string
          format: date-time
          title: Creation Date
        size:
          type: integer
          title: Size
      type: object
      required:
      - name
      title: Bucket
      description: Representation of a storage bucket.
    BucketConfiguration:
      properties:
        _links:
          additionalProperties:
            anyOf:
            - $ref: '#/components/schemas/HALLink'
            - items:
                $ref: '#/components/schemas/HALLink'
              type: array
          type: object
          title: Links
        alias:
          type: string
          title: Alias
        name:
          type: string
          title: Name
        store:
          $ref: '#/components/schemas/Store'
        creation_date:
          type: string
          format: date-time
          title: Creation Date
        size:
          type: integer
          title: Size
        status:
          $ref: '#/components/schemas/BUCKET_CREATION_STATUS'
          default: unknown
        public_policy_json:
          $ref: '#/components/schemas/S3PolicyDef'
        public_policy_type:
          type: string
          title: Public Policy Type
        error:
          type: string
          title: Error
      type: object
      required:
      - name
      title: BucketConfiguration
      description: Representation of a bucket configuration.
    BucketListing:
      properties:
        _links:
          additionalProperties:
            anyOf:
            - $ref: '#/components/schemas/HALLink'
            - items:
                $ref: '#/components/schemas/HALLink'
              type: array
          type: object
          title: Links
        buckets:
          items:
            $ref: '#/components/schemas/Bucket'
          type: array
          title: Buckets
      type: object
      required:
      - buckets
      title: BucketListing
      description: List of Bucket representations.
    BucketObject:
      properties:
        _links:
          additionalProperties:
            anyOf:
            - $ref: '#/components/schemas/HALLink'
            - items:
                $ref: '#/components/schemas/HALLink'
              type: array
          type: object
          title: Links
        bucket:
          $ref: '#/components/schemas/Bucket'
        name:
          type: string
          title: Name
        last_modified:
          type: string
          format: date-time
          title: Last Modified
        etag:
          type: string
          title: Etag
        size:
          type: integer
          title: Size
        content_type:
          type: string
          title: Content Type
        is_dir:
          type: boolean
          title: Is Dir
          default: false
        storage_class:
          type: string
          title: Storage Class
        owner_id:
          type: string
          title: Owner Id
        owner_name:
          type: string
          title: Owner Name
      type: object
      required:
      - bucket
      - name
      title: BucketObject
      description: Representation of a storage object.
    BucketObjectListing:
      properties:
        _links:
          additionalProperties:
            anyOf:
            - $ref: '#/components/schemas/HALLink'
            - items:
                $ref: '#/components/schemas/HALLink'
              type: array
          type: object
          title: Links
        objects:
          items:
            $ref: '#/components/schemas/BucketObject'
          type: array
          title: Objects
      type: object
      required:
      - objects
      title: BucketObjectListing
      description: List of storage object representations.
    CHANNEL_TYPE:
      type: string
      enum:
      - webhook
      - webscript
      - system
      title: CHANNEL_TYPE
      description: Supported notification channel types.
    EVENT_TYPE:
      type: string
      enum:
      - delete
      - put
      - get
      title: EVENT_TYPE
      description: Supported notification change event types.
    EventFilter:
      properties:
        prefix:
          anyOf:
          - type: string
          - type: 'null'
          title: Prefix
        suffix:
          anyOf:
          - type: string
          - type: 'null'
          title: Suffix
        events:
          items:
            $ref: '#/components/schemas/EVENT_TYPE'
          type: array
          uniqueItems: true
          title: Events
          default:
          - put
        description:
          anyOf:
          - type: string
          - type: 'null'
          title: Description
        queue:
          anyOf:
          - type: string
          - type: 'null'
          title: Queue
      type: object
      title: EventFilter
      description: 'Filter on change events in a storage backend.


        The `prefix` and `suffix` properties are conditions on the object path

        (not including the bucket name).

        When not specified, all paths in the bucket will selected.


        The `events` property can contain `put` and/or `delete` values, corresponding

        to create/update and deletion events.

        When not specified, only the create/update events are filtered.'
    Expiry:
      properties:
        seconds:
          anyOf:
          - type: integer
          - type: 'null'
          title: Seconds
        hours:
          anyOf:
          - type: integer
          - type: 'null'
          title: Hours
        days:
          anyOf:
          - type: integer
          - type: 'null'
          title: Days
      type: object
      title: Expiry
      description: Input model for expiry parameters.
    HALEntity:
      properties:
        _links:
          additionalProperties:
            anyOf:
            - $ref: '#/components/schemas/HALLink'
            - items:
                $ref: '#/components/schemas/HALLink'
              type: array
          type: object
          title: Links
      type: object
      title: HALEntity
      description: Output model representing a collection of HAL links.
    HALLink:
      properties:
        href:
          type: string
          title: Href
        method:
          anyOf:
          - type: string
          - type: 'null'
          title: Method
        form_data:
          anyOf:
          - additionalProperties: true
            type: object
          - type: 'null'
          title: Form Data
        headers:
          anyOf:
          - additionalProperties: true
            type: object
          - type: 'null'
          title: Headers
      type: object
      required:
      - href
      title: HALLink
      description: Represents a HAL link.
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    HTTP_METHOD:
      type: string
      enum:
      - GET
      - PUT
      - POST
      title: HTTP_METHOD
      description: Supported notification methods.
    NotificationQueueStatus:
      properties:
        status:
          $ref: '#/components/schemas/QUEUE_SETUP_STATUS'
        name:
          type: string
          title: Name
        method:
          type: string
          title: Method
        configured_parameters:
          additionalProperties: true
          type: object
          title: Configured Parameters
        actual_parameters:
          additionalProperties: true
          type: object
          title: Actual Parameters
        error:
          type: string
          title: Error
      type: object
      required:
      - status
      - name
      - method
      title: NotificationQueueStatus
      description: Response model for the notification queue configuration.
    NotificationQueueStatusReport:
      properties:
        store:
          type: string
          title: Store
        notification_queues:
          items:
            $ref: '#/components/schemas/NotificationQueueStatus'
          type: array
          title: Notification Queues
        messages:
          items:
            additionalProperties: true
            type: object
          type: array
          title: Messages
      type: object
      required:
      - store
      - notification_queues
      title: NotificationQueueStatusReport
      description: Response model for a notification queue status report.
    PayloadConfig:
      properties:
        signed_links:
          items:
            $ref: '#/components/schemas/SIGN'
          type: array
          title: Signed Links
        reference:
          anyOf:
          - {}
          - type: 'null'
          title: Reference
      type: object
      title: PayloadConfig
      description: Configuration object that specifies the expected notification payload.
    QUEUE_SETUP_STATUS:
      type: string
      enum:
      - unknown
      - missing
      - invalid
      - not_specified
      - up_to_date
      title: QUEUE_SETUP_STATUS
      description: Possbile queue setup status codes.
    S3PolicyDef:
      properties:
        Statement:
          items:
            $ref: '#/components/schemas/S3PolicyStatement'
          type: array
          title: Statement
        Version:
          type: string
          title: Version
      additionalProperties: true
      type: object
      title: S3PolicyDef
      description: AWS S3 Policy definition.
    S3PolicyStatement:
      properties:
        Resource:
          anyOf:
          - type: string
          - items:
              type: string
            type: array
          title: Resource
      additionalProperties: true
      type: object
      title: S3PolicyStatement
      description: AWS S3 Policy definition statement.
    SIGN:
      type: string
      enum:
      - GET
      - PUT
      - POST
      title: SIGN
      description: Supported `sign` url parameter values.
    STORE_TYPE:
      type: string
      enum:
      - gs
      - s3
      - azure
      - zenko
      title: STORE_TYPE
      description: Supported backend store types.
    Store:
      properties:
        _links:
          additionalProperties:
            anyOf:
            - $ref: '#/components/schemas/HALLink'
            - items:
                $ref: '#/components/schemas/HALLink'
              type: array
          type: object
          title: Links
        type:
          $ref: '#/components/schemas/STORE_TYPE'
        name:
          type: string
          title: Name
        url:
          type: string
          title: Url
      type: object
      required:
      - type
      - name
      - url
      title: Store
      description: Representation of a backend store.
    SubscriptionConfig-Input:
      properties:
        _links:
          additionalProperties:
            anyOf:
            - $ref: '#/components/schemas/HALLink'
            - items:
                $ref: '#/components/schemas/HALLink'
              type: array
          type: object
          title: Links
        id:
          type: string
          title: Id
        title:
          type: string
          title: Title
        description:
          type: string
          title: Description
        channel:
          anyOf:
          - $ref: '#/components/schemas/WebScriptChannelConfig-Input'
          - $ref: '#/components/schemas/SystemChannelConfig-Input'
          title: Channel
        filters:
          items:
            $ref: '#/components/schemas/EventFilter'
          type: array
          title: Filters
      type: object
      required:
      - channel
      - filters
      title: SubscriptionConfig
      description: Specification of a notification subscription that forwards to a
        given channel.
    SubscriptionConfig-Output:
      properties:
        _links:
          additionalProperties:
            anyOf:
            - $ref: '#/components/schemas/HALLink'
            - items:
                $ref: '#/components/schemas/HALLink'
              type: array
          type: object
          title: Links
        id:
          type: string
          title: Id
        title:
          type: string
          title: Title
        description:
          type: string
          title: Description
        channel:
          anyOf:
          - $ref: '#/components/schemas/WebScriptChannelConfig-Output'
          - $ref: '#/components/schemas/SystemChannelConfig-Output'
          title: Channel
        filters:
          items:
            $ref: '#/components/schemas/EventFilter'
          type: array
          title: Filters
      type: object
      required:
      - channel
      - filters
      title: SubscriptionConfig
      description: Specification of a notification subscription that forwards to a
        given channel.
    Subscriptions:
      properties:
        _links:
          additionalProperties:
            anyOf:
            - $ref: '#/components/schemas/HALLink'
            - items:
                $ref: '#/components/schemas/HALLink'
              type: array
          type: object
          title: Links
        bucket:
          $ref: '#/components/schemas/Bucket'
        subscriptions:
          items:
            $ref: '#/components/schemas/SubscriptionConfig-Output'
          type: array
          title: Subscriptions
        warnings:
          items:
            additionalProperties: true
            type: object
          type: array
          title: Warnings
      type: object
      required:
      - bucket
      - subscriptions
      title: Subscriptions
      description: Listing object for subscriptions.
    SubscriptionsListing:
      properties:
        _links:
          additionalProperties:
            anyOf:
            - $ref: '#/components/schemas/HALLink'
            - items:
                $ref: '#/components/schemas/HALLink'
              type: array
          type: object
          title: Links
        buckets:
          items:
            $ref: '#/components/schemas/Bucket'
          type: array
          title: Buckets
      type: object
      required:
      - buckets
      title: SubscriptionsListing
      description: List of buckets that support subscriptions.
    SystemChannelConfig-Input:
      properties:
        type:
          type: string
          const: system
          title: Type
          default: system
        description:
          anyOf:
          - type: string
          - type: 'null'
          title: Description
        payload:
          $ref: '#/components/schemas/PayloadConfig'
        authentication:
          $ref: '#/components/schemas/AuthenticationConfig'
        expiry:
          $ref: '#/components/schemas/Expiry'
      type: object
      title: SystemChannelConfig
      description: 'Channel configuration for functionality that is fixed by the platform.


        This cannot be selected by the end user.'
    SystemChannelConfig-Output:
      properties:
        type:
          type: string
          const: system
          title: Type
          default: system
        description:
          anyOf:
          - type: string
          - type: 'null'
          title: Description
        payload:
          $ref: '#/components/schemas/PayloadConfig'
        authentication:
          $ref: '#/components/schemas/AuthenticationConfig'
        expiry:
          $ref: '#/components/schemas/Expiry'
      type: object
      title: SystemChannelConfig
      description: 'Channel configuration for functionality that is fixed by the platform.


        This cannot be selected by the end user.'
    TenantStatusReport:
      properties:
        tenant:
          type: string
          title: Tenant
        buckets:
          items:
            $ref: '#/components/schemas/BucketConfiguration'
          type: array
          title: Buckets
        queues:
          items:
            $ref: '#/components/schemas/NotificationQueueStatusReport'
          type: array
          title: Queues
        total_size:
          type: integer
          title: Total Size
        bucket_status:
          $ref: '#/components/schemas/BUCKET_CREATION_STATUS'
        policy_status:
          $ref: '#/components/schemas/BUCKET_POLICY_STATUS'
        queue_status:
          $ref: '#/components/schemas/QUEUE_SETUP_STATUS'
      type: object
      required:
      - tenant
      title: TenantStatusReport
      description: Response model for a tenant status report.
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
            - type: string
            - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
      type: object
      required:
      - loc
      - msg
      - type
      title: ValidationError
    WebScriptChannelConfig-Input:
      properties:
        type:
          type: string
          const: webscript
          title: Type
          default: webscript
        description:
          anyOf:
          - type: string
          - type: 'null'
          title: Description
        payload:
          $ref: '#/components/schemas/PayloadConfig'
        authentication:
          $ref: '#/components/schemas/AuthenticationConfig'
        expiry:
          $ref: '#/components/schemas/Expiry'
        name:
          type: string
          title: Name
        version:
          anyOf:
          - type: string
          - type: 'null'
          title: Version
        method:
          $ref: '#/components/schemas/HTTP_METHOD'
          default: POST
      type: object
      required:
      - name
      title: WebScriptChannelConfig
      description: Channel configuration for invoking a waylay webscript.
    WebScriptChannelConfig-Output:
      properties:
        type:
          type: string
          const: webscript
          title: Type
          default: webscript
        description:
          anyOf:
          - type: string
          - type: 'null'
          title: Description
        payload:
          $ref: '#/components/schemas/PayloadConfig'
        authentication:
          $ref: '#/components/schemas/AuthenticationConfig'
        expiry:
          $ref: '#/components/schemas/Expiry'
        name:
          type: string
          title: Name
        version:
          anyOf:
          - type: string
          - type: 'null'
          title: Version
        method:
          $ref: '#/components/schemas/HTTP_METHOD'
          default: POST
      type: object
      required:
      - name
      title: WebScriptChannelConfig
      description: Channel configuration for invoking a waylay webscript.
  securitySchemes:
    waylayApiKeySecret:
      type: http
      description: Waylay apiKey/apiSecret basic authentication. All endpoints support
        also Waylay JWT Bearer authentication.
      scheme: basic
tags:
- name: Bucket
  description: User operations on the buckets of the mapped object stores.
- name: Object
  description: User operations on bucket objects.
- name: Subscription
  description: User operations on change notification subscriptions.
- name: About
  description: Service version and status.
servers:
- url: https://api.waylay.io
  description: Waylay enterprise gateway
