# Schema for the configuration files of the REST module.
rest.settings:
  type: config_object
  label: 'REST settings'
  mapping:
    link_domain:
      type: string
      label: 'Domain of the relation'
    bc_entity_resource_permissions:
      type: boolean
      label: 'Whether the pre Drupal 8.2.x behavior of having permissions for EntityResource is enabled or not.'

# Method-level granularity of REST resource configuration.
rest_resource.method:
  type: mapping
  mapping:
    GET:
      type: rest_request
      label: 'GET method settings'
    POST:
      type: rest_request
      label: 'POST method settings'
    PATCH:
      type: rest_request
      label: 'PATCH method settings'
    DELETE:
      type: rest_request
      label: 'DELETE method settings'

# Resource-level granularity of REST resource configuration.
rest_resource.resource:
  type: mapping
  mapping:
    methods:
      type: sequence
      label: 'Supported methods'
      sequence:
        type: string
        label: 'HTTP method'
    formats:
      type: sequence
      label: 'Supported formats'
      sequence:
        type: string
        label: 'Format'
    authentication:
      type: sequence
      label: 'Supported authentication providers'
      sequence:
        type: string
        label: 'Authentication provider'

rest_request:
  type: mapping
  mapping:
    supported_formats:
      type: sequence
      label: 'Supported format'
      sequence:
        type: string
        label: 'Format'
    supported_auth:
      type: sequence
      label: 'Supported authentication'
      sequence:
        type: string
        label: 'Authentication'

rest.resource.*:
  type: config_entity
  label: 'REST resource config'
  mapping:
    id:
      type: string
      label: 'REST resource config ID'
    plugin_id:
      type: string
      label: 'REST resource plugin id'
    granularity:
      type: string
      label: 'REST resource configuration granularity'
    configuration:
      type: rest_resource.[%parent.granularity]
      label: 'REST resource configuration'
