Group
Extension

Matches 19

RT-Extension-REST2 ( B/BP/BPS/RT-Extension-REST2-1.17.tar.gz, BPS, 2022; MetaCPAN )
RT-Extension-REST2/lib/RT/Extension/REST2.pm ( view source; MetaCPAN )

             "_url" : "XX_RT_URL_XX/REST/2.0/queue/1"
          }
       ]
    }

This format is JSON, which is a format for which many programming languages
provide libraries for parsing and generat
TP verb (C<POST> instead of C<GET>), a C<Content-Type>
header (to tell REST2 that your content is JSON instead of, say, XML),
and the fields for your new ticket such as Subject. Here is the curl
invoc
apped to multiple lines for readability.

    curl -X POST
         -H "Content-Type: application/json"
         -d '{ "Subject": "hello world" }'
         -H 'Authorization: token XX_TOKEN_XX'
      
RT-Extension-REST2 ( B/BP/BPS/RT-Extension-REST2-1.17.tar.gz, BPS, 2022; MetaCPAN )
RT-Extension-REST2/lib/RT/Extension/REST2/Resource/Role/RequestBodyIsJSON.pm ( view source; MetaCPAN )
ce::Role::RequestBodyIsJSON;
use strict;
use warnings;

use MooseX::Role::Parameterized;
use namespace::autoclean;

