swagger: "2.0"
schemes:
  - https
host: staging.vestorly.com
basePath: /api/v2
info:
  contact:
    name: Vestorly Team
  description: Vestorly Developers API
  license:
    name: MIT
  termsOfService: http://www.vestorly.com/terms/
  title: Vestorly API
  version: 1.0.0
  x-apisguru-categories:
    - marketing
  x-logo:
    backgroundColor: "#252832"
    url: http://d1sva73gxwx496.cloudfront.net/images/homepage/logo-white-92827ba4.png
  x-origin:
    - format: swagger
      url: http://developers.vestorly.com/v2/swagger.json
      version: "2.0"
  x-providerName: vestorly.com
securityDefinitions:
  access_token:
    authorizationUrl: https://dev.vestorly.com/oauth/authorize
    flow: implicit
    scopes:
      default: read and write data to your account
    type: oauth2
tags:
  - description: Vestorly API docs
    externalDocs:
      description: Find more info here
      url: https://developers.vestorly.com
    name: api docs
paths:
  "/advisors/{id}":
    get:
      description: Returns a single advisor given their ID
      operationId: findAdvisorByID
      parameters:
        - description: Vestorly Auth Token
          in: query
          name: vestorly_auth
          required: true
          type: string
        - description: OAuth Token
          in: query
          name: access_token
          required: false
          type: string
        - description: Advisor Id to fetch
          in: path
          name: id
          required: true
          type: string
      responses:
        "200":
          description: Advisor response
          schema:
            $ref: "#/definitions/Advisor"
      security:
        - access_token:
            - default
      tags:
        - advisors
  /article_phrases:
    get:
      description: Returns phrases used in Categories
      operationId: findArticlePhrases
      parameters:
        - description: Vestorly Auth Token
          in: query
          name: vestorly_auth
          required: true
          type: string
        - description: OAuth Token
          in: query
          name: access_token
          required: false
          type: string
        - description: Text to search phrases
          in: query
          name: text_search
          required: false
          type: string
        - description: Number of returned phrases
          in: query
          name: size
          required: false
          type: integer
        - description: Number of phrases to skip
          in: query
          name: from
          required: false
          type: integer
      responses:
        "200":
          description: Response
          schema:
            $ref: "#/definitions/ArticlePhrases"
      security:
        - access_token:
            - default
      tags:
        - article_phrase
  /articles:
    get:
      description: Returns all articles
      operationId: findArticles
      parameters:
        - description: Vestorly Auth Token
          in: query
          name: vestorly_auth
          required: true
          type: string
        - description: OAuth Token
          in: query
          name: access_token
          required: false
          type: string
        - description: Limit on the number of articles to return
          format: int32
          in: query
          name: limit
          required: false
          type: integer
        - description: Search query parameter
          in: query
          name: text_query
          required: false
          type: string
        - description: Direction of sort (used with sort_by parameter)
          in: query
          name: sort_direction
          required: false
          type: string
        - description: Field on model to sort by
          in: query
          name: sort_by
          required: false
          type: string
      responses:
        "200":
          description: Response
          schema:
            $ref: "#/definitions/Articles"
      security:
        - access_token:
            - default
      tags:
        - articles
  "/articles/{id}":
    get:
      description: Returns a single article
      operationId: findArticleByID
      parameters:
        - description: Vestorly Auth Token
          in: query
          name: vestorly_auth
          required: true
          type: string
        - description: OAuth Token
          in: query
          name: access_token
          required: false
          type: string
        - description: Article Id to fetch
          format: string
          in: path
          name: id
          required: true
          type: string
      responses:
        "200":
          description: Article response
          schema:
            $ref: "#/definitions/Articleresponse"
      security:
        - access_token:
            - default
      tags:
        - articles
  /custom_feed_filters:
    get:
      description: Returns all Categorie's filters
      operationId: findCustomFeedFilters
      parameters:
        - description: Vestorly Auth Token
          in: query
          name: vestorly_auth
          required: true
          type: string
        - description: OAuth Token
          in: query
          name: access_token
          required: false
          type: string
      responses:
        "200":
          description: Response
          schema:
            $ref: "#/definitions/CustomFeedFilters"
      security:
        - access_token:
            - default
      tags:
        - custom_feed_filters
    post:
      description: Creates a new Category filter
      operationId: createCustomFeedFilter
      parameters:
        - description: Vestorly Auth Token
          in: query
          name: vestorly_auth
          required: true
          type: string
        - description: OAuth Token
          in: query
          name: access_token
          required: false
          type: string
        - description: Category filter to add
          in: body
          name: custom_feed_filter
          required: true
          schema:
            $ref: "#/definitions/CustomFeedFilterInput"
      produces:
        - application/json
      responses:
        "200":
          description: Custom Feed Filter response
          schema:
            $ref: "#/definitions/CustomFeedFilterresponse"
      security:
        - access_token:
            - default
      tags:
        - custom_feed_filters
  "/custom_feed_filters/{id}":
    delete:
      description: Deletes the Category's filter
      operationId: deleteCustomFeedFilter
      parameters:
        - description: Vestorly Auth Token
          in: query
          name: vestorly_auth
          required: true
          type: string
        - description: OAuth Token
          in: query
          name: access_token
          required: false
          type: string
        - description: id of category filter to delete
          in: path
          name: id
          required: true
          type: string
      produces:
        - application/json
      responses:
        "200":
          description: Custom Feed Filter response
          schema:
            $ref: "#/definitions/CustomFeedFilterresponse"
      security:
        - access_token:
            - default
      tags:
        - custom_feed_filters
    get:
      description: Returns a single Category's filter
      operationId: findCustomFeedFilterByID
      parameters:
        - description: Vestorly Auth Token
          in: query
          name: vestorly_auth
          required: true
          type: string
        - description: OAuth Token
          in: query
          name: access_token
          required: false
          type: string
        - description: Custom Feed Filter Id to fetch
          format: string
          in: path
          name: id
          required: true
          type: string
      responses:
        "200":
          description: Custom Feed Filter response
          schema:
            $ref: "#/definitions/CustomFeedFilterresponse"
      security:
        - access_token:
            - default
      tags:
        - custom_feed_filters
    put:
      description: Updates a Category Feed Filter
      operationId: updateCustomFeedFilterById
      parameters:
        - description: Vestorly Auth Token
          in: query
          name: vestorly_auth
          required: true
          type: string
        - description: OAuth Token
          in: query
          name: access_token
          required: false
          type: string
        - description: id of category filter to update
          in: path
          name: id
          required: true
          type: string
        - description: Category filter to add
          in: body
          name: custom_feed_filter
          required: true
          schema:
            $ref: "#/definitions/CustomFeedFilterInput"
      produces:
        - application/json
      responses:
        "200":
          description: Custom Feed Filter response
          schema:
            $ref: "#/definitions/CustomFeedFilterresponse"
      security:
        - access_token:
            - default
      tags:
        - custom_feed_filters
  /custom_feeds:
    get:
      description: Returns all Categories
      operationId: findCustomFeeds
      parameters:
        - description: Vestorly Auth Token
          in: query
          name: vestorly_auth
          required: true
          type: string
        - description: OAuth Token
          in: query
          name: access_token
          required: false
          type: string
      responses:
        "200":
          description: Response
          schema:
            $ref: "#/definitions/CustomFeeds"
      security:
        - access_token:
            - default
      tags:
        - custom_feeds
    post:
      description: Creates a new Category
      operationId: createCustomFeed
      parameters:
        - description: Vestorly Auth Token
          in: query
          name: vestorly_auth
          required: true
          type: string
        - description: OAuth Token
          in: query
          name: access_token
          required: false
          type: string
        - description: Category to add
          in: body
          name: custom_feed
          required: true
          schema:
            $ref: "#/definitions/CustomFeedInput"
      produces:
        - application/json
      responses:
        "200":
          description: Custom Feed response
          schema:
            $ref: "#/definitions/CustomFeedresponse"
      security:
        - access_token:
            - default
      tags:
        - custom_feeds
  "/custom_feeds/{id}":
    delete:
      description: Deletes a new Category
      operationId: deleteCustomFeed
      parameters:
        - description: Vestorly Auth Token
          in: query
          name: vestorly_auth
          required: true
          type: string
        - description: OAuth Token
          in: query
          name: access_token
          required: false
          type: string
        - description: id of category to delete
          in: path
          name: id
          required: true
          type: string
      produces:
        - application/json
      responses:
        "200":
          description: Custom Feed response
          schema:
            $ref: "#/definitions/CustomFeedresponse"
      security:
        - access_token:
            - default
      tags:
        - custom_feeds
    get:
      description: Returns a single Category
      operationId: findCustomFeedByID
      parameters:
        - description: Vestorly Auth Token
          in: query
          name: vestorly_auth
          required: true
          type: string
        - description: OAuth Token
          in: query
          name: access_token
          required: false
          type: string
        - description: Custom Feed Id to fetch
          format: string
          in: path
          name: id
          required: true
          type: string
      responses:
        "200":
          description: Custom Feed response
          schema:
            $ref: "#/definitions/CustomFeedresponse"
      security:
        - access_token:
            - default
      tags:
        - custom_feeds
    put:
      description: Updates a Category
      operationId: updateCategoryById
      parameters:
        - description: Vestorly Auth Token
          in: query
          name: vestorly_auth
          required: true
          type: string
        - description: OAuth Token
          in: query
          name: access_token
          required: false
          type: string
        - description: id of category to update
          in: path
          name: id
          required: true
          type: string
        - description: Category to add
          in: body
          name: custom_feed
          required: true
          schema:
            $ref: "#/definitions/CustomFeedInput"
      produces:
        - application/json
      responses:
        "200":
          description: Custom Feed response
          schema:
            $ref: "#/definitions/CustomFeedresponse"
      security:
        - access_token:
            - default
      tags:
        - custom_feeds
  "/custom_feeds/{id}/articles":
    get:
      description: Returns Articles by Category
      operationId: findCustomFeedArticles
      parameters:
        - description: Vestorly Auth Token
          in: query
          name: vestorly_auth
          required: true
          type: string
        - description: OAuth Token
          in: query
          name: access_token
          required: false
          type: string
        - description: Category Id to fetch
          format: string
          in: path
          name: id
          required: true
          type: string
        - description: Limit on the number of articles to return
          format: int32
          in: query
          name: limit
          required: false
          type: integer
        - description: Field on model to sort by
          in: query
          name: sort_by
          required: false
          type: string
        - description: Field where the fetch will start from
          format: int32
          in: query
          name: start
          type: integer
        - description: Filter retrieved articles since this date
          in: query
          name: created_at_gte_days_ago
          type: string
        - description: Search query parameter
          in: query
          name: text_query
          required: false
          type: string
      responses:
        "200":
          description: Response
          schema:
            $ref: "#/definitions/Articles"
      security:
        - access_token:
            - default
      tags:
        - custom_feed_articles
  "/custom_feeds/{id}/duplicates":
    post:
      description: Duplicates Category
      operationId: duplicateCustomFeed
      parameters:
        - description: Vestorly Auth Token
          in: query
          name: vestorly_auth
          required: true
          type: string
        - description: OAuth Token
          in: query
          name: access_token
          required: false
          type: string
        - description: id of category to duplicate
          in: path
          name: id
          required: true
          type: string
      responses:
        "200":
          description: Custom Feed response
          schema:
            $ref: "#/definitions/CustomFeedresponse"
      security:
        - access_token:
            - default
      tags:
        - custom_feeds
  /events:
    get:
      description: Returns all events
      operationId: findEvents
      parameters:
        - description: Vestorly Auth Token
          in: query
          name: vestorly_auth
          required: true
          type: string
        - description: OAuth Token
          in: query
          name: access_token
          required: false
          type: string
      responses:
        "200":
          description: Event response
          schema:
            $ref: "#/definitions/Events"
      security:
        - access_token:
            - default
      tags:
        - events
    post:
      description: Creates a new event in the system
      operationId: createEvent
      parameters:
        - description: Vestorly Auth Token
          in: query
          name: vestorly_auth
          required: true
          type: string
        - description: OAuth Token
          in: query
          name: access_token
          required: false
          type: string
        - description: Event
          in: body
          name: event
          required: true
          schema:
            $ref: "#/definitions/EventInput"
      responses:
        "200":
          description: Event response
          schema:
            $ref: "#/definitions/Eventcreateresponse"
      security:
        - access_token:
            - default
      tags:
        - events
  "/events/{id}":
    get:
      description: Returns a single event if the user has access
      operationId: findEventByID
      parameters:
        - description: Mongo ID of event to fetch
          in: path
          name: id
          required: true
          type: string
        - description: OAuth Token
          in: query
          name: access_token
          required: false
          type: string
        - description: Vestorly Auth Token
          in: query
          name: vestorly_auth
          required: true
          type: string
      responses:
        "200":
          description: Event response
          schema:
            $ref: "#/definitions/Eventresponse"
      security:
        - access_token:
            - default
      tags:
        - events
  /groups:
    get:
      description: Returns all groups
      operationId: findGroups
      parameters:
        - description: Vestorly Auth Token
          format: string
          in: query
          name: vestorly_auth
          required: true
          type: string
        - description: OAuth Token
          in: query
          name: access_token
          required: false
          type: string
      responses:
        "200":
          description: Group response
          schema:
            $ref: "#/definitions/Groups"
      security:
        - access_token:
            - default
      tags:
        - groups
    post:
      description: Creates a new Group
      operationId: createGroup
      parameters:
        - description: Vestorly Auth Token
          format: string
          in: query
          name: vestorly_auth
          required: true
          type: string
        - description: OAuth Token
          in: query
          name: access_token
          required: false
          type: string
        - description: Group to add
          in: body
          name: group
          required: true
          schema:
            $ref: "#/definitions/GroupInput"
      produces:
        - application/json
      responses:
        "200":
          description: group response
          schema:
            $ref: "#/definitions/Groupresponse"
      security:
        - access_token:
            - default
      tags:
        - groups
  "/groups/{id}":
    delete:
      description: Deletes a Group
      operationId: deleteGroup
      parameters:
        - description: Vestorly Auth Token
          format: string
          in: query
          name: vestorly_auth
          required: true
          type: string
        - description: OAuth Token
          in: query
          name: access_token
          required: false
          type: string
        - description: id of group to delete
          in: path
          name: id
          required: true
          type: string
      produces:
        - application/json
      responses:
        "200":
          description: group response
          schema:
            $ref: "#/definitions/Groupresponse"
      security:
        - access_token:
            - default
      tags:
        - groups
    get:
      description: Returns a single group if user has access
      operationId: findGroupByID
      parameters:
        - description: Vestorly Auth Token
          format: string
          in: query
          name: vestorly_auth
          required: true
          type: string
        - description: OAuth Token
          in: query
          name: access_token
          required: false
          type: string
        - description: Mongo ID of group to fetch
          format: string
          in: path
          name: id
          required: true
          type: string
      responses:
        "200":
          description: Group response
          schema:
            $ref: "#/definitions/Groupresponse"
      security:
        - access_token:
            - default
      tags:
        - groups
    put:
      description: Updates a Group
      operationId: updateGroupById
      parameters:
        - description: Vestorly Auth Token
          in: query
          name: vestorly_auth
          required: true
          type: string
        - description: OAuth Token
          in: query
          name: access_token
          required: false
          type: string
        - description: id of group to update
          in: path
          name: id
          required: true
          type: string
        - description: Group to update
          in: body
          name: group
          required: true
          schema:
            $ref: "#/definitions/GroupInput"
      produces:
        - application/json
      responses:
        "200":
          description: group response
          schema:
            $ref: "#/definitions/Groupresponse"
      security:
        - access_token:
            - default
      tags:
        - groups
  /member_events:
    get:
      description: Returns all MemberEvents
      operationId: findMemberEvents
      parameters:
        - description: Vestorly Auth Token
          in: query
          name: vestorly_auth
          required: true
          type: string
        - description: OAuth Token
          in: query
          name: access_token
          required: false
          type: string
      responses:
        "200":
          description: member event response
          schema:
            $ref: "#/definitions/MemberEvents"
      security:
        - access_token:
            - default
      tags:
        - member_events
  /member_reports:
    get:
      description: Returns all member reports
      operationId: findMemberReports
      parameters:
        - description: Vestorly Auth Token
          in: query
          name: vestorly_auth
          required: true
          type: string
        - description: OAuth Token
          in: query
          name: access_token
          required: false
          type: string
      responses:
        "200":
          description: member reports response
          schema:
            $ref: "#/definitions/MemberReports"
      security:
        - access_token:
            - default
      tags:
        - member_reports
  /members:
    get:
      description: Returns all members
      operationId: findMembers
      parameters:
        - description: Vestorly Auth Token
          format: string
          in: query
          name: vestorly_auth
          required: true
          type: string
        - description: OAuth Token
          in: query
          name: access_token
          required: false
          type: string
        - description: Skips number of members from start
          in: query
          name: start
          required: false
          type: integer
        - description: Number of members to return
          in: query
          name: limit
          required: false
          type: integer
      responses:
        "200":
          description: Member response
          schema:
            $ref: "#/definitions/Members"
      security:
        - access_token:
            - default
      tags:
        - members
    post:
      description: Create a new member in the Vestorly Platform
      operationId: createMember
      parameters:
        - description: Vestorly Auth Token
          in: query
          name: vestorly_auth
          required: true
          type: string
        - description: OAuth Token
          in: query
          name: access_token
          required: false
          type: string
        - description: Member you want to create
          in: body
          name: member
          required: true
          schema:
            $ref: "#/definitions/Member"
      responses:
        "200":
          description: member response
          schema:
            $ref: "#/definitions/Memberresponse"
      security:
        - access_token:
            - default
      tags:
        - members
  "/members/{id}":
    get:
      description: Returns a single member
      operationId: findMemberByID
      parameters:
        - description: Mongo ID of member to fetch
          format: string
          in: path
          name: id
          required: true
          type: string
        - description: Vestorly Auth Token
          format: string
          in: query
          name: vestorly_auth
          required: true
          type: string
        - description: OAuth Token
          in: query
          name: access_token
          required: false
          type: string
      responses:
        "200":
          description: Member response
          schema:
            $ref: "#/definitions/Memberresponse"
      security:
        - access_token:
            - default
      tags:
        - members
    put:
      description: Updates a single member
      operationId: updateMemberByID
      parameters:
        - description: Mongo ID of member to fetch
          format: string
          in: path
          name: id
          required: true
          type: string
        - description: Vestorly Auth Token
          format: string
          in: query
          name: vestorly_auth
          required: true
          type: string
        - description: OAuth Token
          in: query
          name: access_token
          required: false
          type: string
        - description: Member you want to update
          in: body
          name: member
          required: true
          schema:
            $ref: "#/definitions/Member"
      responses:
        "200":
          description: Member response
          schema:
            $ref: "#/definitions/Memberresponse"
      security:
        - access_token:
            - default
      tags:
        - members
  /newsletter_settings:
    get:
      description: Returns all newsletter settings
      operationId: findNewsletterSettings
      parameters:
        - description: Vestorly Auth Token
          in: query
          name: vestorly_auth
          required: true
          type: string
        - description: OAuth Token
          in: query
          name: access_token
          required: false
          type: string
      responses:
        "200":
          description: newsletter settings response
          schema:
            $ref: "#/definitions/NewsletterSettings"
      security:
        - access_token:
            - default
      tags:
        - newsletter_settings
  "/newsletter_settings/{id}":
    get:
      description: Returns a single newsletter settings if the user has access
      operationId: findNewsletterSettingsByID
      parameters:
        - description: Mongo ID of newsletter settings to fetch
          in: path
          name: id
          required: true
          type: string
        - description: Vestorly Auth Token
          in: query
          name: vestorly_auth
          required: true
          type: string
        - description: OAuth Token
          in: query
          name: access_token
          required: false
          type: string
      responses:
        "200":
          description: newsletting setting response
          schema:
            $ref: "#/definitions/Newslettersettingresponse"
      security:
        - access_token:
            - default
      tags:
        - newsletter_settings
    put:
      description: Update a single newsletter setting by ID
      operationId: updateNewsletterSettingsByID
      parameters:
        - description: Mongo ID of newsletter settings to update
          in: path
          name: id
          required: true
          type: string
        - description: Vestorly Auth Token
          in: query
          name: vestorly_auth
          required: true
          type: string
        - description: OAuth Token
          in: query
          name: access_token
          required: false
          type: string
        - description: newsletter settings
          in: body
          name: newsletter_setting
          required: true
          schema:
            $ref: "#/definitions/NewsletterSettingsInput"
      responses:
        "200":
          description: newsletter settings response
          schema:
            $ref: "#/definitions/Newslettersettingresponse"
      security:
        - access_token:
            - default
      tags:
        - newsletter_settings
  /newsletters:
    get:
      description: Returns all newsletters
      operationId: findNewsletters
      parameters:
        - description: Vestorly Auth Token
          in: query
          name: vestorly_auth
          required: true
          type: string
        - description: OAuth Token
          in: query
          name: access_token
          required: false
          type: string
      responses:
        "200":
          description: Newsletter response
          schema:
            $ref: "#/definitions/Newsletters"
      security:
        - access_token:
            - default
      tags:
        - newsletters
  "/newsletters/{id}":
    get:
      description: Get a newsletter by ID
      operationId: getNewsletterByID
      parameters:
        - description: Vestorly Auth Token
          in: query
          name: vestorly_auth
          required: true
          type: string
        - description: OAuth Token
          in: query
          name: access_token
          required: false
          type: string
        - description: Mongo ID of event to get
          in: path
          name: id
          required: true
          type: string
      responses:
        "200":
          description: Newsletter response
          schema:
            $ref: "#/definitions/Newsletterresponse"
      security:
        - access_token:
            - default
      tags:
        - newsletters
    put:
      description: Updates a newsletter
      operationId: updateNewsletterByID
      parameters:
        - description: Vestorly Auth Token
          in: query
          name: vestorly_auth
          required: true
          type: string
        - description: OAuth Token
          in: query
          name: access_token
          required: false
          type: string
        - description: Mongo ID of event to update
          in: path
          name: id
          required: true
          type: string
        - description: Newsletter
          in: body
          name: newsletter
          required: true
          schema:
            $ref: "#/definitions/NewsletterInput"
      responses:
        "200":
          description: Newsletter response
          schema:
            $ref: "#/definitions/Newsletterresponse"
      security:
        - access_token:
            - default
      tags:
        - newsletters
  /posts:
    get:
      description: Query all posts
      operationId: findPosts
      parameters:
        - description: Vestorly Auth Token
          in: query
          name: vestorly_auth
          required: true
          type: string
        - description: OAuth Token
          in: query
          name: access_token
          required: false
          type: string
        - description: Filter post by parameters
          in: query
          name: text_query
          required: false
          type: string
        - description: Filter by External URL
          in: query
          name: external_url
          required: false
          type: string
        - description: Filter by is_published boolean
          in: query
          name: is_published
          required: false
          type: string
      responses:
        "200":
          description: posts response
          schema:
            $ref: "#/definitions/Posts"
      security:
        - access_token:
            - default
      tags:
        - posts
    post:
      description: Create a new post in the Vestorly Platform
      operationId: createPost
      parameters:
        - description: Vestorly Auth Token
          in: query
          name: vestorly_auth
          required: true
          type: string
        - description: OAuth Token
          in: query
          name: access_token
          required: false
          type: string
        - description: Post you want to create
          in: body
          name: post
          required: true
          schema:
            $ref: "#/definitions/PostInput"
      responses:
        "200":
          description: posts response
          schema:
            $ref: "#/definitions/Postresponse"
      security:
        - access_token:
            - default
      tags:
        - posts
  "/posts/{id}":
    get:
      description: Query all posts
      operationId: getPostByID
      parameters:
        - description: Vestorly Auth Token
          in: query
          name: vestorly_auth
          required: true
          type: string
        - description: OAuth Token
          in: query
          name: access_token
          required: false
          type: string
        - description: ID of post to fetch
          in: path
          name: id
          required: true
          type: string
      responses:
        "200":
          description: post response
          schema:
            $ref: "#/definitions/Postresponse"
      security:
        - access_token:
            - default
      tags:
        - posts
    put:
      description: Update A Post
      operationId: updatePostByID
      parameters:
        - description: Vestorly Auth Token
          in: query
          name: vestorly_auth
          required: true
          type: string
        - description: OAuth Token
          in: query
          name: access_token
          required: false
          type: string
        - description: id of post to update
          in: path
          name: id
          required: true
          type: string
        - description: Post you want to update
          in: body
          name: post
          required: true
          schema:
            $ref: "#/definitions/Post"
      responses:
        "200":
          description: post response
          schema:
            $ref: "#/definitions/Postresponse"
      security:
        - access_token:
            - default
      tags:
        - posts
  /seed_custom_feeds:
    get:
      description: Returns all Categories keywords
      operationId: findSeedCustomFeeds
      parameters:
        - description: Vestorly Auth Token
          in: query
          name: vestorly_auth
          required: true
          type: string
        - description: OAuth Token
          in: query
          name: access_token
          required: false
          type: string
      responses:
        "200":
          description: Response
          schema:
            $ref: "#/definitions/SeedCustomFeeds"
      security:
        - access_token:
            - default
      tags:
        - seed_custom_feeds
    post:
      description: Creates a new Category Keyword
      operationId: createSeedCustomFeed
      parameters:
        - description: Vestorly Auth Token
          in: query
          name: vestorly_auth
          required: true
          type: string
        - description: OAuth Token
          in: query
          name: access_token
          required: false
          type: string
        - description: Category to add
          in: body
          name: seed_custom_feed
          required: true
          schema:
            $ref: "#/definitions/SeedCustomFeedInput"
      produces:
        - application/json
      responses:
        "200":
          description: Seed Custom Feed response
          schema:
            $ref: "#/definitions/SeedCustomFeedresponse"
      security:
        - access_token:
            - default
      tags:
        - seed_custom_feeds
  "/seed_custom_feeds/{id}":
    delete:
      description: Deletes a Category keywords
      operationId: deleteSeedCustomFeed
      parameters:
        - description: Vestorly Auth Token
          in: query
          name: vestorly_auth
          required: true
          type: string
        - description: OAuth Token
          in: query
          name: access_token
          required: false
          type: string
        - description: id of seed category to delete
          in: path
          name: id
          required: true
          type: string
      produces:
        - application/json
      responses:
        "200":
          description: Seed Custom Feed response
          schema:
            $ref: "#/definitions/SeedCustomFeedresponse"
      security:
        - access_token:
            - default
      tags:
        - seed_custom_feeds
    get:
      description: Returns a single Category keyword
      operationId: findSeedCustomFeedByID
      parameters:
        - description: Vestorly Auth Token
          in: query
          name: vestorly_auth
          required: true
          type: string
        - description: OAuth Token
          in: query
          name: access_token
          required: false
          type: string
        - description: Seed Custom Feed Id to fetch
          format: string
          in: path
          name: id
          required: true
          type: string
      responses:
        "200":
          description: Seed Custom Feed response
          schema:
            $ref: "#/definitions/SeedCustomFeedresponse"
      security:
        - access_token:
            - default
      tags:
        - seed_custom_feeds
    put:
      description: Updates a Category keywords
      operationId: updateSeedCustomFeedById
      parameters:
        - description: Vestorly Auth Token
          in: query
          name: vestorly_auth
          required: true
          type: string
        - description: OAuth Token
          in: query
          name: access_token
          required: false
          type: string
        - description: id of seed category to update
          in: path
          name: id
          required: true
          type: string
        - description: Category keywords to add
          in: body
          name: seed_custom_feed
          required: true
          schema:
            $ref: "#/definitions/SeedCustomFeedInput"
      produces:
        - application/json
      responses:
        "200":
          description: Seed Custom Feed response
          schema:
            $ref: "#/definitions/SeedCustomFeedresponse"
      security:
        - access_token:
            - default
      tags:
        - seed_custom_feeds
  /sessions:
    post:
      consumes:
        - application/x-www-form-urlencoded
      description: Login To Vestorly Platform
      operationId: login
      parameters:
        - description: Username in the vestorly platform
          in: query
          name: username
          required: true
          type: string
        - description: Password in Vestorly Platform
          in: query
          name: password
          required: true
          type: string
      responses:
        "200":
          description: Response
          schema:
            $ref: "#/definitions/Session"
      tags:
        - sessions
  "/sessions/{id}":
    delete:
      description: Logout of the vestorly platform
      operationId: logout
      parameters:
        - description: Authenication token
          in: query
          name: vestorly_auth
          required: true
          type: string
        - description: ID of pet to session
          in: path
          name: id
          required: true
          type: string
      responses:
        "200":
          description: You have successfully logged out of the vestorly platform
          schema:
            $ref: "#/definitions/SessionLogoutResponse"
      tags:
        - sessions
  /sources:
    get:
      description: Returns all sources
      operationId: findSources
      parameters:
        - description: Vestorly Auth Token
          in: query
          name: vestorly_auth
          required: true
          type: string
        - description: OAuth Token
          in: query
          name: access_token
          required: false
          type: string
      responses:
        "200":
          description: source response
          schema:
            $ref: "#/definitions/Sources"
      security:
        - access_token:
            - default
      tags:
        - sources
    post:
      description: Create source
      operationId: createSource
      parameters:
        - description: Vestorly Auth Token
          in: query
          name: vestorly_auth
          required: true
          type: string
        - description: OAuth Token
          in: query
          name: access_token
          required: false
          type: string
        - description: Source
          in: body
          name: source
          required: true
          schema:
            $ref: "#/definitions/SourceInput"
      responses:
        "200":
          description: source response
          schema:
            $ref: "#/definitions/Sourceresponse"
      security:
        - access_token:
            - default
      tags:
        - sources
  "/sources/{id}":
    get:
      description: Get Source By ID
      operationId: getSourceByID
      parameters:
        - description: Vestorly Auth Token
          in: query
          name: vestorly_auth
          required: true
          type: string
        - description: OAuth Token
          in: query
          name: access_token
          required: false
          type: string
        - description: ID of source to fetch
          in: path
          name: id
          required: true
          type: string
      responses:
        "200":
          description: source response
          schema:
            $ref: "#/definitions/Sourceresponse"
      security:
        - access_token:
            - default
      tags:
        - sources
    put:
      description: Update Source By ID
      operationId: updateSourceByID
      parameters:
        - description: Vestorly Auth Token
          in: query
          name: vestorly_auth
          required: true
          type: string
        - description: OAuth Token
          in: query
          name: access_token
          required: false
          type: string
        - description: ID of source to fetch
          in: path
          name: id
          required: true
          type: string
        - description: Source
          in: body
          name: source
          required: true
          schema:
            $ref: "#/definitions/SourceInput"
      responses:
        "200":
          description: source response
          schema:
            $ref: "#/definitions/Sourceresponse"
      security:
        - access_token:
            - default
      tags:
        - sources
