package Koha::Plugin::BadAPIRoute;

use Modern::Perl;

use Mojo::JSON qw( decode_json );

use base qw(Koha::Plugins::Base);

our $VERSION  = 0.01;
our $metadata = {
    name            => 'Bad API Route Plugin',
    author          => 'John Doe',
    description     => 'Test plugin for bad API route',
    date_authored   => '2018-',
    date_updated    => '2013-01-14',
    minimum_version => '17.11',
    maximum_version => undef,
    version         => $VERSION,
    my_example_tag  => 'find_me',
};

sub new {
    my ( $class, $args ) = @_;
    $args->{'metadata'} = $metadata;
    my $self = $class->SUPER::new($args);
    return $self;
}

sub api_namespace {
    return "badass";
}

sub api_routes {
    my ( $self, $args ) = @_;

    my $spec = qq{
{
  "/patrons/{patron_id}/bother_wrong": {
    "put": {
      "x-mojo-to": "Koha::Plugin::BadAPIRoute#bother",
      "operationId": "BotherPatron",
      "tags": ["patrons"],
      "parameters": [{
        "name": "patron_id",
        "in": "nowhere",
        "description": "Internal patron identifier",
        "required": true,
        "type": "integer"
      }],
      "produces": [
        "application/json"
      ],
      "responses": {
        "200": {
          "description": "A bothered patron",
          "schema": {
              "type": "object",
                "properties": {
                  "bothered": {
                    "description": "If the patron has been bothered",
                    "type": "boolean"
                  }
                }
          }
        },
        "404": {
          "description": "An error occurred",
          "schema": {
              "type": "object",
                "properties": {
                  "error": {
                    "description": "An explanation for the error",
                    "type": "string"
                  }
                }
          }
        }
      },
      "x-koha-authorization": {
        "permissions": {
          "borrowers": "1"
        }
      }
    }
  }
}
    };

    return decode_json($spec);
}

1;