use JSON ();
use RT::Extension::REST2::Util qw( error_as_json );
use Moose::Util::Ty
header('Content-Type') =~ /^application\/json/;

        my $json = eval {
            JSON::from_json($request->content)
        };
        if ($@ or not $json) {
            my $error = $@;
        
rror_as_json($self->response, undef, "JSON parse error: $error");
            return 1;
        }
        elsif (ref $json ne $P->type) {
            error_as_json($self->response, undef, "JSON object
RT-Extension-REST2 ( B/BP/BPS/RT-Extension-REST2-1.17.tar.gz, BPS, 2022; MetaCPAN )
RT-Extension-REST2/lib/RT/Extension/REST2/Resource/RT.pm ( view source; MetaCPAN )
{ ['GET'] }

sub content_types_provided { [{ 'application/json' => 'to_json' }] }

sub to_json {
    my $self = shift;
    return JSON::to_json({
        Version => $RT::VERSION,
        Plugins => [ 
RT-Extension-REST2 ( B/BP/BPS/RT-Extension-REST2-1.17.tar.gz, BPS, 2022; MetaCPAN )
RT-Extension-REST2/lib/RT/Extension/REST2/Resource/Searches.pm ( view source; MetaCPAN )
:Resource::Collection::ProcessPOSTasGET',
    'RT::Extension::REST2::Resource::Collection::QueryByJSON';

sub dispatch_rules {
    Path::Dispatcher::Rule::Regex->new(
        regex => qr{^/searches/?$
tributes' } },
    )
}

use Encode qw( decode_utf8 );
use RT::Extension::REST2::Util qw( error_as_json );
use RT::Search::Simple;

sub allowed_methods {
    [ 'GET', 'HEAD', 'POST' ]
}

sub limit_coll
RT-Extension-REST2 ( B/BP/BPS/RT-Extension-REST2-1.17.tar.gz, BPS, 2022; MetaCPAN )
RT-Extension-REST2/lib/RT/Extension/REST2/Resource/UserGroups.pm ( view source; MetaCPAN )
Extension::REST2::Resource::Collection';
with 'RT::Extension::REST2::Resource::Role::RequestBodyIsJSON' =>
  {type => 'ARRAY'};

has 'user' => (
    is  => 'ro',
    isa => 'RT::User',
);

sub dispatc
, 'HEAD', 'DELETE', 'PUT');
    return \@ok;
}

sub content_types_accepted {[{'application/json' => 'from_json'}]}

sub delete_resource {
    my $self = shift;
    my $collection = $self->collection;
oup->DeleteMember($self->user->id);
    }
    return 1;
}

sub from_json {
    my $self   = shift;
    my $params = JSON::decode_json($self->request->content);
    my $user = $self->user;

    my $met
RT-Extension-REST2 ( B/BP/BPS/RT-Extension-REST2-1.17.tar.gz, BPS, 2022; MetaCPAN )
RT-Extension-REST2/lib/RT/Extension/REST2/Resource/Message.pm ( view source; MetaCPAN )
E::Base64;

extends 'RT::Extension::REST2::Resource';
use RT::Extension::REST2::Util qw( error_as_json update_custom_fields update_role_members fix_custom_role_ids);

sub dispatch_rules {
    Path::Di
  { [ { 'application/json' => sub {} } ] }
sub content_types_accepted    { [ { 'text/plain' => 'add_message' }, { 'text/html' => 'add_message' }, { 'application/json' => 'from_json' }, { 'multipart/fo
  my $json_str = $self->request->parameters->{JSON};
    return error_as_json(
        $self->response,
        \400, "JSON is a required field for multipart/form-data")
            unless $json_str;
RT-Extension-REST2 ( B/BP/BPS/RT-Extension-REST2-1.17.tar.gz, BPS, 2022; MetaCPAN )
RT-Extension-REST2/lib/RT/Extension/REST2/Resource/TicketsBulk.pm ( view source; MetaCPAN )
ST2::Resource::Role::RequestBodyIsJSON' =>
  { type => 'ARRAY' };

use RT::Extension::REST2::Util qw(expand_uid);
use RT::Extension::REST2::Resource::Ticket;
use JSON ();

sub dispatch_rules {
    Pat
{ 'application/json' => sub {} } ] }
sub content_types_accepted { [ { 'application/json' => 'from_json' } ] }

sub from_json {
    my $self   = shift;
    my $params = JSON::decode_json( $self->reques
     my @errors;

                    # Ported from RT::Extension::REST2::Resource::Message::from_json
                    if ( $param->{Attachments} ) {
                        foreach my $attachment
RT-Extension-REST2 ( B/BP/BPS/RT-Extension-REST2-1.17.tar.gz, BPS, 2022; MetaCPAN )
RT-Extension-REST2/lib/RT/Extension/REST2/Util.pm ( view source; MetaCPAN )
package RT::Extension::REST2::Util;
use strict;
use warnings;

use JSON ();
use Scalar::Util qw( blessed );
use List::MoreUtils 'uniq';

use Sub::Exporter -setup => {
    exports => [qw[
        looks
xpand_uid
        expand_uri
        serialize_record
        deserialize_record
        error_as_json
        record_type
        record_class
        escape_uri
        query_string
        custom_f
->debug("Received unknown value via JSON for field $field: ".ref($value));
            delete $data->{$field};
        }
    }
    return $data;
}

sub error_as_json {
    my $response = shift;
    my
RT-Extension-REST2 ( B/BP/BPS/RT-Extension-REST2-1.17.tar.gz, BPS, 2022; MetaCPAN )
RT-Extension-REST2/lib/RT/Extension/REST2/Resource/GroupMembers.pm ( view source; MetaCPAN )
Extension::REST2::Resource::Collection';
with 'RT::Extension::REST2::Resource::Role::RequestBodyIsJSON' =>
  {type => 'ARRAY'};

has 'group' => (
    is  => 'ro',
);

sub dispatch_rules {
    Path::Di
, 'HEAD', 'DELETE', 'PUT');
    return \@ok;
}

sub content_types_accepted {[{'application/json' => 'from_json'}]}

sub delete_resource {
    my $self = shift;
    my $collection = $self->collection;
eteMember($group_member->MemberId);
    }
    return 1;
}

sub from_json {
    my $self   = shift;
    my $params = JSON::decode_json($self->request->content);
    my $group = $self->group;

    my $m
RT-Extension-REST2 ( B/BP/BPS/RT-Extension-REST2-1.17.tar.gz, BPS, 2022; MetaCPAN )
RT-Extension-REST2/lib/RT/Extension/REST2/Resource/Tickets.pm ( view source; MetaCPAN )
:Tickets' } },
    )
}

use Encode qw( decode_utf8 );
use RT::Extension::REST2::Util qw( error_as_json expand_uid );
use RT::Search::Simple;

has 'query' => (
    is          => 'ro',
    isa         
elf = shift;
    my ($ok, $msg) = $self->collection->FromSQL( $self->query );
    return error_as_json( $self->response, 0, $msg ) unless $ok;
    super();
    return 1;
};

sub expand_field {
    my 
RT-Extension-REST2 ( B/BP/BPS/RT-Extension-REST2-1.17.tar.gz, BPS, 2022; MetaCPAN )
RT-Extension-REST2/lib/RT/Extension/REST2/Resource/Collection.pm ( view source; MetaCPAN )
/json' => 'to_json' },
] }

sub to_json {
    my $self = shift;
    my $status = $self->search;
    return $status if is_status_code($status);
    return \400 unless $status;
    return JSON::to_json(
RT-Extension-REST2 ( B/BP/BPS/RT-Extension-REST2-1.17.tar.gz, BPS, 2022; MetaCPAN )
RT-Extension-REST2/lib/RT/Extension/REST2/Resource/Collection/ProcessPOSTasGET.pm ( view source; MetaCPAN )
s_code );

requires 'to_json';

sub process_post {
    my $self = shift;
    my $json = $self->to_json;
    unless (is_status_code($json)) {
        $self->response->body( $json );
        return 1;
 
   } else {
        return $json;
    }
}

1;
RT-Extension-REST2 ( B/BP/BPS/RT-Extension-REST2-1.17.tar.gz, BPS, 2022; MetaCPAN )
RT-Extension-REST2/lib/RT/Extension/REST2/Resource/Collection/QueryByJSON.pm ( view source; MetaCPAN )
ackage RT::Extension::REST2::Resource::Collection::QueryByJSON;
use strict;
use warnings;

use Moose::Role;
use namespace::autoclean;

use JSON ();

with (
    'RT::Extension::REST2::Resource::Collect
ion::ProcessPOSTasGET',
    'RT::Extension::REST2::Resource::Role::RequestBodyIsJSON'
         => { type => 'ARRAY' },
);

requires 'collection';

has 'query' => (
    is          => 'ro',
    isa    
f->request->param('query')
                : $self->request->content;
    return $content ? JSON::decode_json($content) : [];
}

sub allowed_methods {
    [ 'GET', 'POST' ]
}

sub searchable_fields {
RT-Extension-REST2 ( B/BP/BPS/RT-Extension-REST2-1.17.tar.gz, BPS, 2022; MetaCPAN )
RT-Extension-REST2/lib/RT/Extension/REST2/Resource/Record/Hypermedia.pm ( view source; MetaCPAN )
::autoclean;
use RT::Extension::REST2::Util qw(expand_uid expand_uri custom_fields_for);
use JSON qw(to_json);

sub hypermedia_links {
    my $self = shift;
    return [ $self->_self_link, $self->_rtl
RT-Extension-REST2 ( B/BP/BPS/RT-Extension-REST2-1.17.tar.gz, BPS, 2022; MetaCPAN )
RT-Extension-REST2/lib/RT/Extension/REST2/Resource/Record/Writable.pm ( view source; MetaCPAN )
use warnings;

use Moose::Role;
use namespace::autoclean;
use JSON ();
use RT::Extension::REST2::Util qw( deserialize_record error_as_json expand_uid update_custom_fields update_role_members fix_custo
role_ids );
use List::MoreUtils 'uniq';

with 'RT::Extension::REST2::Resource::Role::RequestBodyIsJSON'
     => { type => 'HASH' };

requires 'record';
requires 'record_class';

sub post_is_create    
n/json' => 'from_json'}, { 'multipart/form-data' => 'from_multipart' } ] }

sub from_multipart {
    my $self = shift;
    my $json_str = $self->request->parameters->{JSON};
    return error_as_json(
RT-Extension-REST2 ( B/BP/BPS/RT-Extension-REST2-1.17.tar.gz, BPS, 2022; MetaCPAN )
RT-Extension-REST2/lib/RT/Extension/REST2/Resource/Record/Readable.pm ( view source; MetaCPAN )
urrent_user';
requires 'base_uri';

with 'RT::Extension::REST2::Resource::Record::WithETag';

use JSON ();
use RT::Extension::REST2::Util qw( serialize_record );
use Scalar::Util qw( blessed );

sub s
   {   'utf-8'   }

sub content_types_provided { [
    { 'application/json' => 'to_json' },
] }

sub to_json {
    my $self = shift;
    return JSON::to_json($self->serialize, { pretty => 1 });
}

1;
RT-Extension-REST2 ( B/BP/BPS/RT-Extension-REST2-1.17.tar.gz, BPS, 2022; MetaCPAN )
RT-Extension-REST2/lib/RT/Extension/REST2/Resource/ObjectCustomFieldValue.pm ( view source; MetaCPAN )
;
use warnings;

use Moose;
use namespace::autoclean;
use RT::Extension::REST2::Util qw( error_as_json );

extends 'RT::Extension::REST2::Resource::Record';
with 'RT::Extension::REST2::Resource::Recor
   unless ($self->record->CustomFieldObj->Type =~ /^(?:Image|Binary)$/) {
        return error_as_json(
            $self->response,
            \400, "Only Image and Binary CustomFields can be downlo
RT-Extension-REST2 ( B/BP/BPS/RT-Extension-REST2-1.17.tar.gz, BPS, 2022; MetaCPAN )
RT-Extension-REST2/lib/RT/Extension/REST2/Middleware/ErrorAsJSON.pm ( view source; MetaCPAN )
eware::ErrorAsJSON;

use strict;
use warnings;

use base 'Plack::Middleware';

use Plack::Util;
use HTTP::Status qw(is_error status_message);
use RT::Extension::REST2::Util 'error_as_json';

sub call 
ader_get($headers, 'content-type');
        my $is_json = $content_type && $content_type =~ m/json/i;
        if ( is_error($status_code) && !$is_json ) {
            my $plack_res = Plack::Response->
RT-Extension-REST2 ( B/BP/BPS/RT-Extension-REST2-1.17.tar.gz, BPS, 2022; MetaCPAN )
RT-Extension-REST2/lib/RT/Extension/REST2/Resource.pm ( view source; MetaCPAN )
CurrentUser->new;
}

# Used in Serialize to allow additional fields to be selected ala JSON API on:
# http://jsonapi.org/examples/
sub expand_field {
    my $self  = shift;
    my $item  = shift;
    

Powered by Groonga
Maintained by Kenichi Ishigaki <ishigaki@cpan.org>. If you find anything, submit it on GitHub.