You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ngcp-panel/lib/NGCP/Panel/Controller/API/Numbers.pm

85 lines
2.4 KiB

package NGCP::Panel::Controller::API::Numbers;
use NGCP::Panel::Utils::Generic qw(:all);
use Sipwise::Base;
use parent qw/NGCP::Panel::Role::Entities NGCP::Panel::Role::API::Numbers/;
__PACKAGE__->set_config({
allowed_roles => [qw/admin reseller subscriberadmin/],
});
sub allowed_methods{
return [qw/GET OPTIONS HEAD/];
}
sub api_description {
return 'Allows to list and re-assign numbers (primary and aliases) between subscribers in an atomic operation.'
};
sub query_params {
return [
{
param => 'reseller_id',
description => 'Filter for numbers assigned to subscribers belonging to a specific reseller',
query => {
first => sub {
my $q = shift;
{ 'contact.reseller_id' => $q };
},
second => sub {
{ join => { 'subscriber' => { 'contract' => 'contact' } } };
},
},
},
{
param => 'customer_id',
description => 'Filter for numbers assigned to subscribers of a specific customer.',
query => {
first => sub {
my $q = shift;
return { 'subscriber.contract_id' => $q };
},
second => sub {
return { join => 'subscriber' };
},
},
},
{
param => 'subscriber_id',
description => 'Filter for numbers assigned to a specific subscriber.',
#query_type => 'string_eq',#need to use full query spec due to the "me." absence
query => {
first => sub {
my $q = shift;
return { 'me.subscriber_id' => $q };
},
},
},
{
param => 'ac',
description => 'Filter for ac field of the number.',
query_type => 'wildcard',
},
{
param => 'cc',
description => 'Filter for cc field c the number.',
query_type => 'wildcard',
},
{
param => 'sn',
description => 'Filter for sn field c the number.',
query_type => 'wildcard',
},
{
param => 'type',
description => 'Filter for number type, either "primary" or "alias".',
},
];
}
1;
# vim: set tabstop=4 expandtab: