'.. http:get:: /api/1/items
Get a list of items matching the given criteria.
**Example Request**:
.. sourcecode:: http
GET /api/1/items HTTP/1.1
Host: example.com
Accept: application/json
**Example Response**:
.. sourcecode:: http
HTTP/1.1 200 OK
Vary: Accept
Content-Type: application/json
"items": [
"account": "example_account",
"account_type": "AWS",
"region": "us-east-1",
"technology": "sqs",
"id": 14414,
"name": "example_name",
"num_issues": 3,
"issue_score": 9,
"unjustified_issue_score": 3,
"active" true,
"first_seen": "2014-06-17 19:47:07.299760",
"last_seen": "2014-06-18 11:53:16.467709"
"total": 144,
"page": 1,
"auth": {
"authenticated": true,
"user": "user@example.com"
:statuscode 200: no error
:statuscode 401: Authenciation Error. Please Login.'

def get(self):

    self.reqparse.add_argument('count', type=int, default=30, location='args')
    self.reqparse.add_argument('page', type=int, default=1, location='args')
    self.reqparse.add_argument('regions', type=str, default=None, location='args')
    self.reqparse.add_argument('accounts', type=str, default=None, location='args')
    self.reqparse.add_argument('accounttypes', type=str, default=None, location='args')
    self.reqparse.add_argument('active', type=str, default=None, location='args')
    self.reqparse.add_argument('names', type=str, default=None, location='args')
    self.reqparse.add_argument('arns', type=str, default=None, location='args')
    self.reqparse.add_argument('technologies', type=str, default=None, location='args')
    self.reqparse.add_argument('searchconfig', type=str, default=None, location='args')
    self.reqparse.add_argument('ids', type=int, default=None, location='args')
    self.reqparse.add_argument('summary', type=bool, default=False, location='args')
    self.reqparse.add_argument('min_score', type=int, default=False, location='args')
    self.reqparse.add_argument('min_unjustified_score', type=int, default=False, location='args')
    args = self.reqparse.parse_args()
    page = args.pop('page', None)
    count = args.pop('count', None)
    for (k, v) in args.items():
        if (not v):
            del args[k]
    query = Item.query.join((ItemRevision, (Item.latest_revision_id == ItemRevision.id)))
    if ('regions' in args):
        regions = args['regions'].split(',')
        query = query.filter(Item.region.in_(regions))
    if ('accounts' in args):
        accounts = args['accounts'].split(',')
        query = query.join((Account, (Account.id == Item.account_id)))
        query = query.filter(Account.name.in_(accounts))
    if ('accounttypes' in args):
        accounttypes = args['accounttypes'].split(',')
        query = query.join((Account, (Account.id == Item.account_id)))
        query = query.join((AccountType, (AccountType.id == Account.account_type_id)))
        query = query.filter(AccountType.name.in_(accounttypes))
    if ('technologies' in args):
        technologies = args['technologies'].split(',')
        query = query.join((Technology, (Technology.id == Item.tech_id)))
        query = query.filter(Technology.name.in_(technologies))
    if ('names' in args):
        names = args['names'].split(',')
        query = query.filter(Item.name.in_(names))
    if ('arns' in args):
        arns = args['arns'].split(',')
        query = query.filter(Item.arn.in_(arns))
    if ('ids' in args):
        ids = args['ids'].split(',')
        query = query.filter(Item.id.in_(ids))
    if ('active' in args):
        active = (args['active'].lower() == 'true')
        query = query.filter((ItemRevision.active == active))
    if ('searchconfig' in args):
        searchconfig = args['searchconfig']
        query = query.filter(cast(ItemRevision.config, String).ilike('%{}%'.format(searchconfig)))
    if ('min_score' in args):
        min_score = args['min_score']
        query = query.filter((Item.score >= min_score))
    if ('min_unjustified_score' in args):
        min_unjustified_score = args['min_unjustified_score']
        query = query.filter((Item.unjustified_score >= min_unjustified_score))
    query = query.options(joinedload('issues'))
    query = query.options(joinedload('account'))
    query = query.options(joinedload('technology'))
    query = query.order_by(ItemRevision.date_created.desc())
    items = query.paginate(page, count)
    marshaled_dict = {'page': items.page, 'total': items.total, 'auth': self.auth_dict}
    marshaled_items = []
    for item in items.items:
        item_marshaled = marshal(item.__dict__, ITEM_FIELDS)
        if (('summary' in args) and args['summary']):
            item_marshaled = dict((item_marshaled.items() + {'account': item.account.name, 'account_type': item.account.account_type.name, 'technology': item.technology.name, 'num_issues': item.issue_count, 'issue_score': item.score, 'unjustified_issue_score': item.unjustified_score, 'active': active}.items()))
        else:
            first_seen_query = ItemRevision.query.filter((ItemRevision.item_id == item.id)).order_by(ItemRevision.date_created.asc())
            first_seen = str(first_seen_query.first().date_created)
            last_seen = str(item.revisions.first().date_created)
            active = item.revisions.first().active
            item_marshaled = dict((item_marshaled.items() + {'account': item.account.name, 'account_type': item.account.account_type.name, 'technology': item.technology.name, 'num_issues': item.issue_count, 'issue_score': item.score, 'unjustified_issue_score': item.unjustified_score, 'active': active, 'first_seen': first_seen, 'last_seen': last_seen}.items()))
        marshaled_items.append(item_marshaled)
    marshaled_dict['items'] = marshaled_items
    marshaled_dict['count'] = len(marshaled_items)
    return (marshaled_dict, 200)