definitions:
  Advisor:
    properties:
      about:
        type: string
      account_type:
        type: string
      address:
        type: string
      adv_brochure:
        type: string
      api_key:
        type: string
      city:
        type: string
      company:
        type: string
      compliance_bcc_email_address:
        type: string
      dashboard_url:
        type: string
      disclosure:
        type: string
      email_report_blast:
        type: string
      external_options:
        type: string
      first_name:
        type: string
      id:
        type: string
      last_name:
        type: string
      linkedin:
        type: string
      logo:
        type: string
      name:
        type: string
      plan:
        type: string
      profile_picture:
        type: string
      reg_number:
        type: string
      state:
        type: string
      tag:
        type: string
      twitter_handle:
        type: string
      website:
        type: string
      zip:
        type: string
    required:
      - id
      - name
  Advisorresponse:
    properties:
      advisor:
        $ref: "#/definitions/Advisor"
  Advisors:
    properties:
      advisors:
        items:
          $ref: "#/definitions/Advisor"
        type: array
  Article:
    properties:
      _id:
        type: string
      body:
        type: string
      created_at:
        type: string
      external_url:
        type: string
      external_url_source:
        type: string
      external_url_type:
        type: string
      image_height:
        format: int32
        type: integer
      image_path:
        type: string
      image_url:
        type: string
      image_width:
        format: int32
        type: integer
      is_mobile_proxy_needed:
        type: boolean
      is_proxy_needed:
        type: boolean
      is_responsive:
        type: boolean
      logo_url:
        type: string
      needs_sanitize:
        type: boolean
      proxy_url:
        type: string
      redirector_link:
        type: string
      square_logo_url:
        type: string
      suitability_score:
        type: string
      summary:
        type: string
      title:
        type: string
      topic:
        type: string
      url:
        type: string
    required:
      - _id
      - title
  ArticlePhrase:
    properties:
      created_at:
        format: int32
        type: integer
      length:
        format: int32
        type: integer
      text:
        type: string
  ArticlePhraseresponse:
    properties:
      article_phrase:
        $ref: "#/definitions/ArticlePhrase"
  ArticlePhrases:
    properties:
      article_phrases:
        items:
          $ref: "#/definitions/ArticlePhrase"
        type: array
  Articleresponse:
    properties:
      article:
        $ref: "#/definitions/Article"
  Articles:
    properties:
      articles:
        items:
          $ref: "#/definitions/Article"
        type: array
  CustomFeed:
    properties:
      _id:
        type: string
      custom_feed_filter_id:
        type: string
      custom_feed_permission_id:
        type: string
      custom_feed_template_id:
        type: string
      custom_feed_visibility:
        format: int32
        type: integer
      default:
        type: boolean
      display_label:
        type: string
      is_auto_curated_newsletter_custom_feed:
        type: boolean
      label:
        type: string
      links:
        type: string
      popularity:
        format: float
        type: number
      premium_content:
        type: boolean
      seed_custom_feed_id:
        type: string
      third_party_articles_custom_feed_id:
        type: string
    required:
      - _id
      - label
  CustomFeedFilter:
    properties:
      _id:
        type: string
      custom_feed_id:
        type: string
      source_ids:
        items:
          type: string
        type: array
    required:
      - _id
      - custom_feed_id
  CustomFeedFilterInput:
    properties:
      custom_feed_id:
        type: string
      source_ids:
        items:
          type: string
        type: array
    required:
      - custom_feed_id
  CustomFeedFilterresponse:
    properties:
      custom_feed_filter:
        $ref: "#/definitions/CustomFeedFilter"
  CustomFeedFilters:
    properties:
      custom_feed_filters:
        items:
          $ref: "#/definitions/CustomFeedFilter"
        type: array
  CustomFeedInput:
    properties:
      custom_feed_filter_id:
        type: string
      custom_feed_permission_id:
        type: string
      custom_feed_visibility:
        format: int32
        type: integer
      default:
        type: boolean
      is_auto_curated_newsletter_custom_feed:
        type: boolean
      label:
        type: string
      popularity:
        format: float
        type: number
      premium_content:
        type: boolean
      seed_custom_feed_id:
        type: string
      social_posting_id:
        type: string
      third_party_articles_custom_feed_id:
        type: string
    required:
      - label
  CustomFeedresponse:
    properties:
      custom_feed:
        $ref: "#/definitions/CustomFeed"
  CustomFeeds:
    properties:
      custom_feeds:
        items:
          $ref: "#/definitions/CustomFeed"
        type: array
  Event:
    properties:
      _id:
        type: string
      advisor_id:
        type: string
      created_at:
        type: string
      event_content:
        $ref: "#/definitions/EventContent"
      original_url:
        type: string
      originator_email:
        type: string
      originator_id:
        type: string
      parent_event_id:
        type: string
      referer:
        type: string
      subject_email:
        type: string
      subject_id:
        type: string
      type:
        enum:
          - page_view
          - sign_up
          - sign_in
          - content_posted
          - create_post
          - publish_post
          - update_post
          - delete_post
          - unpublish_post
          - invite
          - publish_newsletter
          - publish_social
          - click
          - delivered
          - open
          - dropped
          - bounce
        type: string
    required:
      - _id
      - type
      - original_url
      - orginator_email
      - subject_email
  EventContent:
    properties:
      _id:
        description: Mongo id of event
        type: string
      content_field:
        type: string
      content_id:
        type: string
      content_type:
        type: string
      created_at:
        type: string
      slug:
        type: string
      updated_at:
        type: string
  EventInput:
    properties:
      advisor_id:
        type: string
      created_at:
        type: string
      event_content:
        $ref: "#/definitions/EventContent"
      original_url:
        type: string
      originator_email:
        type: string
      originator_id:
        type: string
      parent_event_id:
        type: string
      referer:
        type: string
      subject_email:
        type: string
      subject_id:
        type: string
      type:
        enum:
          - page_view
          - sign_up
          - sign_in
          - content_posted
          - create_post
          - publish_post
          - update_post
          - delete_post
          - unpublish_post
          - invite
          - publish_newsletter
          - publish_social
          - click
          - delivered
          - open
          - dropped
          - bounce
        type: string
    required:
      - type
      - original_url
      - orginator_email
      - subject_email
      - advisor_email
      - originator_group_name
      - newsletter
  Eventcreateresponse:
    properties:
      meta:
        $ref: "#/definitions/Meta"
  Eventresponse:
    properties:
      event:
        $ref: "#/definitions/Event"
  Events:
    properties:
      events:
        items:
          $ref: "#/definitions/Event"
        type: array
  Features:
    properties:
      _id:
        type: string
    required:
      - _id
  Group:
    properties:
      _id:
        type: string
      autopublish:
        type: boolean
      is_default:
        type: boolean
      is_hidden:
        type: boolean
      name:
        type: string
      new_weekly_mailer_content:
        type: string
      newsletter_subject:
        type: string
      number_articles_per_group:
        format: int32
        type: integer
      number_articles_per_newsletter:
        format: int32
        type: integer
    required:
      - _id
  GroupInput:
    properties:
      _id:
        type: string
      autopublish:
        type: boolean
      is_default:
        type: boolean
      is_hidden:
        type: boolean
      name:
        type: string
      new_weekly_mailer_content:
        type: string
      newsletter_subject:
        type: string
      number_articles_per_group:
        format: int32
        type: integer
      number_articles_per_newsletter:
        format: int32
        type: integer
    required:
      - _id
  Groupresponse:
    properties:
      group:
        $ref: "#/definitions/Group"
  Groups:
    properties:
      groups:
        items:
          $ref: "#/definitions/Group"
        type: array
  Member:
    properties:
      _id:
        type: string
      address:
        type: string
      age:
        type: string
      assets:
        type: string
      city:
        type: string
      data_estimated:
        type: boolean
      education:
        type: string
      email:
        type: string
      estimated_location:
        type: string
      estimated_zip:
        type: string
      family:
        type: string
      first_name:
        type: string
      gender:
        type: string
      genuine_email:
        type: boolean
      high_net_worth:
        type: boolean
      home_market_value:
        type: string
      home_owner_status:
        type: string
      hometown:
        type: string
      household_income:
        type: string
      interest_consultation:
        type: string
      interest_in_new_advisor:
        type: string
      invited_by:
        type: string
      invited_on:
        type: string
      is_client:
        type: boolean
      is_hidden:
        type: boolean
      last_active_date:
        type: string
      last_name:
        type: string
      location:
        type: string
      marital_status:
        type: string
      message:
        type: string
      occupation:
        type: string
      phone:
        type: string
      picture_url:
        type: string
      portfolio_size:
        type: string
      profile_url:
        type: string
      register_ip_addr:
        type: string
      signed_up_with:
        type: string
      state:
        type: string
      subscribed_group_ids:
        items:
          type: string
        type: array
      tags:
        items:
          type: string
        type: array
      unsubscribed:
        type: boolean
      unsubscribed_date:
        type: boolean
      user_type:
        type: string
      zip:
        type: string
    required:
      - _id
      - email
  MemberEvent:
    properties:
      _id:
        type: string
      content_url:
        type: string
      created_at:
        type: string
      event_date:
        type: string
      event_source:
        type: string
      event_type:
        type: string
      member_id:
        type: string
      original_url:
        type: string
      originator_email:
        type: string
      originator_group_id:
        type: string
      originator_id:
        type: string
      originator_name:
        type: string
      originator_type:
        type: string
      parent_event_id:
        type: string
      parent_originator_id:
        type: string
      referer:
        type: string
      source:
        type: string
      subject_id:
        type: string
      type:
        type: string
      username:
        type: string
  MemberEvents:
    properties:
      member_events:
        items:
          $ref: "#/definitions/MemberEvent"
        type: array
      members:
        items:
          $ref: "#/definitions/TruncatedMember"
        type: array
  MemberReport:
    properties:
      day:
        format: int32
        type: integer
      event_count:
        format: int32
        type: integer
      originator_group_id:
        type: string
      parent_originator_id:
        type: string
      source:
        type: string
      type:
        type: string
      year:
        format: int32
        type: integer
  MemberReports:
    properties:
      member_reports:
        items:
          $ref: "#/definitions/MemberReport"
        type: array
  Memberresponse:
    properties:
      member:
        $ref: "#/definitions/Member"
  Members:
    properties:
      members:
        items:
          $ref: "#/definitions/Member"
        type: array
      meta:
        $ref: "#/definitions/Meta"
      more_results:
        type: boolean
  Meta:
    properties:
      message:
        type: string
  Newsletter:
    properties:
      _id:
        type: string
      click_count:
        format: int64
        type: integer
      is_default:
        type: boolean
      is_sent:
        type: boolean
      total_click_count:
        format: int64
        type: integer
      unique_click_count:
        format: int64
        type: integer
    required:
      - id
      - name
  NewsletterInput:
    properties:
      click_count:
        format: int64
        type: integer
      is_default:
        type: boolean
      is_sent:
        type: boolean
      total_click_count:
        format: int64
        type: integer
      unique_click_count:
        format: int64
        type: integer
    required:
      - name
  NewsletterSetting:
    properties:
      _id:
        type: string
      banner_color:
        type: string
      body_html:
        type: string
      email_accent_color:
        type: string
      email_day_of_week:
        type: integer
      email_hour:
        type: integer
      email_status:
        type: string
      facebook_active_wall:
        type: string
      footer_email_font:
        type: string
      footer_html:
        type: string
      footer_image_url:
        type: string
      group_id:
        type: string
      header_background_color:
        type: string
      header_image_url:
        type: string
      intro_text:
        type: string
      linkedin_active_wall:
        type: string
      montage_enabled:
        type: boolean
      montage_facebook_image_url:
        type: string
      montage_linkedin_image_url:
        type: string
      montage_title:
        type: string
      montage_twitter_image_url:
        type: string
      newsletter_ids:
        items:
          type: string
        type: array
      newsletter_type:
        type: string
      primary_email_font:
        type: string
      salutation_text:
        type: string
      social_day_of_week:
        type: integer
      social_description:
        type: string
      social_posting_text:
        type: string
      social_title:
        type: string
      subject:
        type: string
      title_color:
        type: string
    required:
      - _id
  NewsletterSettings:
    properties:
      newsletter_settings:
        items:
          $ref: "#/definitions/NewsletterSetting"
        type: array
  NewsletterSettingsInput:
    properties:
      newsletter_setting:
        $ref: "#/definitions/NewsletterSetting"
  Newsletterresponse:
    properties:
      newsletter:
        $ref: "#/definitions/Newsletter"
  Newsletters:
    properties:
      newsletters:
        items:
          $ref: "#/definitions/Newsletter"
        type: array
  Newslettersettingresponse:
    properties:
      newsletter_setting:
        $ref: "#/definitions/NewsletterSetting"
  OrgSetting:
    properties:
      _id:
        type: string
      company_address:
        type: string
      company_contact_email:
        type: string
      company_homepage_url:
        type: string
      is_default:
        type: boolean
      name:
        type: string
      privacy_policy_url:
        type: string
      site_url:
        type: string
      terms_and_conditions_url:
        type: string
    required:
      - _id
  PersonalSettings:
    properties:
      _id:
        type: string
    required:
      - _id
  Post:
    properties:
      _id:
        type: string
      advisor_id:
        type: string
      approval_status:
        type: string
      approval_transactions:
        items:
          type: string
        type: array
      article_id:
        type: string
      comment:
        type: string
      created_at:
        type: string
      display_date:
        type: string
      display_summary:
        type: string
      display_tag:
        type: string
      external_url:
        type: string
      external_url_source:
        type: string
      external_url_type:
        type: string
      group_ids:
        items:
          type: string
        type: array
      image_height:
        type: string
      image_path:
        type: string
      image_url:
        type: string
      image_width:
        type: string
      is_featured:
        type: boolean
      is_mobile_proxy_needed:
        type: boolean
      is_proxy_needed:
        type: boolean
      is_published:
        type: boolean
      is_responsive:
        type: boolean
      logo_url:
        type: string
      needs_sanitize:
        type: string
      newsletter_ids:
        items:
          type: string
        type: array
      post_date:
        type: string
      proxy_url:
        type: string
      redirector_link:
        type: string
      slug:
        type: string
      square_logo_url:
        type: string
      suitability_score:
        type: string
      summary:
        type: string
      title:
        type: string
      topic:
        type: string
      updated_at:
        type: string
      vestorly_url:
        type: string
      video:
        type: string
      video_id:
        type: string
    required:
      - id
      - name
  PostInput:
    properties:
      advisor_id:
        type: string
      approval_status:
        type: string
      approval_transactions:
        items:
          type: string
        type: array
      article_id:
        type: string
      comment:
        type: string
      created_at:
        type: string
      display_date:
        type: string
      display_summary:
        type: string
      display_tag:
        type: string
      external_url:
        type: string
      external_url_source:
        type: string
      external_url_type:
        type: string
      group_ids:
        items:
          type: string
        type: array
      image_height:
        type: string
      image_path:
        type: string
      image_url:
        type: string
      image_width:
        type: string
      is_featured:
        type: boolean
      is_mobile_proxy_needed:
        type: boolean
      is_proxy_needed:
        type: boolean
      is_published:
        type: boolean
      is_responsive:
        type: boolean
      logo_url:
        type: string
      needs_sanitize:
        type: string
      newsletter_ids:
        items:
          type: string
        type: array
      post_date:
        type: string
      proxy_url:
        type: string
      slug:
        type: string
      square_logo_url:
        type: string
      suitability_score:
        type: string
      summary:
        type: string
      title:
        type: string
      topic:
        type: string
      updated_at:
        type: string
      vestorly_url:
        type: string
      video:
        type: string
      video_id:
        type: string
    required:
      - name
      - title
  Postrequest:
    properties:
      post:
        $ref: "#/definitions/PostInput"
  Postresponse:
    properties:
      post:
        $ref: "#/definitions/Post"
  Posts:
    properties:
      posts:
        items:
          $ref: "#/definitions/Post"
        type: array
  SeedCustomFeed:
    properties:
      _id:
        type: string
      article_id:
        type: string
      custom_feed_id:
        type: string
      not_article_id:
        type: string
      not_seeds:
        items:
          type: string
        type: array
      seeds:
        items:
          type: string
        type: array
      sort_by:
        type: string
    required:
      - _id
      - label
  SeedCustomFeedInput:
    properties:
      article_id:
        type: string
      custom_feed_id:
        type: string
      not_article_id:
        type: string
      not_seeds:
        items:
          type: string
        type: array
      seeds:
        items:
          type: string
        type: array
      sort_by:
        type: string
    required:
      - custom_feed_id
  SeedCustomFeedresponse:
    properties:
      seed_custom_feed:
        $ref: "#/definitions/SeedCustomFeed"
  SeedCustomFeeds:
    properties:
      seed_custom_feeds:
        items:
          $ref: "#/definitions/SeedCustomFeed"
        type: array
  Session:
    properties:
      _id:
        type: string
      current_user:
        $ref: "#/definitions/User"
      new_user:
        type: boolean
      settings:
        $ref: "#/definitions/Settings"
      vestorly-auth:
        type: string
  SessionLogoutResponse:
    properties:
      message:
        type: string
  Settings:
    properties:
      _id:
        type: string
      adv_brochure:
        type: string
      company:
        type: string
      disclosure:
        type: string
      feature:
        $ref: "#/definitions/Features"
      name:
        type: string
      orgsetting:
        $ref: "#/definitions/OrgSetting"
      personalsetting:
        $ref: "#/definitions/PersonalSettings"
      picture_url:
        type: string
      slug:
        type: string
      website:
        type: string
    required:
      - _id
  Source:
    properties:
      _id:
        type: string
      custom_rss_feed:
        type: boolean
      enabled:
        type: boolean
      logo_url:
        type: string
      name:
        type: string
      rss_publisher:
        type: string
      url:
        type: string
    required:
      - _id
      - name
      - url
      - rss_publisher
  SourceInput:
    properties:
      custom_rss_feed:
        type: boolean
      enabled:
        type: boolean
      logo_url:
        type: string
      name:
        type: string
      rss_publisher:
        type: string
      url:
        type: string
    required:
      - name
      - url
      - rss_publisher
  Sourceresponse:
    properties:
      source:
        $ref: "#/definitions/Source"
  Sources:
    properties:
      sources:
        items:
          $ref: "#/definitions/Source"
        type: array
  TruncatedMember:
    properties:
      _id:
        type: string
      added_on:
        type: string
      email:
        type: string
      first_name:
        type: string
      last_name:
        type: string
      picture_url:
        type: string
  User:
    properties:
      _id:
        type: string
      company:
        type: string
      first_name:
        type: string
      last_name:
        type: string
      name:
        type: string
      new_user:
        type: boolean
      picture_url:
        type: string
      plan_expired:
        type: boolean
      plan_id:
        type: string
      plan_setup:
        type: boolean
      plan_status:
        type: string
      plan_stripe:
        type: boolean
      show_tour:
        type: boolean
      slug:
        type: string
      user_type:
        type: string
      username:
        type: string
      website:
        type: string
    required:
      - _id
