{
  "swagger": "2.0",
  "info": {
    "version": "v2",
    "title": "Passle Client API",
    "description": "The Passle client API is a REST API which allows you to pull your content from the Passle platform.\n\nThe API has a 5 second cache, so the same API call made within 5 seconds will return exactly the same data. The data returned from the API is in JSON format by default.\n\nIn order to use the API you will need an API key. Please get in touch with your contact at Passle if you do not know what your API key is.\n\nThe root URL for the Passle Client API is: https://clientwebapi.passle.net"
  },
  "host": "clientwebapi.passle.net",
  "schemes": [
    "https"
  ],
  "paths": {
    "/api/v2/archive": {
      "get": {
        "tags": [
          "Archive"
        ],
        "description": "Returns a list of data about the number of posts published per month.\n## Response:\nA list of archive data, with the following schema:\n```json\n{\n  \"Year\": \"The year as a 4 digit integer.\",\n  \"Month\": \"The month as a 1 or 2 digit integer, between 1 and 12. Values are not prefixed with a zero.\",\n  \"NumberOfPosts\": \"An integer showing the number of posts published in that month.\"\n}\n```",
        "operationId": "Get archive",
        "consumes": [],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "APIKey",
            "in": "header",
            "description": "Your client API key.",
            "required": true,
            "schema": {
              "type": "string",
              "example": "123abcd-XXXXXXX-XXXXXXX"
            }
          },
          {
            "name": "PassleShortcode",
            "in": "query",
            "description": "The shortcode of the Passle for which you'd like to see archive data.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "The data was returned successfully.",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/GetArchiveResponseModel"
              }
            },
            "examples": {
              "application/json": {
                "Archive": [
                  {
                    "Year": 2021,
                    "Month": 1,
                    "NumberOfPosts": 12
                  },
                  {
                    "Year": 2021,
                    "Month": 2,
                    "NumberOfPosts": 18
                  },
                  {
                    "Year": 2021,
                    "Month": 3,
                    "NumberOfPosts": 27
                  },
                  {
                    "Year": 2021,
                    "Month": 4,
                    "NumberOfPosts": 41
                  },
                  {
                    "Year": 2021,
                    "Month": 5,
                    "NumberOfPosts": 59
                  },
                  {
                    "Year": 2021,
                    "Month": 6,
                    "NumberOfPosts": 83
                  }
                ]
              }
            }
          },
          "400": {
            "description": "The request parameters are incorrect."
          },
          "403": {
            "description": "The API Key is incorrect."
          },
          "500": {
            "description": "The server couldn't process the request."
          }
        }
      }
    },
    "/api/v2/client-connect/subscriber": {
      "get": {
        "tags": [
          "Client Connect"
        ],
        "description": "Returns details about an existing client connect subscriber with a given email address\n## Response:\nUsed to get an existing client connect subscriber's details\n```json\n{\n  \"FirstName\": \"The subscriber's first name.\",\n  \"LastName\": \"The subscriber's last name.\",\n  \"EmailAddress\": \"The subscriber's email address.\",\n  \"FollowedPassles\": \"A list of passle shortcodes and titles that the subscriber has subscribed to.\",\n  \"FollowedPeople\": \"A list of author shortcodes and names that the subscriber has subscribed to.\",\n  \"FollowedTags\": \"A list of tags that the subscriber has subscribed to.\",\n  \"Company\": \"The subscriber's company.\",\n  \"HasOptedIntoMarketingComms\": \"A boolean value showing whether the subscriber has opted into being contacted with marketing communications.\",\n  \"HasAcceptedTandCs\": \"A boolean value showing whether the subscriber has accepted the terms and conditions.\",\n  \"SubscriberNotificationFrequency\": \"A string showing the frequency of Client Connect emails for this subscriber. Values are 'Unknown', 'Daily', 'Weekly', or 'Monthly.\"\n}\n```",
        "operationId": "Get client connect subscriber details",
        "consumes": [],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "APIKey",
            "in": "header",
            "description": "Your client API key.",
            "required": true,
            "schema": {
              "type": "string",
              "example": "123abcd-XXXXXXX-XXXXXXX"
            }
          },
          {
            "name": "EmailAddress",
            "in": "query",
            "description": "The email address of the client connect subscriber you want to get details for. Email address parameter must be URL encoded.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "The subscriber details were returned successfully.",
            "schema": {
              "$ref": "#/definitions/ClientConnectGetSubscriberResponseModel"
            }
          },
          "400": {
            "description": "The request parameters are incorrect."
          },
          "403": {
            "description": "The API Key is incorrect."
          },
          "500": {
            "description": "The server couldn't process the request."
          }
        }
      }
    },
    "/api/v2/client-connect/subscribe": {
      "post": {
        "tags": [
          "Client Connect"
        ],
        "description": "Creates a new client connect subscriber\n## Response:\nUsed to create a new client connect subscriber\n```json\n{\n  \"Success\": \"Boolean\",\n  \"Message\": \"String\"\n}\n```",
        "operationId": "Add client connect subscriber",
        "consumes": [
          "application/json",
          "text/json",
          "text/html",
          "application/xml",
          "text/xml",
          "application/x-www-form-urlencoded"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "APIKey",
            "in": "header",
            "description": "Your client API key.",
            "required": true,
            "schema": {
              "type": "string",
              "example": "123abcd-XXXXXXX-XXXXXXX"
            }
          },
          {
            "name": "model",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ClientConnectCreateSubscriberModel"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The subscriber was added successfully.",
            "schema": {
              "$ref": "#/definitions/ClientConnectCreateSubscriberResponseModel"
            }
          },
          "400": {
            "description": "The request parameters are incorrect."
          },
          "403": {
            "description": "The API Key is incorrect."
          },
          "500": {
            "description": "The server couldn't process the request."
          }
        }
      }
    },
    "/api/v2/client-connect/unsubscribe": {
      "patch": {
        "tags": [
          "Client Connect"
        ],
        "description": "Returns the result of the client group unsubscribe operation\n## Response:\nUsed to unsubscribe a client group subscriber from an entire client group or from specific topics\n```json\n{\n  \"Success\": \"Boolean\",\n  \"Message\": \"String\"\n}\n```",
        "operationId": "Unsubscribe",
        "consumes": [
          "application/json",
          "text/json",
          "text/html",
          "application/xml",
          "text/xml",
          "application/x-www-form-urlencoded"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "APIKey",
            "in": "header",
            "description": "Your client API key.",
            "required": true,
            "schema": {
              "type": "string",
              "example": "123abcd-XXXXXXX-XXXXXXX"
            }
          },
          {
            "name": "model",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ClientConnectUnsubscribeModel"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The subscriber was unsubscribed successfully.",
            "schema": {
              "$ref": "#/definitions/ClientConnectUnsubscribeResponseModel"
            }
          },
          "400": {
            "description": "The request parameters are incorrect."
          },
          "403": {
            "description": "The API Key is incorrect."
          },
          "500": {
            "description": "The server couldn't process the request."
          }
        }
      }
    },
    "/api/v2/client-connect/update-subscriber": {
      "patch": {
        "tags": [
          "Client Connect"
        ],
        "description": "Updates the details of an existing client connect subscriber\n## Response:\nUsed to update the details of a client connect subscriber\n```json\n{\n  \"Success\": \"Boolean\",\n  \"Message\": \"String\"\n}\n```",
        "operationId": "Update subscriber",
        "consumes": [
          "application/json",
          "text/json",
          "text/html",
          "application/xml",
          "text/xml",
          "application/x-www-form-urlencoded"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "APIKey",
            "in": "header",
            "description": "Your client API key.",
            "required": true,
            "schema": {
              "type": "string",
              "example": "123abcd-XXXXXXX-XXXXXXX"
            }
          },
          {
            "name": "model",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ClientConnectUpdateSubscriberModel"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The subscriber was updated successfully.",
            "schema": {
              "$ref": "#/definitions/ClientConnectUnsubscribeResponseModel"
            }
          },
          "400": {
            "description": "The request parameters are incorrect."
          },
          "403": {
            "description": "The API Key is incorrect."
          },
          "500": {
            "description": "The server couldn't process the request."
          }
        }
      }
    },
    "/api/v2/stats/subscribers": {
      "get": {
        "tags": [
          "SubscriberStats"
        ],
        "description": "Returns a list of data about all passle and author subscribers within a client.\n## Response:\nThe list of subscribers that matched your query. Each subscriber will have the following schema:\n```json\n{\n  \"FirstName\": \"The subscriber's first name.\",\n  \"LastName\": \"The subscriber's last name.\",\n  \"EmailAddress\": \"The subscriber's email address.\",\n  \"HasOptedIntoMarketingComms\": \"A boolean value showing whether the subscriber has opted into being contacted with marketing communications.\",\n  \"HasAcceptedTandCs\": \"A boolean value showing whether the subscriber has accepted the terms and conditions.\",\n  \"FollowedPassles\": \"A list of passle shortcodes and titles that the subscriber has subscribed to.\",\n  \"FollowedPeople\": \"A list of author shortcodes and names that the subscriber has subscribed to.\",\n  \"FollowedTags\": \"A list of tags that the subscriber has subscribed to.\",\n  \"IsSubscribed\": \"A boolean value showing whether the subscriber is still subscribed or not.\",\n  \"UnsubscribedDate\": \"The datetime value showing when the subscriber unsubscribed, or null if they're still subscribed.\",\n  \"Company\": \"The subscriber's company.\"\n}\n```",
        "operationId": "Get subscriber stats",
        "consumes": [],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "APIKey",
            "in": "header",
            "description": "Your client API key.",
            "required": true,
            "schema": {
              "type": "string",
              "example": "123abcd-XXXXXXX-XXXXXXX"
            }
          },
          {
            "name": "PageNumber",
            "in": "query",
            "description": "The page number of results to show. If the total number of results is larger than the page size (or the number of items per page in the request) then the results will be paginated and you should increment the value of `PageNumber` to see all the results.",
            "required": false,
            "type": "integer",
            "format": "int32",
            "maximum": 10000,
            "minimum": 1
          },
          {
            "name": "ItemsPerPage",
            "in": "query",
            "description": "The number of results to return per page. If the total number of results is larger than this value then your results will be paginated and you should increment the value of `PageNumber` to see all the results.",
            "required": false,
            "type": "integer",
            "format": "int32",
            "maximum": 1000,
            "minimum": 1
          }
        ],
        "responses": {
          "200": {
            "description": "The data was returned successfully.",
            "schema": {
              "$ref": "#/definitions/ClientConnectStatsResponseModel"
            },
            "examples": {
              "application/json": {
                "SubscriberStats": [
                  {
                    "FirstName": "Jane",
                    "LastName": "Doe",
                    "EmailAddress": "JaneDoe@passle.net",
                    "HasOptedIntoMarketingComms": true,
                    "HasAcceptedTandCs": true,
                    "FollowedPassles": [
                      {
                        "Shortcode": "vp3jsh",
                        "Title": "Passle Latest Features"
                      }
                    ],
                    "FollowedPeople": [],
                    "FollowedTags": [
                      "Passle",
                      "API"
                    ],
                    "IsSubscribed": true,
                    "UnsubscribedDate": null,
                    "Company": null
                  }
                ],
                "TotalSubscriberCount": 1,
                "PageNumber": 1,
                "PageSize": 20
              }
            }
          },
          "400": {
            "description": "The request parameters are incorrect."
          },
          "403": {
            "description": "The API Key is incorrect."
          },
          "500": {
            "description": "The server couldn't process the request."
          }
        }
      }
    },
    "/api/v2/stats/subscriberpostreads": {
      "get": {
        "tags": [
          "SubscriberStats"
        ],
        "description": "Returns a list of data about post interactions for all subscribers within a client group.\n## Response:\nThe list of subscriber post read stats that matched your query. Each result will have the following schema:\n```json\n{\n  \"SubscriberId\": \"The id of the subscriber.\",\n  \"SubscriberEmail\": \"The subscriber's email address.\",\n  \"SubscriberName\": \"The subscriber's full name.\",\n  \"SubscribedDate\": \"A string showing the datetime that this subscriber first subscribed to this client group.\",\n  \"SubscriberNotificationFrequency\": \"A string showing the frequency of Client Connect emails for this subscriber. Values are 'Unknown', 'Daily', 'Weekly', or 'Monthly.\",\n  \"SubscriberIsPassleUser\": \"A boolean value showing whether this subscriber is a Passle user or not.\",\n  \"SubscriberNumAuthorsFollowed\": \"An integer showing the number of authors that this subscriber has subscribed to.\",\n  \"SubscriberAuthorsFollowed\": \"A comma-separated string of the names of the authors that this subscriber has subscribed to.\",\n  \"SubscriberNumPasslesFollowed\": \"An integer showing the number of passles that this subscriber has subscribed to.\",\n  \"SubscriberPasslesFollowed\": \"A comma-separated string of the titles of the passles that this subscriber has subscribed to.\",\n  \"PostId\": \"The id of the post.\",\n  \"PostCreatedDate\": \"A string showing the datetime that the post was created.\",\n  \"PostLastPublishedDate\": \"A string showing the datetime that the post was last published.\",\n  \"PostUrl\": \"The url of the post.\",\n  \"PostTitle\": \"The title of the post.\",\n  \"PostTags\": \"A comma-separated string of the post's tags.\",\n  \"PostAuthors\": \"A comma-separated string of the full names of the main authors and co-authors of this post.\",\n  \"PostPassleId\": \"The id of the passle that this post was published to.\",\n  \"PostPassleTitle\": \"The title of the passle that this post was published to.\",\n  \"ClientGroupId\": \"The id of the client group that this subscriber has subscribed to.\",\n  \"ClientGroupTitle\": \"The title of the client group that this subscriber has subscribed to.\",\n  \"EmailId\": \"A string showing the unique id for the Client Connect email that was sent to the subscriber containing this post.\",\n  \"EmailSentDate\": \"A string showing the time that the Client Connect email was sent to the subscriber.\",\n  \"PostClickedDate\": \"A string showing the time the subscriber first clicked on through to this post from the Client Connect emails. The string is empty if the subscriber hasn't yet clicked the link.\",\n  \"ISTATOYSent\": \"A string showing whether the subscriber has shared this post via ISTATOY. Values are 'Yes', 'No', or 'Not applicable', where 'Not applicable' is used when the subscriber is not a Passle user.\"\n}\n```",
        "operationId": "Get subscriber post read stats",
        "consumes": [],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "APIKey",
            "in": "header",
            "description": "Your client API key.",
            "required": true,
            "schema": {
              "type": "string",
              "example": "123abcd-XXXXXXX-XXXXXXX"
            }
          },
          {
            "name": "PageNumber",
            "in": "query",
            "description": "The page number of results to show. If the total number of results is larger than the page size (or the number of items per page in the request) then the results will be paginated and you should increment the value of `PageNumber` to see all the results.",
            "required": false,
            "type": "integer",
            "format": "int32",
            "maximum": 10000,
            "minimum": 1
          },
          {
            "name": "ItemsPerPage",
            "in": "query",
            "description": "The number of results to return per page. If the total number of results is larger than this value then your results will be paginated and you should increment the value of `PageNumber` to see all the results.",
            "required": false,
            "type": "integer",
            "format": "int32",
            "maximum": 10000,
            "minimum": 1
          },
          {
            "name": "SubscriberId",
            "in": "query",
            "description": "The userId or shortcode of a specific subscriber for whom you'd like to see data. If this is omitted or invalid, the results will show data for all subscribers; if a valid subscriber id or shortcode is given, only results for that subscriber will be returned.",
            "required": false,
            "type": "string"
          },
          {
            "name": "EmailDateFrom",
            "in": "query",
            "description": "A datetime value indicating the starting date for filtering data. Only records with emails sent on or after this date will be included. If omitted, data will be returned up to the current date. Acceptable formats: 2021-03-21T18:37:45.488Z or 2021-03-21",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "EmailDateTo",
            "in": "query",
            "description": "A datetime value indicating the ending date for filtering data. Only records with emails sent before this date will be included. If omitted, data from the earliest record onwards will be returned. Acceptable formats: 2021-03-21T18:37:45.488Z or 2021-03-21",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "TagFilter",
            "in": "query",
            "description": "A single tag, or a comma-separated list of tags, used to filter results. Only posts whose tags include any of the listed tags will be returned (case insensitive).",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "The data was returned successfully.",
            "schema": {
              "$ref": "#/definitions/ClientConnectSubscriberPostReadStatsResponseModel"
            },
            "examples": {
              "application/json": {
                "SubscriberPostReadStats": [
                  {
                    "SubscriberId": "60f550ecab00d755d4f95a4d",
                    "SubscriberEmail": "JaneDoe@passle.net",
                    "SubscriberName": "Doe",
                    "SubscribedDate": "2021-03-04T18:16:45.652Z",
                    "SubscriberNotificationFrequency": "Weekly",
                    "SubscriberIsPassleUser": false,
                    "SubscriberNumAuthorsFollowed": 1,
                    "SubscriberAuthorsFollowed": "Clive Passle",
                    "SubscriberNumPasslesFollowed": 1,
                    "SubscriberPasslesFollowed": "Passle Latest Features",
                    "PostId": "60f55102ab00d755d4f95a4e",
                    "PostCreatedDate": "2021-05-29T14:47:34.253Z",
                    "PostLastPublishedDate": "2021-05-29T16:23:17.273Z",
                    "PostUrl": "https://blog.passle.net/post/102gz2l/2021-uk-legal-thought-leadership-index-explosion-in-thought-leadership-for-the",
                    "PostTitle": "2021 UK Legal Thought Leadership Index - Explosion in thought leadership for the country's top law firms",
                    "PostTags": "Passle, API",
                    "PostAuthors": "Clive Passle",
                    "PostPassleId": "60f55109ab00d755d4f95a4f",
                    "PostPassleTitle": "Passle Latest Features",
                    "ClientGroupId": "60f55110ab00d755d4f95a50",
                    "ClientGroupTitle": "Clive Passle & Co",
                    "EmailId": "60f55117ab00d755d4f95a51",
                    "EmailSentDate": "2021-05-30T11:0:01.385Z",
                    "PostClickedDate": "2021-06-01T08:14:35.723Z",
                    "ISTATOYSent": "Not applicable"
                  }
                ],
                "TotalRows": 1,
                "TotalPostReadStatsCount": 1,
                "PageNumber": 1,
                "PageSize": 20,
                "ClientGroupIds": "60f55123ab00d755d4f95a53",
                "SubscriberId": "60f5511dab00d755d4f95a52"
              }
            }
          },
          "400": {
            "description": "The request parameters are incorrect."
          },
          "403": {
            "description": "The API Key is incorrect."
          },
          "500": {
            "description": "The server couldn't process the request."
          }
        }
      }
    },
    "/api/v2/stats/client": {
      "get": {
        "tags": [
          "ClientStats"
        ],
        "description": "Returns an overview about the number of posts published and viewed for a client.\n## Response:\nA single item showing information for the client, with the following schema:\n```json\n{\n  \"ClientName\": \"The client's name.\",\n  \"PercentageUsersCreatingContent\": \"A decimal between 0 and 100 showing the percentage of all users who have published at least one post.\",\n  \"NumberOfPostsToDate\": \"The total number of posts published within the given dates.\",\n  \"NumberOfPostViewsToDate\": \"The total number of views across all posts within the given dates.\"\n}\n```",
        "operationId": "Get client stats",
        "consumes": [],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "APIKey",
            "in": "header",
            "description": "Your client API key.",
            "required": true,
            "schema": {
              "type": "string",
              "example": "123abcd-XXXXXXX-XXXXXXX"
            }
          },
          {
            "name": "DateFrom",
            "in": "query",
            "description": "A datetime value that will exclude data about post views and posts published before this date. If omitted, data will be returned from the date the first post was published. Acceptable formats: 2021-03-21T18:37:45.488Z or 2021-03-21",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "DateTo",
            "in": "query",
            "description": "A datetime value that will exclude data about post views and posts published after this date. If omitted, data will be returned up to the current date. Acceptable formats: 2021-03-21T18:37:45.488Z or 2021-03-21",
            "required": false,
            "type": "string",
            "format": "date-time"
          }
        ],
        "responses": {
          "200": {
            "description": "The data was returned successfully.",
            "schema": {
              "$ref": "#/definitions/ClientStatsResponseModel"
            },
            "examples": {
              "application/json": {
                "ClientName": "Clive Passle & Co",
                "PercentageUsersCreatingContent": 62.7,
                "NumberOfPostsToDate": 126,
                "NumberOfPostViewsToDate": 2261
              }
            }
          },
          "400": {
            "description": "The request parameters are incorrect."
          },
          "403": {
            "description": "The API Key is incorrect."
          },
          "500": {
            "description": "The server couldn't process the request."
          }
        }
      }
    },
    "/api/v2/passles": {
      "get": {
        "tags": [
          "Passles"
        ],
        "description": "Returns a list of all your passles.\n## Response:\nThe list of passles within your client. Each passle will have the following schema:\n```json\n{\n  \"PassleShortcode\": \"The shortcode for the passle.\",\n  \"PassleTitle\": \"The title of the passle.\"\n}\n```",
        "operationId": "Get Passles",
        "consumes": [],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "APIKey",
            "in": "header",
            "description": "Your client API key.",
            "required": true,
            "schema": {
              "type": "string",
              "example": "123abcd-XXXXXXX-XXXXXXX"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The data was returned successfully.",
            "schema": {
              "$ref": "#/definitions/IGetPasslesResponseModel"
            },
            "examples": {
              "application/json": {
                "Passles": [
                  {
                    "PassleShortcode": "3ha01",
                    "PassleTitle": "Technology Insights"
                  },
                  {
                    "PassleShortcode": "3ha02",
                    "PassleTitle": "Marketing Tips"
                  }
                ]
              }
            }
          },
          "400": {
            "description": "The request parameters are incorrect."
          },
          "403": {
            "description": "The API Key is incorrect."
          },
          "500": {
            "description": "The server couldn't process the request."
          }
        }
      }
    },
    "/api/v2/passlesync/people": {
      "get": {
        "tags": [
          "PassleSync"
        ],
        "description": "Returns a list of data about the people with at least one published post within a specified passle.\n## Response:\nThe list of people that matched your query. Each post will have the following schema:\n```json\n{\n  \"TotalCount\": \"The total number of items returned.\",\n  \"PageNumber\": \"The page number of items shown.\",\n  \"PageSize\": \"The total number of items in a page.\",\n  \"People\": \"An array of items matching the query.\"\n}\n```",
        "operationId": "Get people with details",
        "consumes": [],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "APIKey",
            "in": "header",
            "description": "Your client API key.",
            "required": true,
            "schema": {
              "type": "string",
              "example": "123abcd-XXXXXXX-XXXXXXX"
            }
          },
          {
            "name": "PassleShortcode",
            "in": "query",
            "description": "The shortcode of the passle for which you'd like to see people's data. This is a required parameter unless `PersonShortcode` is given.",
            "required": false,
            "type": "string"
          },
          {
            "name": "PersonShortcode",
            "in": "query",
            "description": "A comma-separated list of person shortcodes for which you'd like to see data. This is a required parameter unless `PassleShortcode` is given.",
            "required": false,
            "type": "string"
          },
          {
            "name": "PageNumber",
            "in": "query",
            "description": "The page number of results to show. If the total number of results is larger than the page size (or the number of items per page in the request) then the results will be paginated and you should increment the value of `PageNumber` to see all the results.",
            "required": false,
            "type": "integer",
            "format": "int32",
            "maximum": 10000,
            "minimum": 1
          },
          {
            "name": "ItemsPerPage",
            "in": "query",
            "description": "The number of results to return per page. If the total number of results is larger than this value then your results will be paginated and you should increment the value of `PageNumber` to see all the results.",
            "required": false,
            "type": "integer",
            "format": "int32",
            "maximum": 100,
            "minimum": 1
          },
          {
            "name": "Image.Width",
            "in": "query",
            "description": "Width in pixels of the image which is returned. Value must be between 0 and 2000. 0 will leave the image at its original width, except when the crop property is set to false, in which case the width may change to fit in and preserve the image's original aspect ratio. Images cropped in Passle will have a 16:9 aspect ratio.",
            "required": false,
            "type": "integer",
            "format": "int32",
            "default": 200,
            "maximum": 2000,
            "minimum": 0
          },
          {
            "name": "Image.Height",
            "in": "query",
            "description": "Height in pixels of the image which is returned. Value must be between 0 and 2000. 0 will leave the image at its original height, except when the crop property is set to false, in which case the height may change to fit in and preserve the image's original aspect ratio. Images cropped in Passle will have a 16:9 aspect ratio.",
            "required": false,
            "type": "integer",
            "format": "int32",
            "default": 200,
            "maximum": 2000,
            "minimum": 0
          },
          {
            "name": "Image.Crop",
            "in": "query",
            "description": "Determines whether the image should be cropped in order to fit the specified area. If false or a dimension is set to 0, the original image uploaded will be resized to fit without cropping (i.e. it might be smaller than the specified dimension in order to fit). If true, the image will be cropped to fit the non-zero dimensions provided.",
            "required": false,
            "type": "boolean",
            "default": false
          }
        ],
        "responses": {
          "200": {
            "description": "The data was returned successfully.",
            "schema": {
              "$ref": "#/definitions/IPassleSyncGetPeopleResponseModel"
            },
            "examples": {
              "application/json": {
                "TotalCount": 1,
                "PageNumber": 1,
                "PageSize": 20,
                "People": [
                  {
                    "Shortcode": "vp3a46",
                    "ProfileUrl": "https://www.passle.net/u/Clive+Passle",
                    "Name": "Clive Passle",
                    "SubscribeLink": "https://www.passle.net/subscribe/Clive+Passle",
                    "AvatarUrl": "https://img.passle.net/avatars/Clive+Passle.jpg",
                    "RoleInfo": "Blogger at Passle",
                    "Description": "Hi, my name's Clive and I'm the premier blogger at Passle - Welcome to my bio!",
                    "EmailAddress": "clive@passle.net",
                    "PublicEmailAddress": "clive@passle.net",
                    "PrimaryEmailAddress": "clive@passle.net",
                    "PhoneNumber": "01234 567 891",
                    "LinkedInProfileLink": "www.linkedin.com/in/passle",
                    "FacebookProfileLink": "www.facebook.com/passle",
                    "TwitterScreenName": "passle",
                    "XingProfileLink": "www.xing.com/profile/passle",
                    "SkypeProfileLink": "passle",
                    "VimeoProfileLink": "www.vimeo.com/passle",
                    "YouTubeProfileLink": "www.youtube.com/user/passle",
                    "StumbleUponProfileLink": "www.stumbleupon.com/stumbler/passle",
                    "PinterestProfileLink": "www.pinterest.com/passle",
                    "InstagramProfileLink": "www.instagram.com/passle",
                    "PersonalLinks": [
                      {
                        "Title": "My Website",
                        "Url": "https://www.passle.net"
                      }
                    ],
                    "LocationDetail": "Oxford",
                    "LocationCountry": "United Kingdom",
                    "TagLineCompany": "Passle: the professional services marketing platform"
                  }
                ]
              }
            }
          },
          "400": {
            "description": "The request parameters are incorrect."
          },
          "403": {
            "description": "The API Key is incorrect."
          },
          "500": {
            "description": "The server couldn't process the request."
          }
        }
      }
    },
    "/api/v2/passlesync/people/{PersonShortcode}": {
      "get": {
        "tags": [
          "PassleSync"
        ],
        "description": "Returns a list of data about the people within a specified passle.\n## Response:\nThe list of people that matched your query. Each post will have the following schema:\n```json\n{\n  \"Shortcode\": \"The shortcode for the person.\",\n  \"ProfileUrl\": \"The url for the person's profile.\",\n  \"Name\": \"The person's full name.\",\n  \"SubscribeLink\": \"The url to the subscribe page for this person.\",\n  \"AvatarUrl\": \"The url for this person's avatar image.\",\n  \"RoleInfo\": \"The tagline for this person.\",\n  \"Description\": \"The profile description for this person.\",\n  \"EmailAddress\": \"The person's email address. Obsolete. Please use PublicEmailAddress or PrimaryEmailAddress instead.\",\n  \"PublicEmailAddress\": \"The person's email address set as public email on their profile.\",\n  \"PrimaryEmailAddress\": \"The person's email address that is set as primary. Can be used as an identifier.\",\n  \"PhoneNumber\": \"The person's phone number.\",\n  \"LinkedInProfileLink\": \"The url to the person's LinkedIn profile.\",\n  \"FacebookProfileLink\": \"The url to the person's LinkedIn profile.\",\n  \"TwitterScreenName\": \"The person's Twitter screen name.\",\n  \"XingProfileLink\": \"The url to the person's Xing profile.\",\n  \"SkypeProfileLink\": \"The url to the person's Skype profile.\",\n  \"VimeoProfileLink\": \"The url to the person's Vimeo profile.\",\n  \"YouTubeProfileLink\": \"The url to the person's YouTube profile.\",\n  \"StumbleUponProfileLink\": \"The url to the person's StumbleUpon profile.\",\n  \"PinterestProfileLink\": \"The url to the person's Pinterest profile.\",\n  \"InstagramProfileLink\": \"The url to the person's Instagram profile.\",\n  \"PersonalLinks\": \"A list of titles and urls for any other links the person may have added to their profile.\",\n  \"LocationDetail\": \"The city/region the person is in.\",\n  \"LocationCountry\": \"The country the person is in.\",\n  \"TagLineCompany\": \"The tagline for the client the person is in.\"\n}\n```",
        "operationId": "Get person with details",
        "consumes": [],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "APIKey",
            "in": "header",
            "description": "Your client API key.",
            "required": true,
            "schema": {
              "type": "string",
              "example": "123abcd-XXXXXXX-XXXXXXX"
            }
          },
          {
            "name": "PersonShortcode",
            "in": "path",
            "description": "The shortcode of the person whose data you'd like to see.",
            "required": true,
            "type": "string"
          },
          {
            "name": "Image.Width",
            "in": "query",
            "description": "Width in pixels of the image which is returned. Value must be between 0 and 2000. 0 will leave the image at its original width, except when the crop property is set to false, in which case the width may change to fit in and preserve the image's original aspect ratio. Images cropped in Passle will have a 16:9 aspect ratio.",
            "required": false,
            "type": "integer",
            "format": "int32",
            "default": 200,
            "maximum": 2000,
            "minimum": 0
          },
          {
            "name": "Image.Height",
            "in": "query",
            "description": "Height in pixels of the image which is returned. Value must be between 0 and 2000. 0 will leave the image at its original height, except when the crop property is set to false, in which case the height may change to fit in and preserve the image's original aspect ratio. Images cropped in Passle will have a 16:9 aspect ratio.",
            "required": false,
            "type": "integer",
            "format": "int32",
            "default": 200,
            "maximum": 2000,
            "minimum": 0
          },
          {
            "name": "Image.Crop",
            "in": "query",
            "description": "Determines whether the image should be cropped in order to fit the specified area. If false or a dimension is set to 0, the original image uploaded will be resized to fit without cropping (i.e. it might be smaller than the specified dimension in order to fit). If true, the image will be cropped to fit the non-zero dimensions provided.",
            "required": false,
            "type": "boolean",
            "default": false
          }
        ],
        "responses": {
          "200": {
            "description": "The data was returned successfully.",
            "schema": {
              "$ref": "#/definitions/PersonWithDescriptionModel"
            },
            "examples": {
              "application/json": {
                "TotalCount": 1,
                "PageNumber": 1,
                "PageSize": 20,
                "People": [
                  {
                    "Shortcode": "vp3a46",
                    "ProfileUrl": "https://www.passle.net/u/Clive+Passle",
                    "Name": "Clive Passle",
                    "SubscribeLink": "https://www.passle.net/subscribe/Clive+Passle",
                    "AvatarUrl": "https://img.passle.net/avatars/Clive+Passle.jpg",
                    "RoleInfo": "Blogger at Passle",
                    "Description": "Hi, my name's Clive and I'm the premier blogger at Passle - Welcome to my bio!",
                    "EmailAddress": "clive@passle.net",
                    "PublicEmailAddress": "clive@passle.net",
                    "PrimaryEmailAddress": "clive@passle.net",
                    "PhoneNumber": "01234 567 891",
                    "LinkedInProfileLink": "www.linkedin.com/in/passle",
                    "FacebookProfileLink": "www.facebook.com/passle",
                    "TwitterScreenName": "passle",
                    "XingProfileLink": "www.xing.com/profile/passle",
                    "SkypeProfileLink": "passle",
                    "VimeoProfileLink": "www.vimeo.com/passle",
                    "YouTubeProfileLink": "www.youtube.com/user/passle",
                    "StumbleUponProfileLink": "www.stumbleupon.com/stumbler/passle",
                    "PinterestProfileLink": "www.pinterest.com/passle",
                    "InstagramProfileLink": "www.instagram.com/passle",
                    "PersonalLinks": [
                      {
                        "Title": "My Website",
                        "Url": "https://www.passle.net"
                      }
                    ],
                    "LocationDetail": "Oxford",
                    "LocationCountry": "United Kingdom",
                    "TagLineCompany": "Passle: the professional services marketing platform"
                  }
                ]
              }
            }
          },
          "400": {
            "description": "The request parameters are incorrect."
          },
          "403": {
            "description": "The API Key is incorrect."
          },
          "500": {
            "description": "The server couldn't process the request."
          }
        }
      }
    },
    "/api/v2/passlesync/posts": {
      "get": {
        "tags": [
          "PassleSync"
        ],
        "description": "Returns a list of data about all posts that have been published within a specific Passle. This endpoint is recommended for Remote-Hosting Integrations.\n## Response:\nThe list of posts that matched your query. Each post will have the following schema:\n```json\n{\n  \"PostShortcode\": \"The shortcode for the post.\",\n  \"PassleShortcode\": \"The shortcode for the passle the post is published in.\",\n  \"PostUrl\": \"The url for the post.\",\n  \"PostTitle\": \"The title of the post.\",\n  \"Authors\": \"A list containing the details of the primary authors of this post.\",\n  \"CoAuthors\": \"A list containing the details of the co-authors of this post.\",\n  \"ShareViews\": \"A list showing how often the post has been shared via different social media channels (LinkedIn, Twitter, Facebook, Xing, Email).\",\n  \"ContentTextSnippet\": \"The first few lines of the post.\",\n  \"PublishedDate\": \"A datetime value showing when this post was published.\",\n  \"Tags\": \"A list of tags for this post.\",\n  \"FeaturedItemMediaType\": \"An integer showing what type of media the post's featured media is. 0 - None; 1 - Image; 2 - Video; 3 - Audio; 4 - Embedded link / item; 5 - Font; 6 - Document.\",\n  \"FeaturedItemEmbedType\": \"An integer showing what type of embed the post's embedded item is, if the featured media is of type '4 - Embedded link / item'. 0 - None; 1 - Photo; 2 - Video; 3 - Link; 4 - Rich.\",\n  \"FeaturedItemEmbedProvider\": \"A string showing what provider the embedded item came from, if the featured media is of type '4 - Embedded link / item'.\",\n  \"ImageUrl\": \"The url for the post's featured media.\",\n  \"TotalShares\": \"An integer showing how many times this post has been shared.\",\n  \"IsRepost\": \"A boolean value showing whether this post is a repost of an original post.\",\n  \"EstimatedReadTimeInSeconds\": \"An integer showing the estimated time to read the post, in seconds.\",\n  \"TotalLikes\": \"An integer showing how many times the post has been liked.\",\n  \"OpensInNewTab\": \"A boolean value showing if the post should open in a new tab.\",\n  \"MetaData\": \"The set of SEO metadata for this post.\",\n  \"Language\": \"An HTML ISO Language code that corresponds to the language of the post content.\",\n  \"AvailableLanguages\": \"The set of HTML ISO Language codes that correspond to the available languages this post is written in.\",\n  \"Translations\": \"The post content, written in different languages that this post is available in.\",\n  \"PostSlug\": \"A string value generated from a post title which can be included in a post url structure.\",\n  \"IsExternal\": \"A boolean value indicating if a post is external.\",\n  \"PostContentHtml\": \"The html content of this post.\",\n  \"FeaturedItemHtml\": \"The html content for the post's featured media.\",\n  \"FeaturedItemPosition\": \"An integer showing where the featured media is shown in the post. Values are: 0 - None; 1 - At the bottom of the post; 2 - At the top of the post; 3 - In the post's header.\",\n  \"QuoteText\": \"The text used in the post's quote.\",\n  \"QuoteUrl\": \"The url for the post's quote.\",\n  \"IsFeaturedOnPasslePage\": \"A boolean showing whether the post is featured on the Passle page.\",\n  \"IsFeaturedOnPostPage\": \"A boolean showing whether the post is featured on the post page.\",\n  \"TagMappings\": \"The list of tag mappings that matched the post.\",\n  \"TagGroups\": \"The list of tag groups that matched the post. If the tag groups module has not been configured, an empty array will be returned.\"\n}\n```",
        "operationId": "Get posts with details",
        "consumes": [],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "APIKey",
            "in": "header",
            "description": "Your client API key.",
            "required": true,
            "schema": {
              "type": "string",
              "example": "123abcd-XXXXXXX-XXXXXXX"
            }
          },
          {
            "name": "PassleShortcode",
            "in": "query",
            "description": "The shortcode of the passle for which you'd like to see post data. This is a required parameter unless `PostShortcode` is given.",
            "required": false,
            "type": "string"
          },
          {
            "name": "PostShortcode",
            "in": "query",
            "description": "A comma-separated list of post shortcodes for which you'd like to see data. This is a required parameter unless `PassleShortcode` is given.",
            "required": false,
            "type": "string"
          },
          {
            "name": "PageNumber",
            "in": "query",
            "description": "The page number of results to show. If the total number of results is larger than the page size (or the number of items per page in the request) then the results will be paginated and you should increment the value of `PageNumber` to see all the results.",
            "required": false,
            "type": "integer",
            "format": "int32",
            "maximum": 10000,
            "minimum": 1
          },
          {
            "name": "ItemsPerPage",
            "in": "query",
            "description": "The number of results to return per page. If the total number of results is larger than this value then your results will be paginated and you should increment the value of `PageNumber` to see all the results.",
            "required": false,
            "type": "integer",
            "format": "int32",
            "maximum": 100,
            "minimum": 1
          },
          {
            "name": "IncludeTagGroups",
            "in": "query",
            "description": "A boolean value that, when set to true, includes data about the tag groups to which each post tag belongs. By default, this option is set to false.",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "IncludeIntegrationTestContent",
            "in": "query",
            "description": "If true, integration test content data will be included in the response only if the API key being used has 'Include Integration Content Test' also enabled. If left unset, the content data will be included depending on the 'Include Integration Content Test' option of the API key.",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "AuthorImage.Width",
            "in": "query",
            "description": "Width in pixels of the image which is returned. Value must be between 0 and 2000. 0 will leave the image at its original width, except when the crop property is set to false, in which case the width may change to fit in and preserve the image's original aspect ratio. Images cropped in Passle will have a 16:9 aspect ratio.",
            "required": false,
            "type": "integer",
            "format": "int32",
            "default": 150,
            "maximum": 2000,
            "minimum": 0
          },
          {
            "name": "AuthorImage.Height",
            "in": "query",
            "description": "Height in pixels of the image which is returned. Value must be between 0 and 2000. 0 will leave the image at its original height, except when the crop property is set to false, in which case the height may change to fit in and preserve the image's original aspect ratio. Images cropped in Passle will have a 16:9 aspect ratio.",
            "required": false,
            "type": "integer",
            "format": "int32",
            "default": 150,
            "maximum": 2000,
            "minimum": 0
          },
          {
            "name": "AuthorImage.Crop",
            "in": "query",
            "description": "Determines whether the image should be cropped in order to fit the specified area. If false or a dimension is set to 0, the original image uploaded will be resized to fit without cropping (i.e. it might be smaller than the specified dimension in order to fit). If true, the image will be cropped to fit the non-zero dimensions provided.",
            "required": false,
            "type": "boolean",
            "default": false
          },
          {
            "name": "FeaturedImage.Width",
            "in": "query",
            "description": "Width in pixels of the image which is returned. Value must be between 0 and 2000. 0 will leave the image at its original width, except when the crop property is set to false, in which case the width may change to fit in and preserve the image's original aspect ratio. Images cropped in Passle will have a 16:9 aspect ratio.",
            "required": false,
            "type": "integer",
            "format": "int32",
            "default": 400,
            "maximum": 2000,
            "minimum": 0
          },
          {
            "name": "FeaturedImage.Height",
            "in": "query",
            "description": "Height in pixels of the image which is returned. Value must be between 0 and 2000. 0 will leave the image at its original height, except when the crop property is set to false, in which case the height may change to fit in and preserve the image's original aspect ratio. Images cropped in Passle will have a 16:9 aspect ratio.",
            "required": false,
            "type": "integer",
            "format": "int32",
            "default": 400,
            "maximum": 2000,
            "minimum": 0
          },
          {
            "name": "FeaturedImage.Crop",
            "in": "query",
            "description": "Determines whether the image should be cropped in order to fit the specified area. If false or a dimension is set to 0, the original image uploaded will be resized to fit without cropping (i.e. it might be smaller than the specified dimension in order to fit). If true, the image will be cropped to fit the non-zero dimensions provided.",
            "required": false,
            "type": "boolean",
            "default": true
          }
        ],
        "responses": {
          "200": {
            "description": "The data was returned successfully.",
            "schema": {
              "$ref": "#/definitions/PassleSyncGetPostsResponseModel"
            },
            "examples": {
              "application/json": {
                "TotalCount": 1,
                "PageNumber": 1,
                "PageSize": 20,
                "Posts": [
                  {
                    "PostShortcode": "vp41k9",
                    "PassleShortcode": "vp3jsh",
                    "PostUrl": "https://blog.passle.net/post/102ivno/driving-better-search-results-for-expert-written-content",
                    "PostTitle": "Driving better search results for expert written content",
                    "Authors": [
                      {
                        "Shortcode": "vp3a46",
                        "Name": "Clive Passle",
                        "EmailAddress": "clive@passle.net",
                        "ImageUrl": "https://img.passle.net/avatars/Clive+Passle.jpg",
                        "ProfileUrl": "https://www.passle.net/u/ClivePassle",
                        "Role": "Blogger at Passle",
                        "TwitterScreenName": "@ClivePassle"
                      }
                    ],
                    "CoAuthors": [],
                    "ShareViews": [
                      {
                        "SocialNetwork": "LinkedIn",
                        "TotalViews": 217
                      },
                      {
                        "SocialNetwork": "Twitter",
                        "TotalViews": 435
                      },
                      {
                        "SocialNetwork": "Facebook",
                        "TotalViews": 127
                      }
                    ],
                    "ContentTextSnippet": "The most important question to ask is: can you do better?",
                    "PublishedDate": "2021-06-30T14:50:20.779+00:00",
                    "Tags": [
                      "Events",
                      "Podcasts"
                    ],
                    "FeaturedItemMediaType": 1,
                    "FeaturedItemEmbedType": 0,
                    "FeaturedItemEmbedProvider": null,
                    "ImageUrl": "https://images.passle.net/fit-in/640x640/Passle/53d0c8edb00e7e0540c9b34b/MediaLibrary/Images/5c7e8efa989b6e0b9033603b/2021-05-25-13-07-15-796-60acf683e5416a0f88b3beaa.jpg",
                    "TotalShares": 139,
                    "IsRepost": false,
                    "EstimatedReadTimeInSeconds": 92,
                    "TotalLikes": 0,
                    "OpensInNewTab": false,
                    "MetaData": {
                      "Title": "Sample Title",
                      "Description": "Sample Description",
                      "Keywords": "Keyword 1,Keyword 2,Keyword 3",
                      "EnforceNoIndex": false
                    },
                    "Language": "en",
                    "AvailableLanguages": [
                      "fr",
                      "es"
                    ],
                    "Translations": null,
                    "PostSlug": "2021-uk-legal-thought-leadership-index-explosion-in-thought-leadership-for-the",
                    "IsExternal": false,
                    "PostContentHtml": "Content written on Passle tends to be digestible, timely, specific, and written by a professional such as a lawyer or consultant. While this content is exactly what clients and prospects find most valuable, it can be lost in the volume of content when search engines try to deliver the right page to the target market.\n                            In this post we'll take a look at how you can use your content to rank for targeted search terms and drive more readers.\n                            In this article, we will focus more on the actual content than on the technical aspects of search engine optimization such as page load speed or domain authority, as the vast majority of these technical points are enabled by Passle's Saas infrastructure. Technical SEO problems are automatically fixed across the Passle network by our team as they are identified or as best practice guidance changes.\n                            Search engine optimization (SEO), is a fuzzy topic. Google and other search engines do not disclose the full details of how they provide the results that they do. Because of that, advice around SEO tends to be varied and complicated, making it hard to see a clear path forward.\n                            We've worked with hundreds of firms and tens of thousands of authors to find out what works. We've simplified our findings here and also included two of our own examples.\n                            The key throughout this whole process is to avoid analysis paralysis. A rough and ready execution of this plan is infinitely more useful than getting stuck on a small detail you are unsure of. \n                            It's also important to note that we are not aiming to be first for every search straight out of the gate. We want to appear on the first page, ideally in the first 5 results, and then build from there.",
                    "FeaturedItemHtml": null,
                    "FeaturedItemPosition": 0,
                    "QuoteText": "Creating winning content can be as simple as seeing what Google is providing, and doing a better job than what already exists",
                    "QuoteUrl": "https://home.passle.net/resources/rank-my-firm/",
                    "IsFeaturedOnPasslePage": false,
                    "IsFeaturedOnPostPage": false,
                    "TagMappings": [
                      {
                        "Tag": "events",
                        "Label": "Events",
                        "Aliases": [
                          "events",
                          "Company meet-ups"
                        ]
                      }
                    ],
                    "TagGroups": [
                      {
                        "Name": "group name",
                        "TagMappings": [
                          {
                            "Tag": "podcast",
                            "Label": "Podcasts",
                            "Aliases": [
                              "events",
                              "company podcasts",
                              "Podcasts & interviews"
                            ]
                          }
                        ]
                      }
                    ],
                    "Tweets": []
                  }
                ]
              }
            }
          },
          "400": {
            "description": "The request parameters are incorrect."
          },
          "403": {
            "description": "The API Key is incorrect."
          },
          "500": {
            "description": "The server couldn't process the request."
          }
        }
      }
    },
    "/api/v2/passlesync/posts/{PostShortcode}": {
      "get": {
        "tags": [
          "PassleSync"
        ],
        "description": "Returns data about a specific post.\n## Response:\nThe post that matched your query, with the following schema:\n```json\n{\n  \"PostShortcode\": \"The shortcode for the post.\",\n  \"PassleShortcode\": \"The shortcode for the passle the post is published in.\",\n  \"PostUrl\": \"The url for the post.\",\n  \"PostTitle\": \"The title of the post.\",\n  \"Authors\": \"A list containing the details of the primary authors of this post.\",\n  \"CoAuthors\": \"A list containing the details of the co-authors of this post.\",\n  \"ShareViews\": \"A list showing how often the post has been shared via different social media channels (LinkedIn, Twitter, Facebook, Xing, Email).\",\n  \"ContentTextSnippet\": \"The first few lines of the post.\",\n  \"PublishedDate\": \"A datetime value showing when this post was published.\",\n  \"Tags\": \"A list of tags for this post.\",\n  \"FeaturedItemMediaType\": \"An integer showing what type of media the post's featured media is. 0 - None; 1 - Image; 2 - Video; 3 - Audio; 4 - Embedded link / item; 5 - Font; 6 - Document.\",\n  \"FeaturedItemEmbedType\": \"An integer showing what type of embed the post's embedded item is, if the featured media is of type '4 - Embedded link / item'. 0 - None; 1 - Photo; 2 - Video; 3 - Link; 4 - Rich.\",\n  \"FeaturedItemEmbedProvider\": \"A string showing what provider the embedded item came from, if the featured media is of type '4 - Embedded link / item'.\",\n  \"ImageUrl\": \"The url for the post's featured media.\",\n  \"TotalShares\": \"An integer showing how many times this post has been shared.\",\n  \"IsRepost\": \"A boolean value showing whether this post is a repost of an original post.\",\n  \"EstimatedReadTimeInSeconds\": \"An integer showing the estimated time to read the post, in seconds.\",\n  \"TotalLikes\": \"An integer showing how many times the post has been liked.\",\n  \"OpensInNewTab\": \"A boolean value showing if the post should open in a new tab.\",\n  \"MetaData\": \"The set of SEO metadata for this post.\",\n  \"Language\": \"An HTML ISO Language code that corresponds to the language of the post content.\",\n  \"AvailableLanguages\": \"The set of HTML ISO Language codes that correspond to the available languages this post is written in.\",\n  \"Translations\": \"The post content, written in different languages that this post is available in.\",\n  \"PostSlug\": \"A string value generated from a post title which can be included in a post url structure.\",\n  \"IsExternal\": \"A boolean value indicating if a post is external.\",\n  \"PostContentHtml\": \"The html content of this post.\",\n  \"FeaturedItemHtml\": \"The html content for the post's featured media.\",\n  \"FeaturedItemPosition\": \"An integer showing where the featured media is shown in the post. Values are: 0 - None; 1 - At the bottom of the post; 2 - At the top of the post; 3 - In the post's header.\",\n  \"QuoteText\": \"The text used in the post's quote.\",\n  \"QuoteUrl\": \"The url for the post's quote.\",\n  \"IsFeaturedOnPasslePage\": \"A boolean showing whether the post is featured on the Passle page.\",\n  \"IsFeaturedOnPostPage\": \"A boolean showing whether the post is featured on the post page.\",\n  \"TagMappings\": \"The list of tag mappings that matched the post.\",\n  \"TagGroups\": \"The list of tag groups that matched the post. If the tag groups module has not been configured, an empty array will be returned.\"\n}\n```",
        "operationId": "Get post with details",
        "consumes": [],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "APIKey",
            "in": "header",
            "description": "Your client API key.",
            "required": true,
            "schema": {
              "type": "string",
              "example": "123abcd-XXXXXXX-XXXXXXX"
            }
          },
          {
            "name": "PostShortcode",
            "in": "path",
            "description": "The shortcode of the post for which you'd like to see data.",
            "required": true,
            "type": "string"
          },
          {
            "name": "IncludeTagGroups",
            "in": "query",
            "description": "A boolean value that, when set to true, includes data about the tag groups to which each post tag belongs. By default, this option is set to false.",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "AuthorImage.Width",
            "in": "query",
            "description": "Width in pixels of the image which is returned. Value must be between 0 and 2000. 0 will leave the image at its original width, except when the crop property is set to false, in which case the width may change to fit in and preserve the image's original aspect ratio. Images cropped in Passle will have a 16:9 aspect ratio.",
            "required": false,
            "type": "integer",
            "format": "int32",
            "default": 150,
            "maximum": 2000,
            "minimum": 0
          },
          {
            "name": "AuthorImage.Height",
            "in": "query",
            "description": "Height in pixels of the image which is returned. Value must be between 0 and 2000. 0 will leave the image at its original height, except when the crop property is set to false, in which case the height may change to fit in and preserve the image's original aspect ratio. Images cropped in Passle will have a 16:9 aspect ratio.",
            "required": false,
            "type": "integer",
            "format": "int32",
            "default": 150,
            "maximum": 2000,
            "minimum": 0
          },
          {
            "name": "AuthorImage.Crop",
            "in": "query",
            "description": "Determines whether the image should be cropped in order to fit the specified area. If false or a dimension is set to 0, the original image uploaded will be resized to fit without cropping (i.e. it might be smaller than the specified dimension in order to fit). If true, the image will be cropped to fit the non-zero dimensions provided.",
            "required": false,
            "type": "boolean",
            "default": false
          },
          {
            "name": "FeaturedImage.Width",
            "in": "query",
            "description": "Width in pixels of the image which is returned. Value must be between 0 and 2000. 0 will leave the image at its original width, except when the crop property is set to false, in which case the width may change to fit in and preserve the image's original aspect ratio. Images cropped in Passle will have a 16:9 aspect ratio.",
            "required": false,
            "type": "integer",
            "format": "int32",
            "default": 400,
            "maximum": 2000,
            "minimum": 0
          },
          {
            "name": "FeaturedImage.Height",
            "in": "query",
            "description": "Height in pixels of the image which is returned. Value must be between 0 and 2000. 0 will leave the image at its original height, except when the crop property is set to false, in which case the height may change to fit in and preserve the image's original aspect ratio. Images cropped in Passle will have a 16:9 aspect ratio.",
            "required": false,
            "type": "integer",
            "format": "int32",
            "default": 400,
            "maximum": 2000,
            "minimum": 0
          },
          {
            "name": "FeaturedImage.Crop",
            "in": "query",
            "description": "Determines whether the image should be cropped in order to fit the specified area. If false or a dimension is set to 0, the original image uploaded will be resized to fit without cropping (i.e. it might be smaller than the specified dimension in order to fit). If true, the image will be cropped to fit the non-zero dimensions provided.",
            "required": false,
            "type": "boolean",
            "default": true
          }
        ],
        "responses": {
          "200": {
            "description": "The data was returned successfully.",
            "schema": {
              "$ref": "#/definitions/PassleSyncPostModel"
            },
            "examples": {
              "application/json": {
                "PostShortcode": "vp41k9",
                "PassleShortcode": "2021-uk-legal-thought-leadership-index-explosion-in-thought-leadership-for-the",
                "PostUrl": "https://blog.passle.net/post/102gz2l/2021-uk-legal-thought-leadership-index-explosion-in-thought-leadership-for-the",
                "PostTitle": "2021 UK Legal Thought Leadership Index - Explosion in thought leadership for the country's top law firms",
                "Authors": [
                  {
                    "Shortcode": "vp3a46",
                    "Name": "Clive Passle",
                    "EmailAddress": "clive@passle.net",
                    "ImageUrl": "https://img.passle.net/avatars/Clive+Passle.jpg",
                    "ProfileUrl": "https://www.passle.net/u/ClivePassle",
                    "Role": "Blogger at Passle",
                    "TwitterScreenName": "@ClivePassle"
                  }
                ],
                "CoAuthors": [],
                "ShareViews": [
                  {
                    "SocialNetwork": "LinkedIn",
                    "TotalViews": 417
                  },
                  {
                    "SocialNetwork": "Twitter",
                    "TotalViews": 585
                  },
                  {
                    "SocialNetwork": "Facebook",
                    "TotalViews": 317
                  }
                ],
                "ContentTextSnippet": "We published the 2021 UK Legal Thought Leadership Index this week, and one of the key findings is...",
                "PublishedDate": "2021-06-30T14:50:20.779+00:00",
                "Tags": [
                  "Passle",
                  "API"
                ],
                "FeaturedItemMediaType": 1,
                "FeaturedItemEmbedType": 0,
                "FeaturedItemEmbedProvider": null,
                "ImageUrl": "https://images.passle.net/fit-in/640x640/Passle/53d0c8edb00e7e0540c9b34b/MediaLibrary/Images/5c7e8efa989b6e0b9033603b/2021-05-25-13-07-15-796-60acf683e5416a0f88b3beaa.jpg",
                "TotalShares": 1319,
                "IsRepost": false,
                "EstimatedReadTimeInSeconds": 72,
                "TotalLikes": 0,
                "OpensInNewTab": false,
                "MetaData": {
                  "Title": "Sample Title",
                  "Description": "Sample Description",
                  "Keywords": "Keyword 1,Keyword 2,Keyword 3",
                  "EnforceNoIndex": false
                },
                "Language": "en",
                "AvailableLanguages": [
                  "fr",
                  "es",
                  "de"
                ],
                "Translations": null,
                "PostSlug": "vp3jsh",
                "IsExternal": false,
                "PostContentHtml": "We published the 2021 UK Legal Thought Leadership Index this week, and one of the key findings is that there has been an explosion of thought leadership among the UK top law firms in the last 12 months. As a result of Covid -19, law firms have adopted remote working and communication with clients has become predominantly virtual. When you can't be in the room with your clients, sharing knowledge and expertise, through regular thought leadership can be a great way to remain front of mind.\n                        Our research found that the top 100 firm created 37,397 individual blogs, articles & insights during 2020. The last time we carried out this research in 2019 we looked across the top 200 and collectively they only produce 33,823 insights between them.\n                        On the whole, larger firms produce more thought leadership, but there are a core of smaller firms punching above their weight with high numbers of posts per author. These firms are driving quality thought leadership within their niche.\n                        It is no longer enough to tell potential clients how good you are – you need to show it too. Firms have nothing to fear and everything to gain by putting their expertise in the public domain, and there is often a direct correlation between this activity and enquiry levels.\n                        Particularly in the early days of the pandemic, firms were able to assist their clients and the wider business community hugely by ramping up their insights on the legal implications, with many creating dedicated knowledge hubs.\n                        People buy expertise, but they also buy people.The savvy use of social media to share insights about both the law and the firm is a great way to sell yourself to potential clients, and it need not be a time-consuming exercise.\n                        The report is available for free download here or, if you'd like to find out how your firm in specific compares with your peers, you can request a personalised version (also for free).",
                "FeaturedItemHtml": null,
                "FeaturedItemPosition": 0,
                "QuoteText": "It is no longer enough to tell potential clients how good you are – you need to show it too. Firms have nothing to fear and everything to gain by putting their expertise in the public domain, and there is often a clear correlation between this activity and enquiry levels.",
                "QuoteUrl": "https://home.passle.net/resources/rank-my-firm/",
                "IsFeaturedOnPasslePage": false,
                "IsFeaturedOnPostPage": false,
                "TagMappings": [
                  {
                    "Tag": "ai",
                    "Label": "AI",
                    "Aliases": [
                      "ai",
                      "artificial intelligence"
                    ]
                  },
                  {
                    "Tag": "podcast",
                    "Label": "Podcasts",
                    "Aliases": [
                      "legal-podcasts",
                      "company podcasts",
                      "Podcasts & interviews"
                    ]
                  },
                  {
                    "Tag": "events",
                    "Label": "Events",
                    "Aliases": [
                      "events",
                      "Company meet-ups"
                    ]
                  }
                ],
                "TagGroups": [
                  {
                    "Name": "group name",
                    "TagMappings": [
                      {
                        "Tag": "ai",
                        "Label": "AI",
                        "Aliases": [
                          "ai",
                          "artificial intelligence"
                        ]
                      }
                    ]
                  }
                ],
                "Tweets": []
              }
            }
          },
          "400": {
            "description": "The request parameters are incorrect."
          },
          "403": {
            "description": "The API Key is incorrect."
          },
          "404": {
            "description": "The requested resource could not be found."
          },
          "500": {
            "description": "The server couldn't process the request."
          }
        }
      }
    },
    "/api/v2/people": {
      "get": {
        "tags": [
          "People"
        ],
        "description": "Returns a list of data about the people with at least one published post within a specified passle.\n## Response:\nThe list of people that matched your query. Each person will have the following schema:\n```json\n{\n  \"Shortcode\": \"The shortcode for the person.\",\n  \"ProfileUrl\": \"The url for the person's profile.\",\n  \"Name\": \"The person's full name.\",\n  \"SubscribeLink\": \"The url to the subscribe page for this person.\",\n  \"AvatarUrl\": \"The url for this person's avatar image.\",\n  \"RoleInfo\": \"The tagline for this person.\"\n}\n```",
        "operationId": "Get people",
        "consumes": [],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "APIKey",
            "in": "header",
            "description": "Your client API key.",
            "required": true,
            "schema": {
              "type": "string",
              "example": "123abcd-XXXXXXX-XXXXXXX"
            }
          },
          {
            "name": "PassleShortcode",
            "in": "query",
            "description": "The shortcode of the passle for which you'd like to see people's data.",
            "required": true,
            "type": "string"
          },
          {
            "name": "PageNumber",
            "in": "query",
            "description": "The page number of results to show. If the total number of results is larger than the page size (or the number of items per page in the request) then the results will be paginated and you should increment the value of `PageNumber` to see all the results.",
            "required": false,
            "type": "integer",
            "format": "int32",
            "maximum": 10000,
            "minimum": 1
          },
          {
            "name": "ItemsPerPage",
            "in": "query",
            "description": "The number of results to return per page. If the total number of results is larger than this value then your results will be paginated and you should increment the value of `PageNumber` to see all the results.",
            "required": false,
            "type": "integer",
            "format": "int32",
            "maximum": 1000,
            "minimum": 1
          },
          {
            "name": "SearchQuery",
            "in": "query",
            "description": "A word or sentence used to filter results. Only people whose names match the search query will be returned (case insensitive).",
            "required": false,
            "type": "string"
          },
          {
            "name": "SortOrder",
            "in": "query",
            "description": "An enum used to return the results in a specific order. 'None' or 0 will not order the results. 'Surname' or 1 will order the results by surname, A-Z (which is the default if no value is given). 'Activity' or 2 will order the results by Expert Influence Score, largest to smallest.",
            "required": false,
            "type": "integer",
            "format": "int32",
            "enum": [
              0,
              1,
              2
            ]
          },
          {
            "name": "Filter",
            "in": "query",
            "description": "A single character used to filter results. Only people whose surname starts with the given character will be returned (case sensitive).",
            "required": false,
            "type": "string"
          },
          {
            "name": "IncludeIntegrationTestContent",
            "in": "query",
            "description": "If true, integration test content data will be included in the response only if the API key being used has 'Include Integration Content Test' also enabled. If left unset, the content data will be included depending on the 'Include Integration Content Test' option of the API key.",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "Image.Width",
            "in": "query",
            "description": "Width in pixels of the image which is returned. Value must be between 0 and 2000. 0 will leave the image at its original width, except when the crop property is set to false, in which case the width may change to fit in and preserve the image's original aspect ratio. Images cropped in Passle will have a 16:9 aspect ratio.",
            "required": false,
            "type": "integer",
            "format": "int32",
            "default": 200,
            "maximum": 2000,
            "minimum": 0
          },
          {
            "name": "Image.Height",
            "in": "query",
            "description": "Height in pixels of the image which is returned. Value must be between 0 and 2000. 0 will leave the image at its original height, except when the crop property is set to false, in which case the height may change to fit in and preserve the image's original aspect ratio. Images cropped in Passle will have a 16:9 aspect ratio.",
            "required": false,
            "type": "integer",
            "format": "int32",
            "default": 200,
            "maximum": 2000,
            "minimum": 0
          },
          {
            "name": "Image.Crop",
            "in": "query",
            "description": "Determines whether the image should be cropped in order to fit the specified area. If false or a dimension is set to 0, the original image uploaded will be resized to fit without cropping (i.e. it might be smaller than the specified dimension in order to fit). If true, the image will be cropped to fit the non-zero dimensions provided.",
            "required": false,
            "type": "boolean",
            "default": false
          }
        ],
        "responses": {
          "200": {
            "description": "The data was returned successfully.",
            "schema": {
              "$ref": "#/definitions/IGetPeopleResponseModel"
            },
            "examples": {
              "application/json": {
                "TotalCount": 1,
                "People": [
                  {
                    "Shortcode": "vp3a46",
                    "ProfileUrl": "https://www.passle.net/u/Clive+Passle",
                    "Name": "Clive Passle",
                    "SubscribeLink": "https://www.passle.net/subscribe/Clive+Passle",
                    "AvatarUrl": "https://img.passle.net/avatars/Clive+Passle.jpg",
                    "RoleInfo": "Blogger at Passle"
                  }
                ],
                "FilterOptions": [
                  "P"
                ],
                "Filter": "P",
                "ShowFilters": false,
                "PageSize": 20
              }
            }
          },
          "400": {
            "description": "The request parameters are incorrect."
          },
          "403": {
            "description": "The API Key is incorrect."
          },
          "500": {
            "description": "The server couldn't process the request."
          }
        }
      }
    },
    "/api/v2/people/search": {
      "get": {
        "tags": [
          "People"
        ],
        "description": "Returns a list of data about the specific people requested. Only CrossPitch AI users are included in the search.\n## Response:\nThe list of people that matched your query. Each person will have the following schema:\n```json\n{\n  \"Results\": \"An array of items matching the query.\"\n}\n```",
        "operationId": "Get people by search (CrossPitch AI)",
        "consumes": [],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "APIKey",
            "in": "header",
            "description": "Your client API key.",
            "required": true,
            "schema": {
              "type": "string",
              "example": "123abcd-XXXXXXX-XXXXXXX"
            }
          },
          {
            "name": "SearchQuery",
            "in": "query",
            "description": "A word or sentence used to search people.",
            "required": true,
            "type": "string"
          },
          {
            "name": "Limit",
            "in": "query",
            "description": "The max number of results to return. Value must be between 1 and 100.",
            "required": false,
            "type": "integer",
            "format": "int32",
            "default": 20,
            "maximum": 100,
            "minimum": 1
          },
          {
            "name": "Image.Width",
            "in": "query",
            "description": "Width in pixels of the image which is returned. Value must be between 0 and 2000. 0 will leave the image at its original width, except when the crop property is set to false, in which case the width may change to fit in and preserve the image's original aspect ratio. Images cropped in Passle will have a 16:9 aspect ratio.",
            "required": false,
            "type": "integer",
            "format": "int32",
            "default": 200,
            "maximum": 2000,
            "minimum": 0
          },
          {
            "name": "Image.Height",
            "in": "query",
            "description": "Height in pixels of the image which is returned. Value must be between 0 and 2000. 0 will leave the image at its original height, except when the crop property is set to false, in which case the height may change to fit in and preserve the image's original aspect ratio. Images cropped in Passle will have a 16:9 aspect ratio.",
            "required": false,
            "type": "integer",
            "format": "int32",
            "default": 200,
            "maximum": 2000,
            "minimum": 0
          },
          {
            "name": "Image.Crop",
            "in": "query",
            "description": "Determines whether the image should be cropped in order to fit the specified area. If false or a dimension is set to 0, the original image uploaded will be resized to fit without cropping (i.e. it might be smaller than the specified dimension in order to fit). If true, the image will be cropped to fit the non-zero dimensions provided.",
            "required": false,
            "type": "boolean",
            "default": false
          }
        ],
        "responses": {
          "200": {
            "description": "The data was returned successfully.",
            "schema": {
              "$ref": "#/definitions/IGetPeopleBySearchResponseModel"
            },
            "examples": {
              "application/json": {
                "Results": [
                  {
                    "Shortcode": "vp3a46",
                    "ProfileUrl": "https://www.passle.net/u/Clive+Passle",
                    "FirstName": "Clive",
                    "LastName": "Passle",
                    "Name": "Clive Passle",
                    "RoleInfo": "Senior Associate",
                    "TagLineCompany": "Passle Ltd",
                    "LocationDetail": "London",
                    "LocationCountry": "UK",
                    "ProfileSummary": "Clive is a Senior Associate at Passle in London, UK.",
                    "SubscribeLink": "https://www.passle.net/subscribe/Clive+Passle",
                    "AvatarUrl": "https://img.passle.net/avatars/Clive+Passle.jpg"
                  }
                ]
              }
            }
          },
          "400": {
            "description": "The request parameters are incorrect."
          },
          "403": {
            "description": "The API Key is incorrect."
          },
          "500": {
            "description": "The server couldn't process the request."
          }
        }
      }
    },
    "/api/v2/people/{PersonShortcode}": {
      "get": {
        "tags": [
          "People"
        ],
        "description": "Returns more detailed information about a specific person.\n## Response:\nThe person that matched your query, with the following schema:\n```json\n{\n  \"Shortcode\": \"The shortcode for the person.\",\n  \"Name\": \"The person's full name.\",\n  \"SubscribeLink\": \"The url of the subscribe page for this person.\",\n  \"Website\": \"The url to the person's website.\",\n  \"EmailAddress\": \"The person's email address.\",\n  \"PhoneNumber\": \"The person's phone number.\",\n  \"AvatarUrl\": \"The url for this person's avatar image.\",\n  \"AboutMe\": \"The person's 'About Me' description\",\n  \"LinkedInProfileLink\": \"The url to the person's LinkedIn profile.\",\n  \"FacebookProfileLink\": \"The url to the person's LinkedIn profile.\",\n  \"TwitterScreenName\": \"The person's Twitter screen name.\",\n  \"XingProfileLink\": \"The url to the person's Xing profile.\",\n  \"SkypeProfileLink\": \"The url to the person's Skype profile.\",\n  \"VimeoProfileLink\": \"The url to the person's Vimeo profile.\",\n  \"YouTubeProfileLink\": \"The url to the person's YouTube profile.\",\n  \"StumbleUponProfileLink\": \"The url to the person's StumbleUpon profile.\",\n  \"PinterestProfileLink\": \"The url to the person's Pinterest profile.\",\n  \"InstagramProfileLink\": \"The url to the person's Instagram profile.\",\n  \"PersonalLinks\": \"A list of titles and urls for any other links the person may have added to their profile.\",\n  \"LocationDetail\": \"The city/region the person is in.\",\n  \"LocationCountry\": \"The country the person is in.\",\n  \"TagLineCompany\": \"The tagline for the client the person is in.\",\n  \"Role\": \"The tagline for this person.\"\n}\n```",
        "operationId": "Get person details",
        "consumes": [],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "APIKey",
            "in": "header",
            "description": "Your client API key.",
            "required": true,
            "schema": {
              "type": "string",
              "example": "123abcd-XXXXXXX-XXXXXXX"
            }
          },
          {
            "name": "PersonShortcode",
            "in": "path",
            "description": "The shortcode of the person for which you'd like to see more information.",
            "required": true,
            "type": "string"
          },
          {
            "name": "Image.Width",
            "in": "query",
            "description": "Width in pixels of the image which is returned. Value must be between 0 and 2000. 0 will leave the image at its original width, except when the crop property is set to false, in which case the width may change to fit in and preserve the image's original aspect ratio. Images cropped in Passle will have a 16:9 aspect ratio.",
            "required": false,
            "type": "integer",
            "format": "int32",
            "default": 200,
            "maximum": 2000,
            "minimum": 0
          },
          {
            "name": "Image.Height",
            "in": "query",
            "description": "Height in pixels of the image which is returned. Value must be between 0 and 2000. 0 will leave the image at its original height, except when the crop property is set to false, in which case the height may change to fit in and preserve the image's original aspect ratio. Images cropped in Passle will have a 16:9 aspect ratio.",
            "required": false,
            "type": "integer",
            "format": "int32",
            "default": 200,
            "maximum": 2000,
            "minimum": 0
          },
          {
            "name": "Image.Crop",
            "in": "query",
            "description": "Determines whether the image should be cropped in order to fit the specified area. If false or a dimension is set to 0, the original image uploaded will be resized to fit without cropping (i.e. it might be smaller than the specified dimension in order to fit). If true, the image will be cropped to fit the non-zero dimensions provided.",
            "required": false,
            "type": "boolean",
            "default": false
          }
        ],
        "responses": {
          "200": {
            "description": "The data was returned successfully.",
            "schema": {
              "$ref": "#/definitions/IGetPersonResponseModel"
            },
            "examples": {
              "application/json": {
                "Shortcode": "vp3a46",
                "Name": "Clive Passle",
                "SubscribeLink": "https://www.passle.net/subscribe/Clive+Passle",
                "Website": "https://home.passle.net",
                "EmailAddress": "clive@passle.net",
                "PhoneNumber": "+44 7777 777 777",
                "AvatarUrl": "https://img.passle.net/avatars/Clive+Passle.jpg",
                "AboutMe": "Hi, I'm Clive!",
                "LinkedInProfileLink": "https://www.linkedin.com/u/ClivePassle",
                "FacebookProfileLink": "https://www.facebook.com/ClivePassle",
                "TwitterScreenName": "@ClivePassle",
                "XingProfileLink": "https://www.xing.com/ClivePassle",
                "SkypeProfileLink": "https://www.skype.com/ClivePassle",
                "VimeoProfileLink": "https://www.vimeo.com/ClivePassle",
                "YouTubeProfileLink": "https://www.youtube.com/ClivePassle",
                "StumbleUponProfileLink": "https://www.stumbleupon.com/ClivePassle",
                "PinterestProfileLink": "https://www.pinterest.com/ClivePassle",
                "InstagramProfileLink": "https://www.instagram.com/ClivePassle",
                "PersonalLinks": [
                  {
                    "Title": "Clive's site",
                    "Url": "https://www.clivepassle.net"
                  }
                ],
                "LocationDetail": "Oxford",
                "LocationCountry": "England",
                "TagLineCompany": "Welcome to Passle!",
                "Role": "Blogger at Passle"
              }
            }
          },
          "400": {
            "description": "The request parameters are incorrect."
          },
          "403": {
            "description": "The API Key is incorrect."
          },
          "404": {
            "description": "The requested resource could not be found."
          },
          "500": {
            "description": "The server couldn't process the request."
          }
        }
      }
    },
    "/api/v2/posts": {
      "get": {
        "tags": [
          "Posts"
        ],
        "description": "Returns a list of data about all posts that have been published within a specific passle.\n## Response:\nThe list of posts that matched your query.\n```json\n{\n  \"TotalCount\": \"The total number of items returned.\",\n  \"PageNumber\": \"The page number of items shown.\",\n  \"PageSize\": \"The number of items in a page.\",\n  \"Posts\": \"An array of items matching the query.\"\n}\n```",
        "operationId": "Get posts",
        "consumes": [],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "APIKey",
            "in": "header",
            "description": "Your client API key.",
            "required": true,
            "schema": {
              "type": "string",
              "example": "123abcd-XXXXXXX-XXXXXXX"
            }
          },
          {
            "name": "PassleShortcode",
            "in": "query",
            "description": "The shortcode of the passle for which you'd like to see post data. This is required unless `AuthorShortcode` is given.",
            "required": false,
            "type": "string"
          },
          {
            "name": "PageNumber",
            "in": "query",
            "description": "The page number of results to show. If the total number of results is larger than the page size (or the number of items per page in the request) then the results will be paginated and you should increment the value of `PageNumber` to see all the results.",
            "required": false,
            "type": "integer",
            "format": "int32",
            "maximum": 10000,
            "minimum": 1
          },
          {
            "name": "ItemsPerPage",
            "in": "query",
            "description": "The number of results to return per page. If the total number of results is larger than this value then your results will be paginated and you should increment the value of `PageNumber` to see all the results.",
            "required": false,
            "type": "integer",
            "format": "int32",
            "maximum": 1000,
            "minimum": 1
          },
          {
            "name": "DateFrom",
            "in": "query",
            "description": "A datetime value that will exclude posts that were published before this date. If omitted, data will be returned from the date the first post was published. Acceptable formats: 2021-03-21T18:37:45.488Z or 2021-03-21",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "DateTo",
            "in": "query",
            "description": "A datetime value that will exclude posts that were published after this date. If omitted, data will be returned up to the current date. Acceptable formats: 2021-03-21T18:37:45.488Z or 2021-03-21",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "TagFilter",
            "in": "query",
            "description": "A single tag, or a comma-separated list of tags (maximum 20), used to filter results. Depending on the value of the TagMatchType parameter, you can control whether the AND or OR operator is applied for this filter. Tags will be matched either when the tag is directly applied to the post or when an alias exists which maps to a tag on the post. If not supplied then posts will be returned regardless of tags.",
            "required": false,
            "type": "string"
          },
          {
            "name": "TagMatchType",
            "in": "query",
            "description": "An enum used to control whether the AND or OR operator is applied to the TagFilter parameter. 'MatchAllTags' or 1 will apply the AND operator. 'MatchAnyTags' or 2 will apply the OR operator. If unset, the AND operator will be applied.",
            "required": false,
            "type": "integer",
            "format": "int32",
            "enum": [
              0,
              1,
              2,
              3,
              4
            ]
          },
          {
            "name": "SearchQuery",
            "in": "query",
            "description": "A word or sentence used to filter results. Only posts whose post title, content, author, quote or tags match the search query will be returned, and posts will be ordered by relevance (case insensitive).",
            "required": false,
            "type": "string"
          },
          {
            "name": "AuthorShortcode",
            "in": "query",
            "description": "The shortcode, or primary email address, of the author whose posts you'd like to see data for. This is required unless `PassleShortcode` is given.",
            "required": false,
            "type": "string"
          },
          {
            "name": "ExcludeFeaturedPost",
            "in": "query",
            "description": "If true, featured posts will be excluded from the results.",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "IncludeReposts",
            "in": "query",
            "description": "If true, reposts will be included in the results.",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "RepostedFrom",
            "in": "query",
            "description": "The shortcode, or comma-separated list of shortcodes that correspond to the source passle(s) of the post data. If specified, the results will contain only reposts that were originally posted to the given passle(s) irrespective of the IncludeReposts value.",
            "required": false,
            "type": "string"
          },
          {
            "name": "SearchByTagsOnly",
            "in": "query",
            "description": "If true, `SearchQuery` will search against tags only. If false, `SearchQuery` will search against tags and other text fields.",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "SearchByAuthorsOnly",
            "in": "query",
            "description": "If true, SearchQuery will search against authors only. If false, SearchQuery will search against authors and other text fields.",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "FeaturedImage.Width",
            "in": "query",
            "description": "Width in pixels of the image which is returned. Value must be between 0 and 2000. 0 will leave the image at its original width, except when the crop property is set to false, in which case the width may change to fit in and preserve the image's original aspect ratio. Images cropped in Passle will have a 16:9 aspect ratio.",
            "required": false,
            "type": "integer",
            "format": "int32",
            "default": 400,
            "maximum": 2000,
            "minimum": 0
          },
          {
            "name": "FeaturedImage.Height",
            "in": "query",
            "description": "Height in pixels of the image which is returned. Value must be between 0 and 2000. 0 will leave the image at its original height, except when the crop property is set to false, in which case the height may change to fit in and preserve the image's original aspect ratio. Images cropped in Passle will have a 16:9 aspect ratio.",
            "required": false,
            "type": "integer",
            "format": "int32",
            "default": 400,
            "maximum": 2000,
            "minimum": 0
          },
          {
            "name": "FeaturedImage.Crop",
            "in": "query",
            "description": "Determines whether the image should be cropped in order to fit the specified area. If false or a dimension is set to 0, the original image uploaded will be resized to fit without cropping (i.e. it might be smaller than the specified dimension in order to fit). If true, the image will be cropped to fit the non-zero dimensions provided.",
            "required": false,
            "type": "boolean",
            "default": true
          },
          {
            "name": "AuthorImage.Width",
            "in": "query",
            "description": "Width in pixels of the image which is returned. Value must be between 0 and 2000. 0 will leave the image at its original width, except when the crop property is set to false, in which case the width may change to fit in and preserve the image's original aspect ratio. Images cropped in Passle will have a 16:9 aspect ratio.",
            "required": false,
            "type": "integer",
            "format": "int32",
            "default": 150,
            "maximum": 2000,
            "minimum": 0
          },
          {
            "name": "AuthorImage.Height",
            "in": "query",
            "description": "Height in pixels of the image which is returned. Value must be between 0 and 2000. 0 will leave the image at its original height, except when the crop property is set to false, in which case the height may change to fit in and preserve the image's original aspect ratio. Images cropped in Passle will have a 16:9 aspect ratio.",
            "required": false,
            "type": "integer",
            "format": "int32",
            "default": 150,
            "maximum": 2000,
            "minimum": 0
          },
          {
            "name": "AuthorImage.Crop",
            "in": "query",
            "description": "Determines whether the image should be cropped in order to fit the specified area. If false or a dimension is set to 0, the original image uploaded will be resized to fit without cropping (i.e. it might be smaller than the specified dimension in order to fit). If true, the image will be cropped to fit the non-zero dimensions provided.",
            "required": false,
            "type": "boolean",
            "default": false
          },
          {
            "name": "SortOrder",
            "in": "query",
            "description": "An enum used to return the results in a specific order. 'None' or 0 will not order the results. 'Date' or 1 will order the results by published date, oldest to newest (which is the default if no value is given). 'Popularity' or 2 will order the results by most views to fewest.\n\nPlease note: If the `SearchQuery` parameter is set then this parameter will have no effect as the results will be ordered by relevance.",
            "required": false,
            "type": "integer",
            "format": "int32",
            "enum": [
              0,
              1,
              2
            ]
          },
          {
            "name": "ExcludeExternalPosts",
            "in": "query",
            "description": "If true, external posts will be excluded from the results.",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "IncludeIntegrationTestContent",
            "in": "query",
            "description": "If true, integration test content data will be included in the response only if the API key being used has 'Include Integration Content Test' also enabled. If left unset, the content data will be included depending on the 'Include Integration Content Test' option of the API key.",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "Language",
            "in": "query",
            "description": "An HTML ISO language code. If specified, the endpoint will return only posts that are available in the given language.",
            "required": false,
            "type": "string"
          },
          {
            "name": "IncludeTranslations",
            "in": "query",
            "description": "If true, the endpoint will return all translation data for each post.",
            "required": false,
            "type": "boolean"
          }
        ],
        "responses": {
          "200": {
            "description": "The data was returned successfully.",
            "schema": {
              "$ref": "#/definitions/GetPostsResponseModel"
            },
            "examples": {
              "application/json": {
                "TotalCount": 1,
                "PageNumber": 1,
                "PageSize": 20,
                "Posts": [
                  {
                    "PostShortcode": "vp41k9",
                    "PassleShortcode": "vp3jsh",
                    "PostUrl": "https://blog.passle.net/post/102gz2l/2021-uk-legal-thought-leadership-index-explosion-in-thought-leadership-for-the",
                    "PostTitle": "2021 UK Legal Thought Leadership Index - Explosion in thought leadership for the country's top law firms",
                    "Authors": [
                      {
                        "Shortcode": "vp3a46",
                        "Name": "Clive Passle",
                        "EmailAddress": "clive@passle.net",
                        "ImageUrl": "https://img.passle.net/avatars/Clive+Passle.jpg",
                        "ProfileUrl": "https://www.passle.net/u/ClivePassle",
                        "Role": "Blogger at Passle",
                        "TwitterScreenName": "@ClivePassle"
                      }
                    ],
                    "CoAuthors": [],
                    "ShareViews": [
                      {
                        "SocialNetwork": "LinkedIn",
                        "TotalViews": 417
                      },
                      {
                        "SocialNetwork": "Twitter",
                        "TotalViews": 585
                      },
                      {
                        "SocialNetwork": "Facebook",
                        "TotalViews": 317
                      }
                    ],
                    "ContentTextSnippet": "We published the 2021 UK Legal Thought Leadership Index this week, and one of the key findings is...",
                    "PublishedDate": "2021-06-30T14:50:20.779+00:00",
                    "Tags": [
                      "Passle",
                      "API"
                    ],
                    "FeaturedItemMediaType": 1,
                    "FeaturedItemEmbedType": 0,
                    "FeaturedItemEmbedProvider": "none",
                    "ImageUrl": "https://images.passle.net/fit-in/640x640/Passle/53d0c8edb00e7e0540c9b34b/MediaLibrary/Images/5c7e8efa989b6e0b9033603b/2021-05-25-13-07-15-796-60acf683e5416a0f88b3beaa.jpg",
                    "TotalShares": 1319,
                    "IsRepost": false,
                    "EstimatedReadTimeInSeconds": 72,
                    "TotalLikes": 0,
                    "OpensInNewTab": false,
                    "MetaData": {
                      "Title": "Sample Title",
                      "Description": "Sample Description",
                      "Keywords": "Keyword 1,Keyword 2,Keyword 3",
                      "EnforceNoIndex": false
                    },
                    "Language": "en",
                    "AvailableLanguages": [
                      "fr",
                      "es",
                      "de"
                    ],
                    "Translations": null,
                    "PostSlug": "2021-uk-legal-thought-leadership-index-explosion-in-thought-leadership-for-the",
                    "IsExternal": false
                  }
                ]
              }
            }
          },
          "400": {
            "description": "The request parameters are incorrect."
          },
          "403": {
            "description": "The API Key is incorrect."
          },
          "500": {
            "description": "The server couldn't process the request."
          }
        }
      }
    },
    "/api/v2/posts/featuredpost": {
      "get": {
        "tags": [
          "Posts"
        ],
        "description": "Returns data about the featured post for a specific passle.\n## Response:\nThe post that matched your query, with the following schema:\n```json\n{\n  \"Post\": \"An object containing the details of the featured post.\"\n}\n```",
        "operationId": "Get featured post",
        "consumes": [],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "APIKey",
            "in": "header",
            "description": "Your client API key.",
            "required": true,
            "schema": {
              "type": "string",
              "example": "123abcd-XXXXXXX-XXXXXXX"
            }
          },
          {
            "name": "PassleShortcode",
            "in": "query",
            "description": "The shortcode of the passle for which you'd like to see post data.",
            "required": true,
            "type": "string"
          },
          {
            "name": "PassleViewVisible",
            "in": "query",
            "description": "A boolean value that will include/exclude the featured post depending on whether it's set to show as a featured post in the list of all posts for a passle.",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "PostViewVisible",
            "in": "query",
            "description": "A boolean value that will include/exclude the featured post depending on whether it's set to show as a featured post alongside other posts.",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "Language",
            "in": "query",
            "description": "An HTML ISO language code. If specified, the endpoint will return the post content in the given language if the post has a translation for it. Otherwise null is returned.",
            "required": false,
            "type": "string"
          },
          {
            "name": "IncludeTranslations",
            "in": "query",
            "description": "If true, the endpoint will return the featured post contents in all available translations.",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "AuthorImage.Width",
            "in": "query",
            "description": "Width in pixels of the image which is returned. Value must be between 0 and 2000. 0 will leave the image at its original width, except when the crop property is set to false, in which case the width may change to fit in and preserve the image's original aspect ratio. Images cropped in Passle will have a 16:9 aspect ratio.",
            "required": false,
            "type": "integer",
            "format": "int32",
            "default": 150,
            "maximum": 2000,
            "minimum": 0
          },
          {
            "name": "AuthorImage.Height",
            "in": "query",
            "description": "Height in pixels of the image which is returned. Value must be between 0 and 2000. 0 will leave the image at its original height, except when the crop property is set to false, in which case the height may change to fit in and preserve the image's original aspect ratio. Images cropped in Passle will have a 16:9 aspect ratio.",
            "required": false,
            "type": "integer",
            "format": "int32",
            "default": 150,
            "maximum": 2000,
            "minimum": 0
          },
          {
            "name": "AuthorImage.Crop",
            "in": "query",
            "description": "Determines whether the image should be cropped in order to fit the specified area. If false or a dimension is set to 0, the original image uploaded will be resized to fit without cropping (i.e. it might be smaller than the specified dimension in order to fit). If true, the image will be cropped to fit the non-zero dimensions provided.",
            "required": false,
            "type": "boolean",
            "default": false
          },
          {
            "name": "FeaturedImage.Width",
            "in": "query",
            "description": "Width in pixels of the image which is returned. Value must be between 0 and 2000. 0 will leave the image at its original width, except when the crop property is set to false, in which case the width may change to fit in and preserve the image's original aspect ratio. Images cropped in Passle will have a 16:9 aspect ratio.",
            "required": false,
            "type": "integer",
            "format": "int32",
            "default": 700,
            "maximum": 2000,
            "minimum": 0
          },
          {
            "name": "FeaturedImage.Height",
            "in": "query",
            "description": "Height in pixels of the image which is returned. Value must be between 0 and 2000. 0 will leave the image at its original height, except when the crop property is set to false, in which case the height may change to fit in and preserve the image's original aspect ratio. Images cropped in Passle will have a 16:9 aspect ratio.",
            "required": false,
            "type": "integer",
            "format": "int32",
            "default": 300,
            "maximum": 2000,
            "minimum": 0
          },
          {
            "name": "FeaturedImage.Crop",
            "in": "query",
            "description": "Determines whether the image should be cropped in order to fit the specified area. If false or a dimension is set to 0, the original image uploaded will be resized to fit without cropping (i.e. it might be smaller than the specified dimension in order to fit). If true, the image will be cropped to fit the non-zero dimensions provided.",
            "required": false,
            "type": "boolean",
            "default": false
          }
        ],
        "responses": {
          "200": {
            "description": "The data was returned successfully.",
            "schema": {
              "$ref": "#/definitions/GetFeaturedPostResponseModel"
            },
            "examples": {
              "application/json": {
                "Post": {
                  "PostShortcode": "vp41k9",
                  "PassleShortcode": "vp3jsh",
                  "PostUrl": "https://blog.passle.net/post/102gz2l/2021-uk-legal-thought-leadership-index-explosion-in-thought-leadership-for-the",
                  "PostTitle": "2021 UK Legal Thought Leadership Index - Explosion in thought leadership for the country's top law firms",
                  "Authors": [
                    {
                      "Shortcode": "vp3a46",
                      "Name": "Clive Passle",
                      "EmailAddress": "clive@passle.net",
                      "ImageUrl": "https://img.passle.net/avatars/Clive+Passle.jpg",
                      "ProfileUrl": "https://www.passle.net/u/ClivePassle",
                      "Role": "Blogger at Passle",
                      "TwitterScreenName": "@ClivePassle"
                    }
                  ],
                  "CoAuthors": [],
                  "ShareViews": [
                    {
                      "SocialNetwork": "LinkedIn",
                      "TotalViews": 417
                    },
                    {
                      "SocialNetwork": "Twitter",
                      "TotalViews": 585
                    },
                    {
                      "SocialNetwork": "Facebook",
                      "TotalViews": 317
                    }
                  ],
                  "ContentTextSnippet": "We published the 2021 UK Legal Thought Leadership Index this week, and one of the key findings is...",
                  "PublishedDate": "2021-06-30T14:50:20.779+00:00",
                  "Tags": [
                    "Passle",
                    "API"
                  ],
                  "FeaturedItemMediaType": 1,
                  "FeaturedItemEmbedType": 0,
                  "FeaturedItemEmbedProvider": "none",
                  "ImageUrl": "https://images.passle.net/fit-in/640x640/Passle/53d0c8edb00e7e0540c9b34b/MediaLibrary/Images/5c7e8efa989b6e0b9033603b/2021-05-25-13-07-15-796-60acf683e5416a0f88b3beaa.jpg",
                  "TotalShares": 1319,
                  "IsRepost": false,
                  "EstimatedReadTimeInSeconds": 72,
                  "TotalLikes": 0,
                  "OpensInNewTab": false,
                  "MetaData": {
                    "Title": "Sample Title",
                    "Description": "Sample Description",
                    "Keywords": "Keyword 1,Keyword 2,Keyword 3",
                    "EnforceNoIndex": false
                  },
                  "Language": "en",
                  "AvailableLanguages": [
                    "fr",
                    "es",
                    "de"
                  ],
                  "Translations": null,
                  "PostSlug": "2021-uk-legal-thought-leadership-index-explosion-in-thought-leadership-for-the",
                  "IsExternal": false
                }
              }
            }
          },
          "400": {
            "description": "The request parameters are incorrect."
          },
          "403": {
            "description": "The API Key is incorrect."
          },
          "500": {
            "description": "The server couldn't process the request."
          }
        }
      }
    },
    "/api/v2/posts/{PostShortcode}": {
      "get": {
        "tags": [
          "Posts"
        ],
        "description": "Returns more detailed information about a specific post.\n## Response:\nThe post that matched your query, with the following schema:\n```json\n{\n  \"PublishedDate\": \"A datetime value showing when this post was published.\",\n  \"MetaData\": \"The set of SEO metadata for this post.\",\n  \"PostShortcode\": \"The shortcode for the post.\",\n  \"PassleShortcode\": \"The shortcode for the passle the post is published in.\",\n  \"PostTitle\": \"The title of the post.\",\n  \"PostContentHtml\": \"The html content for the main body of text for the post.\",\n  \"ImageUrl\": \"The url for the post's featured media.\",\n  \"QuoteText\": \"The text used in the post's quote.\",\n  \"QuoteUrl\": \"The url for the post's quote.\",\n  \"Tags\": \"A list of tags for this post.\",\n  \"EstimatedReadTimeInSeconds\": \"An integer showing the estimated time to read the post, in seconds.\",\n  \"FeaturedItemHTML\": \"The html content for the post's featured media.\",\n  \"FeaturedItemMediaType\": \"An integer showing what type of media the post's featured media is. 0 - None; 1 - Image; 2 - Video; 3 - Audio; 4 - Embedded link / item; 5 - Font; 6 - Document.\",\n  \"Authors\": \"A list containing the details of the primary authors of this post.\",\n  \"CoAuthors\": \"A list containing the details of the co-authors of this post.\",\n  \"PostUrl\": \"The url for the post.\",\n  \"FeaturedItemPosition\": \"An integer showing where the featured media is shown in the post. Values are: 0 - None; 1 - At the bottom of the post; 2 - At the top of the post; 3 - In the post's header.\",\n  \"ShareViews\": \"A list showing how often the post has been viewed via different social media channels. 0 - None; 1 - LinkedIn; 2 - Twitter; 4 - Facebook; 7 - LinkedIn, Twitter and Facebook combined; 16 -  Xing; 32 - Email.\",\n  \"IsRepost\": \"A boolean value showing whether this post is a repost of an original post.\",\n  \"RepostedFromPassleName\": \"The title of the passle from where the post was reposted. This is empty if the post is not a repost, or if the passle has been deleted.\",\n  \"ReposterName\": \"The full name of the user who reposted the post. This is empty if the post is not a repost, or if the user has been deleted.\",\n  \"ReposterProfileUrl\": \"The profile url of the user who reposted this post. This is empty if the post is not a repost, or if the user has been deleted.\",\n  \"RepostedFromPassleUrl\": \"The url of the passle from where this post was reposted. This is empty if the post is not a repost, or if the passle has been deleted.\",\n  \"TotalLikes\": \"An integer showing how many times the post has been liked.\",\n  \"Language\": \"The language of the post content.\",\n  \"AvailableLanguages\": \"The set of HTML ISO Language codes that correspond to the available languages this post is written in. This excludes the default language\",\n  \"Translations\": \"The post content, written in different languages that this post is available in.\",\n  \"PostSlug\": \"A string value generated from a post title which can be included in a post url structure.\",\n  \"IsExternal\": \"A boolean value indicating if a post is external.\"\n}\n```",
        "operationId": "Get post details",
        "consumes": [],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "APIKey",
            "in": "header",
            "description": "Your client API key.",
            "required": true,
            "schema": {
              "type": "string",
              "example": "123abcd-XXXXXXX-XXXXXXX"
            }
          },
          {
            "name": "PostShortcode",
            "in": "path",
            "description": "The shortcode of the post for which you'd like to see more information.",
            "required": true,
            "type": "string"
          },
          {
            "name": "PreviewMode",
            "in": "query",
            "description": "A boolean value that will include/exclude unpublished posts in the query results.",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "Language",
            "in": "query",
            "description": "An HTML ISO language code. If specified, the endpoint will return the post data in the given language if the post is available in this language.",
            "required": false,
            "type": "string"
          },
          {
            "name": "IncludeTranslations",
            "in": "query",
            "description": "If true, the endpoint will return all translation data for the post.",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "AuthorImage.Width",
            "in": "query",
            "description": "Width in pixels of the image which is returned. Value must be between 0 and 2000. 0 will leave the image at its original width, except when the crop property is set to false, in which case the width may change to fit in and preserve the image's original aspect ratio. Images cropped in Passle will have a 16:9 aspect ratio.",
            "required": false,
            "type": "integer",
            "format": "int32",
            "default": 150,
            "maximum": 2000,
            "minimum": 0
          },
          {
            "name": "AuthorImage.Height",
            "in": "query",
            "description": "Height in pixels of the image which is returned. Value must be between 0 and 2000. 0 will leave the image at its original height, except when the crop property is set to false, in which case the height may change to fit in and preserve the image's original aspect ratio. Images cropped in Passle will have a 16:9 aspect ratio.",
            "required": false,
            "type": "integer",
            "format": "int32",
            "default": 150,
            "maximum": 2000,
            "minimum": 0
          },
          {
            "name": "AuthorImage.Crop",
            "in": "query",
            "description": "Determines whether the image should be cropped in order to fit the specified area. If false or a dimension is set to 0, the original image uploaded will be resized to fit without cropping (i.e. it might be smaller than the specified dimension in order to fit). If true, the image will be cropped to fit the non-zero dimensions provided.",
            "required": false,
            "type": "boolean",
            "default": false
          },
          {
            "name": "FeaturedImage.Width",
            "in": "query",
            "description": "Width in pixels of the image which is returned. Value must be between 0 and 2000. 0 will leave the image at its original width, except when the crop property is set to false, in which case the width may change to fit in and preserve the image's original aspect ratio. Images cropped in Passle will have a 16:9 aspect ratio.",
            "required": false,
            "type": "integer",
            "format": "int32",
            "default": 640,
            "maximum": 2000,
            "minimum": 0
          },
          {
            "name": "FeaturedImage.Height",
            "in": "query",
            "description": "Height in pixels of the image which is returned. Value must be between 0 and 2000. 0 will leave the image at its original height, except when the crop property is set to false, in which case the height may change to fit in and preserve the image's original aspect ratio. Images cropped in Passle will have a 16:9 aspect ratio.",
            "required": false,
            "type": "integer",
            "format": "int32",
            "default": 640,
            "maximum": 2000,
            "minimum": 0
          },
          {
            "name": "FeaturedImage.Crop",
            "in": "query",
            "description": "Determines whether the image should be cropped in order to fit the specified area. If false or a dimension is set to 0, the original image uploaded will be resized to fit without cropping (i.e. it might be smaller than the specified dimension in order to fit). If true, the image will be cropped to fit the non-zero dimensions provided.",
            "required": false,
            "type": "boolean",
            "default": false
          }
        ],
        "responses": {
          "200": {
            "description": "The data was returned successfully.",
            "schema": {
              "$ref": "#/definitions/GetPostResponseModel"
            },
            "examples": {
              "application/json": {
                "PublishedDate": "2021-06-30T14:50:20.779+00:00",
                "MetaData": {
                  "Title": "2021 UK Legal Thought Leadership Index",
                  "Description": "Explosion in thought leadership for the country's top law firms",
                  "Keywords": "Thought Leadership",
                  "EnforceNoIndex": false
                },
                "PostShortcode": "vp41k9",
                "PassleShortcode": "vp3jsh",
                "PostTitle": "2021 UK Legal Thought Leadership Index - Explosion in thought leadership for the country's top law firms",
                "PostContentHtml": "<p>We published the 2021 UK Legal Thought Leadership Index this week, and one of the key findings is that there has been an explosion of thought leadership among the UK top law firms in the last 12 months.</p><p>On the whole, larger firms produce more thought leadership, but there are a core of smaller firms punching above their weight with high numbers of posts per author. These firms are driving quality thought leadership within their niche.</p>",
                "ImageUrl": "https://images.passle.net/fit-in/640x640/Passle/53d0c8edb00e7e0540c9b34b/MediaLibrary/Images/5c7e8efa989b6e0b9033603b/2021-05-25-13-07-15-796-60acf683e5416a0f88b3beaa.jpg",
                "QuoteText": "It is no longer enough to tell potential clients how good you are – you need to show it too.Firms have nothing to fear and everything to gain by putting their expertise in the public domain, and there is often a clear correlation between this activity and enquiry levels.",
                "QuoteUrl": "https://home.passle.net/resources/rank-my-firm/",
                "Tags": [
                  "Passle",
                  "API"
                ],
                "EstimatedReadTimeInSeconds": 72,
                "FeaturedItemHTML": "<div class='featured-item--image'><img src='https://images.passle.net/fit-in/640x640/Passle/53d0c8edb00e7e0540c9b34b/MediaLibrary/Images/5c7e8efa989b6e0b9033603b/2021-05-25-13-07-15-796-60acf683e5416a0f88b3beaa.jpg' alt='featured image'></div>",
                "FeaturedItemMediaType": 1,
                "Authors": [
                  {
                    "Shortcode": "vp3a46",
                    "Name": "Clive Passle",
                    "EmailAddress": "clive@passle.net",
                    "ImageUrl": "https://img.passle.net/avatars/Clive+Passle.jpg",
                    "ProfileUrl": "https://www.passle.net/u/ClivePassle",
                    "Role": "Blogger at Passle",
                    "TwitterScreenName": "@ClivePassle"
                  }
                ],
                "CoAuthors": [],
                "PostUrl": "https://blog.passle.net/post/102gz2l/2021-uk-legal-thought-leadership-index-explosion-in-thought-leadership-for-the",
                "FeaturedItemPosition": 2,
                "ShareViews": [
                  {
                    "SocialNetwork": "LinkedIn",
                    "TotalViews": 417
                  },
                  {
                    "SocialNetwork": "Twitter",
                    "TotalViews": 585
                  },
                  {
                    "SocialNetwork": "Facebook",
                    "TotalViews": 317
                  }
                ],
                "IsRepost": false,
                "RepostedFromPassleName": "",
                "ReposterName": "",
                "ReposterProfileUrl": "",
                "RepostedFromPassleUrl": "",
                "TotalLikes": 0,
                "Language": null,
                "AvailableLanguages": null,
                "Translations": null,
                "PostSlug": "2021-uk-legal-thought-leadership-index-explosion-in-thought-leadership-for-the",
                "IsExternal": false,
                "FeaturedImageUrl": "(Obsolete - please use ImageUrl instead) https://images.passle.net/fit-in/640x640/Passle/53d0c8edb00e7e0540c9b34b/MediaLibrary/Images/5c7e8efa989b6e0b9033603b/2021-05-25-13-07-15-796-60acf683e5416a0f88b3beaa.jpg",
                "FeaturedItemType": 0,
                "Tweets": []
              }
            }
          },
          "400": {
            "description": "The request parameters are incorrect."
          },
          "403": {
            "description": "The API Key is incorrect."
          },
          "500": {
            "description": "The server couldn't process the request."
          }
        }
      }
    },
    "/api/v2/stats/post": {
      "get": {
        "tags": [
          "PostStats"
        ],
        "description": "Returns a list of data for all posts within a client.\n## Response:\nThe list of posts that matched your query. Each post will have the following schema:\n```json\n{\n  \"ClientName\": \"The name of the client that the post is published in.\",\n  \"PublishedDate\": \"A datetime value showing when this post was published.\",\n  \"Title\": \"The title of the post.\",\n  \"Url\": \"The url for the post.\",\n  \"NumberOfViews\": \"The total number of views for the post via the client's blog (and Lexology, Mondaq, JDSupra if enabled).\",\n  \"NumberOfLexologyViews\": \"The total number of views for the post via Lexology (if enabled).\",\n  \"NumberOfMondaqViews\": \"The total number of views for the post via Mondaq (if enabled).\",\n  \"NumberOfJDSupraViews\": \"The total number of views for the post via JDSupra (if enabled).\",\n  \"NumberOfShareViews\": \"The total number of views for the post via social media.\",\n  \"NumberOfLinkedInShareViews\": \"The total number of views for the post via LinkedIn.\",\n  \"NumberOfTwitterShareViews\": \"The total number of views for the post via Twitter.\",\n  \"NumberOfFacebookShareViews\": \"The total number of views for the post via Facebook.\",\n  \"AuthorNames\": \"A list of the names of the authors of this post.\",\n  \"PassleName\": \"The name of the passle that this post was published in.\",\n  \"PassleShortcode\": \"The shortcode of the passle that this post was published in.\",\n  \"PostType\": \"A string explaining how the post was created. Options: Unknown; Dashboard; Button; Repost; Android app v1; iOS app v1; iOS app v2; Chrome extension; Post created as a result of a suggestion.\",\n  \"Tags\": \"A comma-separated list of tags for this post.\"\n}\n```",
        "operationId": "Get post stats",
        "consumes": [],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "APIKey",
            "in": "header",
            "description": "Your client API key.",
            "required": true,
            "schema": {
              "type": "string",
              "example": "123abcd-XXXXXXX-XXXXXXX"
            }
          },
          {
            "name": "PageNumber",
            "in": "query",
            "description": "The page number of results to show. If the total number of results is larger than the page size (or the number of items per page in the request) then the results will be paginated and you should increment the value of `PageNumber` to see all the results.",
            "required": false,
            "type": "integer",
            "format": "int32",
            "maximum": 10000,
            "minimum": 1
          },
          {
            "name": "ItemsPerPage",
            "in": "query",
            "description": "The number of results to return per page. If the total number of results is larger than this value then your results will be paginated and you should increment the value of `PageNumber` to see all the results.",
            "required": false,
            "type": "integer",
            "format": "int32",
            "maximum": 1000,
            "minimum": 1
          },
          {
            "name": "SortOldestFirst",
            "in": "query",
            "description": "If true, the results will be sorted by the date that the post was published, from oldest to newest. If false, they will be sorted from newest to oldest.",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "DateFrom",
            "in": "query",
            "description": "A datetime value that will exclude posts that were published before this date. If omitted, data will be returned from the date the first post was published. Acceptable formats: 2021-03-21T18:37:45.488Z or 2021-03-21",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "DateTo",
            "in": "query",
            "description": "A datetime value that will exclude posts that were published after this date. If omitted, data will be returned up to the current date. Acceptable formats: 2021-03-21T18:37:45.488Z or 2021-03-21",
            "required": false,
            "type": "string",
            "format": "date-time"
          }
        ],
        "responses": {
          "200": {
            "description": "The data was returned successfully.",
            "schema": {
              "$ref": "#/definitions/PostStatsResponseModel"
            },
            "examples": {
              "application/json": {
                "PostStats": [
                  {
                    "ClientName": "Clive Passle & Co",
                    "PublishedDate": "2021-06-30T14:50:20.779+00:00",
                    "Title": "2021 UK Legal Thought Leadership Index - Explosion in thought leadership for the country's top law firms",
                    "Url": "https://blog.passle.net/post/102gz2l/2021-uk-legal-thought-leadership-index-explosion-in-thought-leadership-for-the",
                    "NumberOfViews": 1962,
                    "NumberOfLexologyViews": 0,
                    "NumberOfMondaqViews": 0,
                    "NumberOfJDSupraViews": 0,
                    "NumberOfShareViews": 1319,
                    "NumberOfLinkedInShareViews": 417,
                    "NumberOfTwitterShareViews": 585,
                    "NumberOfFacebookShareViews": 317,
                    "AuthorNames": [
                      "Clive Passle"
                    ],
                    "PassleName": "Passle Latest Features",
                    "PassleShortcode": "vp3jsh",
                    "PostType": "Dashboard",
                    "Tags": "Passle,API",
                    "DatePublished": "0001-01-01T00:00:00"
                  }
                ],
                "TotalCount": 1,
                "PageNumber": 1,
                "PageSize": 20
              }
            }
          },
          "400": {
            "description": "The request parameters are incorrect."
          },
          "403": {
            "description": "The API Key is incorrect."
          },
          "500": {
            "description": "The server couldn't process the request."
          }
        }
      }
    },
    "/api/v2/postsuggestions": {
      "get": {
        "tags": [
          "Posts"
        ],
        "description": "Returns a list of data about posts that could be relevant for an individual user to read.\n## Response:\nThe list of posts that matched your query. Each post will have the following schema:\n```json\n{\n  \"PostShortcode\": \"The shortcode for the post.\",\n  \"PassleShortcode\": \"The shortcode for the passle the post is published in.\",\n  \"PostUrl\": \"The url for the post.\",\n  \"PostTitle\": \"The title of the post.\",\n  \"Authors\": \"A list containing the details of the primary authors of this post.\",\n  \"CoAuthors\": \"A list containing the details of the co-authors of this post.\",\n  \"ShareViews\": \"A list showing how often the post has been shared via different social media channels (LinkedIn, Twitter, Facebook, Xing, Email).\",\n  \"ContentTextSnippet\": \"The first few lines of the post.\",\n  \"PublishedDate\": \"A datetime value showing when this post was published.\",\n  \"Tags\": \"A list of tags for this post.\",\n  \"FeaturedItemMediaType\": \"An integer showing what type of media the post's featured media is. 0 - None; 1 - Image; 2 - Video; 3 - Audio; 4 - Embedded link / item; 5 - Font; 6 - Document.\",\n  \"FeaturedItemEmbedType\": \"An integer showing what type of embed the post's embedded item is, if the featured media is of type '4 - Embedded link / item'. 0 - None; 1 - Photo; 2 - Video; 3 - Link; 4 - Rich.\",\n  \"FeaturedItemEmbedProvider\": \"A string showing what provider the embedded item came from, if the featured media is of type '4 - Embedded link / item'.\",\n  \"ImageUrl\": \"The url for the post's featured media.\",\n  \"TotalShares\": \"An integer showing how many times this post has been shared.\",\n  \"IsRepost\": \"A boolean value showing whether this post is a repost of an original post.\",\n  \"EstimatedReadTimeInSeconds\": \"An integer showing the estimated time to read the post, in seconds.\",\n  \"TotalLikes\": \"An integer showing how many times the post has been liked.\",\n  \"OpensInNewTab\": \"A boolean value showing if the post should open in a new tab.\",\n  \"MetaData\": \"The set of SEO metadata for this post.\",\n  \"Language\": \"An HTML ISO Language code that corresponds to the language of the post content.\",\n  \"AvailableLanguages\": \"The set of HTML ISO Language codes that correspond to the available languages this post is written in.\",\n  \"Translations\": \"The post content, written in different languages that this post is available in.\",\n  \"PostSlug\": \"A string value generated from a post title which can be included in a post url structure.\",\n  \"IsExternal\": \"A boolean value indicating if a post is external.\"\n}\n```",
        "operationId": "Get post suggestions",
        "consumes": [],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "APIKey",
            "in": "header",
            "description": "Your client API key.",
            "required": true,
            "schema": {
              "type": "string",
              "example": "123abcd-XXXXXXX-XXXXXXX"
            }
          },
          {
            "name": "PassleShortcode",
            "in": "query",
            "description": "The shortcode of the passle for which you'd like to see post data.",
            "required": true,
            "type": "string"
          },
          {
            "name": "PostShortcode",
            "in": "query",
            "description": "The shortcode of a post you'd like to exclude from being suggested.",
            "required": false,
            "type": "string"
          },
          {
            "name": "PersonShortcode",
            "in": "query",
            "description": "The shortcode of an author whose posts you'd like to exclude from being suggested.",
            "required": false,
            "type": "string"
          },
          {
            "name": "PageNumber",
            "in": "query",
            "description": "The page number of results to show. If the total number of results is larger than the page size (or the number of items per page in the request) then the results will be paginated and you should increment the value of `PageNumber` to see all the results.",
            "required": false,
            "type": "integer",
            "format": "int32",
            "maximum": 10000,
            "minimum": 1
          },
          {
            "name": "ItemsPerPage",
            "in": "query",
            "description": "The number of results to return per page. If the total number of results is larger than this value then your results will be paginated and you should increment the value of `PageNumber` to see all the results.",
            "required": false,
            "type": "integer",
            "format": "int32",
            "maximum": 1000,
            "minimum": 1
          },
          {
            "name": "ExcludeFeaturedPost",
            "in": "query",
            "description": "If true, featured posts will be excluded from the results.",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "Language",
            "in": "query",
            "description": "An HTML ISO language code. If specified, the endpoint will return only the posts that have content translations in the given language.",
            "required": false,
            "type": "string"
          },
          {
            "name": "IncludeTranslations",
            "in": "query",
            "description": "If true, the endpoint will return the post contents in all available translations.",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "AuthorImage.Width",
            "in": "query",
            "description": "Width in pixels of the image which is returned. Value must be between 0 and 2000. 0 will leave the image at its original width, except when the crop property is set to false, in which case the width may change to fit in and preserve the image's original aspect ratio. Images cropped in Passle will have a 16:9 aspect ratio.",
            "required": false,
            "type": "integer",
            "format": "int32",
            "default": 150,
            "maximum": 2000,
            "minimum": 0
          },
          {
            "name": "AuthorImage.Height",
            "in": "query",
            "description": "Height in pixels of the image which is returned. Value must be between 0 and 2000. 0 will leave the image at its original height, except when the crop property is set to false, in which case the height may change to fit in and preserve the image's original aspect ratio. Images cropped in Passle will have a 16:9 aspect ratio.",
            "required": false,
            "type": "integer",
            "format": "int32",
            "default": 150,
            "maximum": 2000,
            "minimum": 0
          },
          {
            "name": "AuthorImage.Crop",
            "in": "query",
            "description": "Determines whether the image should be cropped in order to fit the specified area. If false or a dimension is set to 0, the original image uploaded will be resized to fit without cropping (i.e. it might be smaller than the specified dimension in order to fit). If true, the image will be cropped to fit the non-zero dimensions provided.",
            "required": false,
            "type": "boolean",
            "default": false
          },
          {
            "name": "FeaturedImage.Width",
            "in": "query",
            "description": "Width in pixels of the image which is returned. Value must be between 0 and 2000. 0 will leave the image at its original width, except when the crop property is set to false, in which case the width may change to fit in and preserve the image's original aspect ratio. Images cropped in Passle will have a 16:9 aspect ratio.",
            "required": false,
            "type": "integer",
            "format": "int32",
            "default": 400,
            "maximum": 2000,
            "minimum": 0
          },
          {
            "name": "FeaturedImage.Height",
            "in": "query",
            "description": "Height in pixels of the image which is returned. Value must be between 0 and 2000. 0 will leave the image at its original height, except when the crop property is set to false, in which case the height may change to fit in and preserve the image's original aspect ratio. Images cropped in Passle will have a 16:9 aspect ratio.",
            "required": false,
            "type": "integer",
            "format": "int32",
            "default": 400,
            "maximum": 2000,
            "minimum": 0
          },
          {
            "name": "FeaturedImage.Crop",
            "in": "query",
            "description": "Determines whether the image should be cropped in order to fit the specified area. If false or a dimension is set to 0, the original image uploaded will be resized to fit without cropping (i.e. it might be smaller than the specified dimension in order to fit). If true, the image will be cropped to fit the non-zero dimensions provided.",
            "required": false,
            "type": "boolean",
            "default": true
          }
        ],
        "responses": {
          "200": {
            "description": "The data was returned successfully.",
            "schema": {
              "$ref": "#/definitions/GetPostSuggestionsResponseModel"
            },
            "examples": {
              "application/json": {
                "TotalCount": 1,
                "Posts": [
                  {
                    "PostShortcode": "vp41k9",
                    "PassleShortcode": "vp3jsh",
                    "PostUrl": "https://blog.passle.net/post/102gz2l/2021-uk-legal-thought-leadership-index-explosion-in-thought-leadership-for-the",
                    "PostTitle": "2021 UK Legal Thought Leadership Index - Explosion in thought leadership for the country's top law firms",
                    "Authors": [
                      {
                        "Shortcode": "vp3a46",
                        "Name": "Clive Passle",
                        "EmailAddress": "clive@passle.net",
                        "ImageUrl": "https://img.passle.net/avatars/Clive+Passle.jpg",
                        "ProfileUrl": "https://www.passle.net/u/ClivePassle",
                        "Role": "Blogger at Passle",
                        "TwitterScreenName": "@ClivePassle"
                      }
                    ],
                    "CoAuthors": [],
                    "ShareViews": [
                      {
                        "SocialNetwork": "LinkedIn",
                        "TotalViews": 417
                      },
                      {
                        "SocialNetwork": "Twitter",
                        "TotalViews": 585
                      },
                      {
                        "SocialNetwork": "Facebook",
                        "TotalViews": 317
                      }
                    ],
                    "ContentTextSnippet": "We published the 2021 UK Legal Thought Leadership Index this week, and one of the key findings is...",
                    "PublishedDate": "2021-06-30T14:50:20.779+00:00",
                    "Tags": [
                      "Passle",
                      "API"
                    ],
                    "FeaturedItemMediaType": 1,
                    "FeaturedItemEmbedType": 0,
                    "FeaturedItemEmbedProvider": "none",
                    "ImageUrl": "https://images.passle.net/fit-in/640x640/Passle/53d0c8edb00e7e0540c9b34b/MediaLibrary/Images/5c7e8efa989b6e0b9033603b/2021-05-25-13-07-15-796-60acf683e5416a0f88b3beaa.jpg",
                    "TotalShares": 1319,
                    "IsRepost": false,
                    "EstimatedReadTimeInSeconds": 72,
                    "TotalLikes": 0,
                    "OpensInNewTab": false,
                    "MetaData": {
                      "Title": "Sample Title",
                      "Description": "Sample Description",
                      "Keywords": "Keyword 1,Keyword 2,Keyword 3",
                      "EnforceNoIndex": false
                    },
                    "Language": "en",
                    "AvailableLanguages": [
                      "fr",
                      "es",
                      "de"
                    ],
                    "Translations": null,
                    "PostSlug": "2021-uk-legal-thought-leadership-index-explosion-in-thought-leadership-for-the",
                    "IsExternal": false
                  }
                ],
                "PageSize": 20
              }
            }
          },
          "400": {
            "description": "The request parameters are incorrect."
          },
          "403": {
            "description": "The API Key is incorrect."
          },
          "500": {
            "description": "The server couldn't process the request."
          }
        }
      }
    },
    "/api/v2/lookupredirect": {
      "get": {
        "tags": [
          "Redirect"
        ],
        "description": "Returns a passle url that corresponds to the given remote url or a 404 if no passle url can be associated to the remote url\n## Response:\nA passle url corresponding to the given remote url\n```json\n{\n  \"RemoteId\": \"The remote url of a resource, whose passle url you want to retrieve.\"\n}\n```",
        "operationId": "Get redirect",
        "consumes": [],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "APIKey",
            "in": "header",
            "description": "Your client API key.",
            "required": true,
            "schema": {
              "type": "string",
              "example": "123abcd-XXXXXXX-XXXXXXX"
            }
          },
          {
            "name": "RemoteId",
            "in": "query",
            "description": "The remote url of a resource, whose passle url you want to retrieve.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "The data was returned successfully.",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/GetRedirectModel"
              }
            },
            "examples": {
              "application/json": {
                "RedirectUrl": "https://blog.passle.net/"
              }
            }
          },
          "400": {
            "description": "The request parameters are incorrect."
          },
          "403": {
            "description": "The API Key is incorrect."
          },
          "500": {
            "description": "The server couldn't process the request."
          }
        }
      }
    },
    "/api/v2/sync": {
      "get": {
        "tags": [
          "SyncData"
        ],
        "description": "Returns an array of objects. If DateFrom or DateTo are supplied then it will return the latest sync item for each object within that date range. If no dates are supplied then it will return all pending sync items. For more information, visit <a href='https://remote-hosting-documentation.passle.net/docs/getting-started/using-the-api/handling-webhooks' target='_blank'>handling webhooks</a>\n## Response:\nReturns an array of objects indicating Passle items for re-syncing. A payload will have the following schema:\n```json\n{\n  \"Updates\": \"An array of objects. Each object includes an action and data field for a passle item that needs re-syncing.\"\n}\n```",
        "operationId": "Get sync data items.",
        "consumes": [],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "APIKey",
            "in": "header",
            "description": "Your client API key.",
            "required": true,
            "schema": {
              "type": "string",
              "example": "123abcd-XXXXXXX-XXXXXXX"
            }
          },
          {
            "name": "PassleShortcode",
            "in": "query",
            "description": "The shortcode of the passle for which you'd like to retrieve updates for.",
            "required": false,
            "type": "string"
          },
          {
            "name": "DateFrom",
            "in": "query",
            "description": "A datetime value that will exclude updates that were before this date. If omitted, data will be returned up to the current date. Acceptable formats: 2021-03-21T18:37:45.488Z or 2021-03-21",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "DateTo",
            "in": "query",
            "description": "A datetime value that will exclude updates after this date. If omitted, data will be returned up to the current date. Acceptable formats: 2021-03-21T18:37:45.488Z or 2021-03-21",
            "required": false,
            "type": "string",
            "format": "date-time"
          }
        ],
        "responses": {
          "200": {
            "description": "The data was returned successfully.",
            "schema": {
              "$ref": "#/definitions/SyncDataGetItemsResponseModel"
            },
            "examples": {
              "application/json": {
                "Updates": [
                  {
                    "Action": 1,
                    "Data": {
                      "Shortcode": "a4f"
                    }
                  },
                  {
                    "Action": 2,
                    "Data": {
                      "Shortcode": "a5fk"
                    }
                  },
                  {
                    "Action": 4,
                    "Data": {
                      "Shortcode": "b6w"
                    }
                  },
                  {
                    "Action": 3,
                    "Data": {
                      "Shortcode": "s0b"
                    }
                  },
                  {
                    "Action": 5,
                    "Data": {
                      "PassleShortcode": "a3dh",
                      "Shortcode": "adk",
                      "IsFeatuedOnPasslePage": true,
                      "IsFeatuedOnPostPage": true
                    }
                  }
                ]
              }
            }
          },
          "400": {
            "description": "The request parameters are incorrect."
          },
          "403": {
            "description": "The API Key is incorrect."
          },
          "500": {
            "description": "The server couldn't process the request."
          }
        }
      }
    },
    "/api/v2/tagmappings": {
      "get": {
        "tags": [
          "TagMappings"
        ],
        "description": "Returns a list of tag mappings for the specified filters.\n## Response:\nThe list of tag mappings that matched your query. Each result will have the following schema:\n```json\n{\n  \"TagMappings\": \"The list of tag mappings that exist within the Passle.\"\n}\n```",
        "operationId": "Get tag mappings",
        "consumes": [],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "APIKey",
            "in": "header",
            "description": "Your client API key.",
            "required": true,
            "schema": {
              "type": "string",
              "example": "123abcd-XXXXXXX-XXXXXXX"
            }
          },
          {
            "name": "PassleShortcode",
            "in": "query",
            "description": "The shortcode of the Passle for which you'd like to see tag mappings .This is required unless `PostShortcode` is given.",
            "required": false,
            "type": "string"
          },
          {
            "name": "PostShortcode",
            "in": "query",
            "description": "A post shortcode which will return a tag mappings relating to any tags that apply to that post. If not supplied then all tag mappings will be returned regardless posts they apply to. This is required unless `PassleShortcode` is given.",
            "required": false,
            "type": "string"
          },
          {
            "name": "PageNumber",
            "in": "query",
            "description": "The page number of results to show. If the total number of results is larger than the page size (or the number of items per page in the request) then the results will be paginated and you should increment the value of `PageNumber` to see all the results.",
            "required": false,
            "type": "integer",
            "format": "int32",
            "maximum": 10000,
            "minimum": 1
          },
          {
            "name": "ItemsPerPage",
            "in": "query",
            "description": "The number of results to return per page. If the total number of results is larger than this value then your results will be paginated and you should increment the value of `PageNumber` to see all the results.",
            "required": false,
            "type": "integer",
            "format": "int32",
            "maximum": 1000,
            "minimum": 1
          },
          {
            "name": "Tags",
            "in": "query",
            "description": "The tag or tags separated by comma for which you'd like to see tag mappings. Will show tag mappings for all tags in the client if `Tags` is not provided.",
            "required": false,
            "type": "string"
          },
          {
            "name": "TagAliases",
            "in": "query",
            "description": "A single alias or comma separated list of aliases used to filter results. Only tag mappings whose aliases include at least one of the aliases provided will be returned (case insensitive). If not supplied then tag mappings will be returned regardless of aliases.",
            "required": false,
            "type": "string"
          },
          {
            "name": "UpdatedSince",
            "in": "query",
            "description": "Will show tag mappings that have updated since the date provided. Will show tag mappings updated since the begining of time if `UpdatedSince` is not provided.",
            "required": false,
            "type": "string",
            "format": "date-time"
          }
        ],
        "responses": {
          "200": {
            "description": "The data was returned successfully.",
            "schema": {
              "$ref": "#/definitions/IGetTagMappingsResponseModel"
            },
            "examples": {
              "application/json": {
                "TagMappings": [
                  {
                    "Tag": "ai",
                    "Label": "AI",
                    "Aliases": [
                      "ai",
                      "artificial intelligence"
                    ],
                    "LastUpdated": "2026-04-20T12:10:19.9320906+00:00"
                  },
                  {
                    "Tag": "podcast",
                    "Label": "Podcasts",
                    "Aliases": [
                      "legal-podcasts",
                      "company podcasts",
                      "Podcasts & interviews"
                    ],
                    "LastUpdated": "2026-04-10T12:10:19.9320906+00:00"
                  },
                  {
                    "Tag": "events",
                    "Label": "Events",
                    "Aliases": [
                      "events",
                      "Company meet-ups"
                    ],
                    "LastUpdated": "2026-03-31T12:10:19.9320906+00:00"
                  }
                ]
              }
            }
          },
          "400": {
            "description": "The request parameters are incorrect."
          },
          "403": {
            "description": "The API Key is incorrect."
          },
          "500": {
            "description": "The server couldn't process the request."
          }
        }
      }
    },
    "/api/v2/tags": {
      "get": {
        "tags": [
          "Tags"
        ],
        "description": "Returns a list of all tags across all Passles for your client.\n## Response:\n```json\n{\n  \"Tags\": \"The list of tags that have been added to posts.\"\n}\n```",
        "operationId": "Get tags",
        "consumes": [],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "APIKey",
            "in": "header",
            "description": "Your client API key.",
            "required": true,
            "schema": {
              "type": "string",
              "example": "123abcd-XXXXXXX-XXXXXXX"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The data was returned successfully.",
            "schema": {
              "$ref": "#/definitions/IGetTagsResponseModel"
            },
            "examples": {
              "application/json": {
                "Tags": [
                  "Marketing",
                  "Strategy"
                ]
              }
            }
          },
          "400": {
            "description": "The request parameters are incorrect."
          },
          "403": {
            "description": "The API Key is incorrect."
          },
          "500": {
            "description": "The server couldn't process the request."
          }
        }
      }
    },
    "/api/v2/taggroups": {
      "get": {
        "tags": [
          "TagGroups"
        ],
        "description": "Returns a list of tag groups for the entire client.\n## Response:\n```json\n{\n  \"TagGroups\": \"The list of tag groups that exist within the Passle.\"\n}\n```",
        "operationId": "Get tag groups for client",
        "consumes": [],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "APIKey",
            "in": "header",
            "description": "Your client API key.",
            "required": true,
            "schema": {
              "type": "string",
              "example": "123abcd-XXXXXXX-XXXXXXX"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The data was returned successfully.",
            "schema": {
              "$ref": "#/definitions/IGetTagGroupsResponseModel"
            },
            "examples": {
              "application/json": {
                "TagGroups": [
                  {
                    "Name": "Regions",
                    "Tags": [
                      "europe",
                      "north america",
                      "south america",
                      "asia",
                      "africa",
                      "australia"
                    ]
                  },
                  {
                    "Name": "Topics",
                    "Tags": [
                      "marketing",
                      "strategy",
                      "technology",
                      "sales",
                      "operations",
                      "finance"
                    ]
                  },
                  {
                    "Name": "Industries",
                    "Tags": [
                      "automotive",
                      "banking",
                      "consumer goods",
                      "energy",
                      "healthcare",
                      "insurance",
                      "manufacturing",
                      "media",
                      "retail",
                      "technology",
                      "telecommunications"
                    ]
                  }
                ]
              }
            }
          },
          "400": {
            "description": "The request parameters are incorrect."
          },
          "403": {
            "description": "The API Key is incorrect."
          },
          "500": {
            "description": "The server couldn't process the request."
          }
        }
      }
    },
    "/api/v2/tags/{PassleShortcode}": {
      "get": {
        "tags": [
          "Tags"
        ],
        "description": "Returns a list of tags for the specified Passle.\n## Response:\n```json\n{\n  \"Tags\": \"The list of tags that have been added to posts.\"\n}\n```",
        "operationId": "Get tags for Passle",
        "consumes": [],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "APIKey",
            "in": "header",
            "description": "Your client API key.",
            "required": true,
            "schema": {
              "type": "string",
              "example": "123abcd-XXXXXXX-XXXXXXX"
            }
          },
          {
            "name": "PassleShortcode",
            "in": "path",
            "description": "The shortcode of the Passle for which you'd like to see tags.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "The data was returned successfully.",
            "schema": {
              "$ref": "#/definitions/IGetTagsResponseModel"
            },
            "examples": {
              "application/json": {
                "Tags": [
                  "Marketing",
                  "Strategy"
                ]
              }
            }
          },
          "400": {
            "description": "The request parameters are incorrect."
          },
          "403": {
            "description": "The API Key is incorrect."
          },
          "404": {
            "description": "The requested resource could not be found."
          },
          "500": {
            "description": "The server couldn't process the request."
          }
        }
      }
    },
    "/api/v2/taggroups/{PassleShortcode}": {
      "get": {
        "tags": [
          "TagGroups"
        ],
        "description": "Returns a list of tag groups for the specified Passle.\n## Response:\n```json\n{\n  \"TagGroups\": \"The list of tag groups that exist within the Passle.\"\n}\n```",
        "operationId": "Get tag groups for Passle",
        "consumes": [],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "APIKey",
            "in": "header",
            "description": "Your client API key.",
            "required": true,
            "schema": {
              "type": "string",
              "example": "123abcd-XXXXXXX-XXXXXXX"
            }
          },
          {
            "name": "PassleShortcode",
            "in": "path",
            "description": "The shortcode of the Passle for which you'd like to see tag groups. Will show tag groups for the entire client if `PassleShortcode` is not provided.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "The data was returned successfully.",
            "schema": {
              "$ref": "#/definitions/IGetTagGroupsResponseModel"
            },
            "examples": {
              "application/json": {
                "TagGroups": [
                  {
                    "Name": "Regions",
                    "Tags": [
                      "europe",
                      "north america",
                      "south america",
                      "asia",
                      "africa",
                      "australia"
                    ]
                  },
                  {
                    "Name": "Topics",
                    "Tags": [
                      "marketing",
                      "strategy",
                      "technology",
                      "sales",
                      "operations",
                      "finance"
                    ]
                  },
                  {
                    "Name": "Industries",
                    "Tags": [
                      "automotive",
                      "banking",
                      "consumer goods",
                      "energy",
                      "healthcare",
                      "insurance",
                      "manufacturing",
                      "media",
                      "retail",
                      "technology",
                      "telecommunications"
                    ]
                  }
                ]
              }
            }
          },
          "400": {
            "description": "The request parameters are incorrect."
          },
          "403": {
            "description": "The API Key is incorrect."
          },
          "500": {
            "description": "The server couldn't process the request."
          }
        }
      }
    },
    "/api/v2/stats/user": {
      "get": {
        "tags": [
          "UserStats"
        ],
        "description": "Returns a list of data for all users within a client.\n## Response:\nThe list of users that matched your query. Each user will have the following schema:\n```json\n{\n  \"ClientName\": \"The name of the client that the user is part of.\",\n  \"Name\": \"The full name of the user.\",\n  \"Shortcode\": \"The shortcode for the user.\",\n  \"EmailAddress\": \"The user's email address.\",\n  \"NumberOfPosts\": \"The number of posts that the user has published.\",\n  \"PostViews\": \"The total number of post views across all posts the user has published.\",\n  \"ShareViews\": \"The total number of shares across all posts the user has published.\",\n  \"AccountActivated\": \"A boolean value showing whether the user has activated their account.\",\n  \"AppUser\": \"A boolean value showing whether the user uses either the Android or iOS app.\",\n  \"DateLastPostCreated\": \"A datetime value showing when the user last published a post.\",\n  \"EIScore\": \"The user's Expert Influence Score.\",\n  \"ActiveStatus\": \"A string value showing whether the user is Active, Inactive, or Never (has never been active). Users who have not sent an ISTATOY, suggested content, or published a post in the last 12 weeks will be marked as inactive.\"\n}\n```",
        "operationId": "Get user stats",
        "consumes": [],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "APIKey",
            "in": "header",
            "description": "Your client API key.",
            "required": true,
            "schema": {
              "type": "string",
              "example": "123abcd-XXXXXXX-XXXXXXX"
            }
          },
          {
            "name": "PageNumber",
            "in": "query",
            "description": "The page number of results to show. If the total number of results is larger than the page size (or the number of items per page in the request) then the results will be paginated and you should increment the value of `PageNumber` to see all the results.",
            "required": false,
            "type": "integer",
            "format": "int32",
            "maximum": 10000,
            "minimum": 1
          },
          {
            "name": "ItemsPerPage",
            "in": "query",
            "description": "The number of results to return per page. If the total number of results is larger than this value then your results will be paginated and you should increment the value of `PageNumber` to see all the results.",
            "required": false,
            "type": "integer",
            "format": "int32",
            "maximum": 1000,
            "minimum": 1
          },
          {
            "name": "SortOldestFirst",
            "in": "query",
            "description": "If true, the results will be sorted by the date that the user was created, from oldest to newest. If false, they will be sorted from newest to oldest.",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "DateFrom",
            "in": "query",
            "description": "A datetime value that will exclude users that were created before this date. If omitted, data will be returned from the date the first user was created. Acceptable formats: 2021-03-21T18:37:45.488Z or 2021-03-21",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "DateTo",
            "in": "query",
            "description": "A datetime value that will exclude users that were created after this date. If omitted, data will be returned up to the current date. Acceptable formats: 2021-03-21T18:37:45.488Z or 2021-03-21",
            "required": false,
            "type": "string",
            "format": "date-time"
          }
        ],
        "responses": {
          "200": {
            "description": "The data was returned successfully.",
            "schema": {
              "$ref": "#/definitions/UserStatsResponseModel"
            },
            "examples": {
              "application/json": {
                "UserStats": [
                  {
                    "ClientName": "Clive Passle & Co",
                    "Name": "Clive Passle",
                    "Shortcode": "vp3a46",
                    "EmailAddress": "clive@passle.net",
                    "NumberOfPosts": 12,
                    "PostViews": 5782,
                    "ShareViews": 3712,
                    "AccountActivated": true,
                    "AppUser": true,
                    "DateLastPostCreated": "2021-06-30T14:50:20.779+00:00",
                    "EIScore": 63,
                    "ActiveStatus": "Active"
                  }
                ],
                "TotalCount": 1,
                "PageNumber": 1,
                "PageSize": 20
              }
            }
          },
          "400": {
            "description": "The request parameters are incorrect."
          },
          "403": {
            "description": "The API Key is incorrect."
          },
          "500": {
            "description": "The server couldn't process the request."
          }
        }
      }
    }
  },
  "definitions": {
    "GetArchiveModel": {
      "required": [
        "PassleShortcode"
      ],
      "type": "object",
      "properties": {
        "PassleShortcode": {
          "title": "PassleShortcode",
          "description": "The shortcode of the Passle for which you'd like to see archive data.",
          "type": "string"
        }
      }
    },
    "GetArchiveResponseModel": {
      "type": "object",
      "properties": {
        "Archive": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/IArchiveModel"
          }
        }
      }
    },
    "IArchiveModel": {
      "type": "object",
      "properties": {
        "Month": {
          "format": "int32",
          "type": "integer"
        },
        "NumberOfPosts": {
          "format": "int32",
          "type": "integer"
        },
        "Year": {
          "format": "int32",
          "type": "integer"
        }
      }
    },
    "ClientConnectGetSubscriberModel": {
      "required": [
        "EmailAddress"
      ],
      "type": "object",
      "properties": {
        "EmailAddress": {
          "title": "EmailAddress",
          "description": "The email address of the client connect subscriber you want to get details for. Email address parameter must be URL encoded.",
          "type": "string"
        }
      }
    },
    "ClientConnectGetSubscriberResponseModel": {
      "type": "object",
      "properties": {
        "FirstName": {
          "title": "FirstName",
          "description": "The subscriber's first name.",
          "type": "string"
        },
        "LastName": {
          "title": "LastName",
          "description": "The subscriber's last name.",
          "type": "string"
        },
        "EmailAddress": {
          "title": "EmailAddress",
          "description": "The subscriber's email address.",
          "type": "string"
        },
        "FollowedPassles": {
          "title": "FollowedPassles",
          "description": "A list of passle shortcodes and titles that the subscriber has subscribed to.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/ISubscribableEntityDataModel"
          }
        },
        "FollowedPeople": {
          "title": "FollowedPeople",
          "description": "A list of author shortcodes and names that the subscriber has subscribed to.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/ISubscribableEntityDataModel"
          }
        },
        "FollowedTags": {
          "title": "FollowedTags",
          "description": "A list of tags that the subscriber has subscribed to.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "Company": {
          "title": "Company",
          "description": "The subscriber's company.",
          "type": "string"
        },
        "HasOptedIntoMarketingComms": {
          "title": "HasOptedIntoMarketingComms",
          "description": "A boolean value showing whether the subscriber has opted into being contacted with marketing communications.",
          "type": "boolean"
        },
        "HasAcceptedTandCs": {
          "title": "HasAcceptedTandCs",
          "description": "A boolean value showing whether the subscriber has accepted the terms and conditions.",
          "type": "boolean"
        },
        "SubscriberNotificationFrequency": {
          "title": "SubscriberNotificationFrequency",
          "description": "A string showing the frequency of Client Connect emails for this subscriber. Values are 'Unknown', 'Daily', 'Weekly', or 'Monthly.",
          "type": "string"
        }
      }
    },
    "ISubscribableEntityDataModel": {
      "type": "object",
      "properties": {
        "Shortcode": {
          "type": "string"
        },
        "Title": {
          "type": "string"
        }
      }
    },
    "ClientConnectCreateSubscriberModel": {
      "required": [
        "ChannelShortcode",
        "FirstName",
        "LastName",
        "EmailAddress",
        "NotificationFrequency"
      ],
      "type": "object",
      "properties": {
        "ChannelShortcode": {
          "title": "ChannelShortcode",
          "description": "The shortcode of the channel you'd like the subscriber to subscribe to.",
          "type": "string"
        },
        "TopicShortcodes": {
          "title": "TopicShortcodes",
          "description": "A comma separated list of topics you'd like the subscriber to subscribe to. If omitted, the subscriber will be subscribed to all topics from the selected channel.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "FirstName": {
          "title": "FirstName",
          "description": "The subscriber's first name.",
          "type": "string"
        },
        "LastName": {
          "title": "LastName",
          "description": "The subscriber's last name.",
          "type": "string"
        },
        "Company": {
          "title": "Company",
          "description": "The subscriber's company.",
          "type": "string"
        },
        "EmailAddress": {
          "title": "EmailAddress",
          "description": "The subscriber's email address.",
          "type": "string"
        },
        "AutoVerifyEmailAddress": {
          "title": "AutoVerifyEmailAddress",
          "description": "If this is set to true, the subscriber will be created with their email address automatically verified. To comply with GDPR requirements, this should only be set to true if the user has already freely given consent (opted in) and will receive the same type of content they opted in to receive previously.",
          "type": "boolean"
        },
        "NotificationFrequency": {
          "format": "int32",
          "title": "NotificationFrequency",
          "description": "The new notification frequency you'd like to set for the subscriber. Possible values are 1 (Daily), 2 (Weekly) or 3 (Monthly).",
          "enum": [
            0,
            1,
            2,
            3
          ],
          "type": "integer"
        },
        "OptIntoMarketingComms": {
          "title": "OptIntoMarketingComms",
          "description": "If this is set to true, the subscriber will be opted into being contacted with marketing communications.",
          "type": "boolean"
        }
      }
    },
    "ClientConnectCreateSubscriberResponseModel": {
      "type": "object",
      "properties": {
        "Message": {
          "type": "string"
        },
        "Success": {
          "type": "boolean"
        }
      }
    },
    "ClientConnectUnsubscribeModel": {
      "required": [
        "EmailAddress"
      ],
      "type": "object",
      "properties": {
        "EmailAddress": {
          "title": "EmailAddress",
          "description": "The email address of the client connect subscriber you'd like to unsubscribe.",
          "type": "string"
        },
        "TopicShortcodes": {
          "title": "TopicShortcodes",
          "description": "A comma separated list of topics you'd like the subscriber to unsubscribe from. If omitted, the subscriber will be unsubscribed from everything and deleted.",
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "ClientConnectUnsubscribeResponseModel": {
      "type": "object",
      "properties": {
        "Message": {
          "type": "string"
        },
        "Success": {
          "type": "boolean"
        }
      }
    },
    "ClientConnectUpdateSubscriberModel": {
      "required": [
        "EmailAddress"
      ],
      "type": "object",
      "properties": {
        "EmailAddress": {
          "title": "EmailAddress",
          "description": "The email address of the client connect subscriber you'd like to update.",
          "type": "string"
        },
        "FirstName": {
          "title": "FirstName",
          "description": "The new first name you'd like to set for the subscriber. If no value is provided, the subscriber will maintain their existing first name.",
          "type": "string"
        },
        "LastName": {
          "title": "LastName",
          "description": "The new last name you'd like to set for the subscriber. If no value is provided, the subscriber will maintain their existing last name.",
          "type": "string"
        },
        "Company": {
          "title": "Company",
          "description": "The new company name you'd like to set for the subscriber. If no value is provided, the subscriber will maintain their existing company name.",
          "type": "string"
        },
        "NotificationFrequency": {
          "format": "int32",
          "title": "NotificationFrequency",
          "description": "The new notification frequency you'd like to set for the subscriber. Possible values are 1 (Daily), 2 (Weekly) or 3 (Monthly). If no value is provided, the subscriber will maintain their existing notification frequency.",
          "enum": [
            0,
            1,
            2,
            3
          ],
          "type": "integer"
        },
        "OptIntoMarketingComms": {
          "title": "OptIntoMarketingComms",
          "description": "If this is set to true, the subscriber will be opted into being contacted with marketing communications. If no value is provided, the subscriber will maintain their original status.",
          "type": "boolean"
        }
      }
    },
    "GetClientConnectStatsModel": {
      "type": "object",
      "properties": {
        "PageNumber": {
          "format": "int32",
          "title": "PageNumber",
          "description": "The page number of results to show. If the total number of results is larger than the page size (or the number of items per page in the request) then the results will be paginated and you should increment the value of `PageNumber` to see all the results.",
          "maximum": 10000,
          "minimum": 1,
          "type": "integer"
        },
        "ItemsPerPage": {
          "format": "int32",
          "title": "ItemsPerPage",
          "description": "The number of results to return per page. If the total number of results is larger than this value then your results will be paginated and you should increment the value of `PageNumber` to see all the results.",
          "maximum": 1000,
          "minimum": 1,
          "type": "integer"
        }
      }
    },
    "ClientConnectStatsResponseModel": {
      "type": "object",
      "properties": {
        "SubscriberStats": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/IClientGroupSubscriberStatsDataModel"
          }
        },
        "TotalSubscriberCount": {
          "format": "int32",
          "type": "integer"
        },
        "PageNumber": {
          "format": "int32",
          "type": "integer"
        },
        "PageSize": {
          "format": "int32",
          "type": "integer"
        }
      }
    },
    "IClientGroupSubscriberStatsDataModel": {
      "type": "object",
      "properties": {
        "Company": {
          "type": "string"
        },
        "EmailAddress": {
          "type": "string"
        },
        "FirstName": {
          "type": "string"
        },
        "FollowedPassles": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ISubscribableEntityDataModel"
          }
        },
        "FollowedPeople": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ISubscribableEntityDataModel"
          }
        },
        "FollowedTags": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "HasAcceptedTandCs": {
          "type": "boolean"
        },
        "HasOptedIntoMarketingComms": {
          "type": "boolean"
        },
        "IsSubscribed": {
          "type": "boolean"
        },
        "LastName": {
          "type": "string"
        },
        "UnsubscribedDate": {
          "format": "date-time",
          "type": "string"
        }
      }
    },
    "GetSubscriberPostReadStatsModel": {
      "type": "object",
      "properties": {
        "PageNumber": {
          "format": "int32",
          "title": "PageNumber",
          "description": "The page number of results to show. If the total number of results is larger than the page size (or the number of items per page in the request) then the results will be paginated and you should increment the value of `PageNumber` to see all the results.",
          "maximum": 10000,
          "minimum": 1,
          "type": "integer"
        },
        "ItemsPerPage": {
          "format": "int32",
          "title": "ItemsPerPage",
          "description": "The number of results to return per page. If the total number of results is larger than this value then your results will be paginated and you should increment the value of `PageNumber` to see all the results.",
          "maximum": 10000,
          "minimum": 1,
          "type": "integer"
        },
        "SubscriberId": {
          "title": "SubscriberId",
          "description": "The userId or shortcode of a specific subscriber for whom you'd like to see data. If this is omitted or invalid, the results will show data for all subscribers; if a valid subscriber id or shortcode is given, only results for that subscriber will be returned.",
          "type": "string"
        },
        "EmailDateFrom": {
          "format": "date-time",
          "title": "EmailDateFrom",
          "description": "A datetime value indicating the starting date for filtering data. Only records with emails sent on or after this date will be included. If omitted, data will be returned up to the current date. Acceptable formats: 2021-03-21T18:37:45.488Z or 2021-03-21",
          "type": "string"
        },
        "EmailDateTo": {
          "format": "date-time",
          "title": "EmailDateTo",
          "description": "A datetime value indicating the ending date for filtering data. Only records with emails sent before this date will be included. If omitted, data from the earliest record onwards will be returned. Acceptable formats: 2021-03-21T18:37:45.488Z or 2021-03-21",
          "type": "string"
        },
        "TagFilter": {
          "title": "TagFilter",
          "description": "A single tag, or a comma-separated list of tags, used to filter results. Only posts whose tags include any of the listed tags will be returned (case insensitive).",
          "type": "string"
        }
      }
    },
    "ClientConnectSubscriberPostReadStatsResponseModel": {
      "type": "object",
      "properties": {
        "SubscriberPostReadStats": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/IClientGroupSubscriberPostReadStatsDataModel"
          }
        },
        "TotalRows": {
          "format": "int32",
          "type": "integer"
        },
        "TotalPostReadStatsCount": {
          "format": "int32",
          "type": "integer"
        },
        "PageNumber": {
          "format": "int32",
          "type": "integer"
        },
        "PageSize": {
          "format": "int32",
          "type": "integer"
        },
        "ClientGroupIds": {
          "type": "string"
        },
        "SubscriberId": {
          "type": "string"
        }
      }
    },
    "IClientGroupSubscriberPostReadStatsDataModel": {
      "type": "object",
      "properties": {
        "ClientGroupId": {
          "type": "string"
        },
        "ClientGroupTitle": {
          "type": "string"
        },
        "EmailId": {
          "type": "string"
        },
        "EmailSentDate": {
          "type": "string"
        },
        "ISTATOYSent": {
          "type": "string"
        },
        "PostAuthors": {
          "type": "string"
        },
        "PostClickedDate": {
          "type": "string"
        },
        "PostCreatedDate": {
          "type": "string"
        },
        "PostId": {
          "type": "string"
        },
        "PostLastPublishedDate": {
          "type": "string"
        },
        "PostPassleId": {
          "type": "string"
        },
        "PostPassleTitle": {
          "type": "string"
        },
        "PostTags": {
          "type": "string"
        },
        "PostTitle": {
          "type": "string"
        },
        "PostUrl": {
          "type": "string"
        },
        "SubscribedDate": {
          "type": "string"
        },
        "SubscriberAuthorsFollowed": {
          "type": "string"
        },
        "SubscriberEmail": {
          "type": "string"
        },
        "SubscriberId": {
          "type": "string"
        },
        "SubscriberIsPassleUser": {
          "type": "boolean"
        },
        "SubscriberName": {
          "type": "string"
        },
        "SubscriberNotificationFrequency": {
          "type": "string"
        },
        "SubscriberNumAuthorsFollowed": {
          "format": "int32",
          "type": "integer"
        },
        "SubscriberNumPasslesFollowed": {
          "format": "int32",
          "type": "integer"
        },
        "SubscriberPasslesFollowed": {
          "type": "string"
        }
      }
    },
    "GetClientStatsModel": {
      "type": "object",
      "properties": {
        "DateFrom": {
          "format": "date-time",
          "title": "DateFrom",
          "description": "A datetime value that will exclude data about post views and posts published before this date. If omitted, data will be returned from the date the first post was published. Acceptable formats: 2021-03-21T18:37:45.488Z or 2021-03-21",
          "type": "string"
        },
        "DateTo": {
          "format": "date-time",
          "title": "DateTo",
          "description": "A datetime value that will exclude data about post views and posts published after this date. If omitted, data will be returned up to the current date. Acceptable formats: 2021-03-21T18:37:45.488Z or 2021-03-21",
          "type": "string"
        }
      }
    },
    "ClientStatsResponseModel": {
      "type": "object",
      "properties": {
        "ClientName": {
          "title": "ClientName",
          "description": "The client's name.",
          "type": "string"
        },
        "PercentageUsersCreatingContent": {
          "format": "double",
          "title": "PercentageUsersCreatingContent",
          "description": "A decimal between 0 and 100 showing the percentage of all users who have published at least one post.",
          "type": "number"
        },
        "NumberOfPostsToDate": {
          "format": "int32",
          "title": "NumberOfPostsToDate",
          "description": "The total number of posts published within the given dates.",
          "type": "integer"
        },
        "NumberOfPostViewsToDate": {
          "format": "int32",
          "title": "NumberOfPostViewsToDate",
          "description": "The total number of views across all posts within the given dates.",
          "type": "integer"
        }
      }
    },
    "IGetPasslesResponseModel": {
      "type": "object",
      "properties": {
        "Passles": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/IPassleModel"
          }
        }
      }
    },
    "IPassleModel": {
      "type": "object",
      "properties": {
        "PassleTitle": {
          "type": "string"
        },
        "Shortcode": {
          "type": "string"
        }
      }
    },
    "PassleSyncGetPeopleModel": {
      "type": "object",
      "properties": {
        "PassleShortcode": {
          "title": "PassleShortcode",
          "description": "The shortcode of the passle for which you'd like to see people's data. This is a required parameter unless `PersonShortcode` is given.",
          "type": "string"
        },
        "PersonShortcode": {
          "title": "PersonShortcode",
          "description": "A comma-separated list of person shortcodes for which you'd like to see data. This is a required parameter unless `PassleShortcode` is given.",
          "type": "string"
        },
        "PageNumber": {
          "format": "int32",
          "title": "PageNumber",
          "description": "The page number of results to show. If the total number of results is larger than the page size (or the number of items per page in the request) then the results will be paginated and you should increment the value of `PageNumber` to see all the results.",
          "maximum": 10000,
          "minimum": 1,
          "type": "integer"
        },
        "ItemsPerPage": {
          "format": "int32",
          "title": "ItemsPerPage",
          "description": "The number of results to return per page. If the total number of results is larger than this value then your results will be paginated and you should increment the value of `PageNumber` to see all the results.",
          "maximum": 100,
          "minimum": 1,
          "type": "integer"
        },
        "Image": {
          "$ref": "#/definitions/ImageRequestOptionsModel",
          "X-PassleImageWidth": 200,
          "X-PassleImageHeight": 200,
          "X-PassleImageCrop": false
        }
      },
      "X-PassleContainsImage": true
    },
    "ImageRequestOptionsModel": {
      "type": "object",
      "properties": {
        "Width": {
          "format": "int32",
          "title": "Width",
          "description": "Width in pixels of the image which is returned. Value must be between 0 and 2000. 0 will leave the image at its original width, except when the crop property is set to false, in which case the width may change to fit in and preserve the image's original aspect ratio. Images cropped in Passle will have a 16:9 aspect ratio.",
          "maximum": 2000,
          "minimum": 0,
          "type": "integer"
        },
        "Height": {
          "format": "int32",
          "title": "Height",
          "description": "Height in pixels of the image which is returned. Value must be between 0 and 2000. 0 will leave the image at its original height, except when the crop property is set to false, in which case the height may change to fit in and preserve the image's original aspect ratio. Images cropped in Passle will have a 16:9 aspect ratio.",
          "maximum": 2000,
          "minimum": 0,
          "type": "integer"
        },
        "Crop": {
          "title": "Crop",
          "description": "Determines whether the image should be cropped in order to fit the specified area. If false or a dimension is set to 0, the original image uploaded will be resized to fit without cropping (i.e. it might be smaller than the specified dimension in order to fit). If true, the image will be cropped to fit the non-zero dimensions provided.",
          "type": "boolean"
        }
      }
    },
    "IPassleSyncGetPeopleResponseModel": {
      "type": "object",
      "properties": {
        "PageNumber": {
          "format": "int32",
          "type": "integer"
        },
        "PageSize": {
          "format": "int32",
          "type": "integer"
        },
        "People": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/IPersonWithDescriptionModel"
          }
        },
        "TotalCount": {
          "format": "int32",
          "type": "integer"
        }
      }
    },
    "IPersonWithDescriptionModel": {
      "type": "object",
      "properties": {
        "AvatarUrl": {
          "type": "string"
        },
        "Description": {
          "type": "string"
        },
        "EmailAddress": {
          "type": "string"
        },
        "FacebookProfileLink": {
          "type": "string"
        },
        "InstagramProfileLink": {
          "type": "string"
        },
        "LinkedInProfileLink": {
          "type": "string"
        },
        "LocationCountry": {
          "type": "string"
        },
        "LocationDetail": {
          "type": "string"
        },
        "Name": {
          "type": "string"
        },
        "PersonalLinks": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ILinkModel"
          }
        },
        "PhoneNumber": {
          "type": "string"
        },
        "PinterestProfileLink": {
          "type": "string"
        },
        "ProfileUrl": {
          "type": "string"
        },
        "RoleInfo": {
          "type": "string"
        },
        "Shortcode": {
          "type": "string"
        },
        "SkypeProfileLink": {
          "type": "string"
        },
        "StumbleUponProfileLink": {
          "type": "string"
        },
        "SubscribeLink": {
          "type": "string"
        },
        "TagLineCompany": {
          "type": "string"
        },
        "TwitterScreenName": {
          "type": "string"
        },
        "VimeoProfileLink": {
          "type": "string"
        },
        "XingProfileLink": {
          "type": "string"
        },
        "YouTubeProfileLink": {
          "type": "string"
        }
      }
    },
    "ILinkModel": {
      "type": "object",
      "properties": {
        "Title": {
          "type": "string"
        },
        "Url": {
          "type": "string"
        }
      }
    },
    "PassleSyncGetPersonModel": {
      "required": [
        "PersonShortcode"
      ],
      "type": "object",
      "properties": {
        "PersonShortcode": {
          "title": "PersonShortcode",
          "description": "The shortcode of the person whose data you'd like to see.",
          "type": "string"
        },
        "Image": {
          "$ref": "#/definitions/ImageRequestOptionsModel",
          "X-PassleImageWidth": 200,
          "X-PassleImageHeight": 200,
          "X-PassleImageCrop": false
        }
      },
      "X-PassleContainsImage": true
    },
    "PersonWithDescriptionModel": {
      "type": "object",
      "properties": {
        "Shortcode": {
          "title": "Shortcode",
          "description": "The shortcode for the person.",
          "type": "string"
        },
        "ProfileUrl": {
          "title": "ProfileUrl",
          "description": "The url for the person's profile.",
          "type": "string"
        },
        "Name": {
          "title": "Name",
          "description": "The person's full name.",
          "type": "string"
        },
        "SubscribeLink": {
          "title": "SubscribeLink",
          "description": "The url to the subscribe page for this person.",
          "type": "string"
        },
        "AvatarUrl": {
          "title": "AvatarUrl",
          "description": "The url for this person's avatar image.",
          "type": "string"
        },
        "RoleInfo": {
          "title": "RoleInfo",
          "description": "The tagline for this person.",
          "type": "string"
        },
        "Description": {
          "title": "Description",
          "description": "The profile description for this person.",
          "type": "string"
        },
        "EmailAddress": {
          "title": "EmailAddress",
          "description": "The person's email address. Obsolete. Please use PublicEmailAddress or PrimaryEmailAddress instead.",
          "type": "string"
        },
        "PublicEmailAddress": {
          "title": "PublicEmailAddress",
          "description": "The person's email address set as public email on their profile.",
          "type": "string"
        },
        "PrimaryEmailAddress": {
          "title": "PrimaryEmailAddress",
          "description": "The person's email address that is set as primary. Can be used as an identifier.",
          "type": "string"
        },
        "PhoneNumber": {
          "title": "PhoneNumber",
          "description": "The person's phone number.",
          "type": "string"
        },
        "LinkedInProfileLink": {
          "title": "LinkedInProfileLink",
          "description": "The url to the person's LinkedIn profile.",
          "type": "string"
        },
        "FacebookProfileLink": {
          "title": "FacebookProfileLink",
          "description": "The url to the person's LinkedIn profile.",
          "type": "string"
        },
        "TwitterScreenName": {
          "title": "TwitterScreenName",
          "description": "The person's Twitter screen name.",
          "type": "string"
        },
        "XingProfileLink": {
          "title": "XingProfileLink",
          "description": "The url to the person's Xing profile.",
          "type": "string"
        },
        "SkypeProfileLink": {
          "title": "SkypeProfileLink",
          "description": "The url to the person's Skype profile.",
          "type": "string"
        },
        "VimeoProfileLink": {
          "title": "VimeoProfileLink",
          "description": "The url to the person's Vimeo profile.",
          "type": "string"
        },
        "YouTubeProfileLink": {
          "title": "YouTubeProfileLink",
          "description": "The url to the person's YouTube profile.",
          "type": "string"
        },
        "StumbleUponProfileLink": {
          "title": "StumbleUponProfileLink",
          "description": "The url to the person's StumbleUpon profile.",
          "type": "string"
        },
        "PinterestProfileLink": {
          "title": "PinterestProfileLink",
          "description": "The url to the person's Pinterest profile.",
          "type": "string"
        },
        "InstagramProfileLink": {
          "title": "InstagramProfileLink",
          "description": "The url to the person's Instagram profile.",
          "type": "string"
        },
        "PersonalLinks": {
          "title": "PersonalLinks",
          "description": "A list of titles and urls for any other links the person may have added to their profile.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/ILinkModel"
          }
        },
        "LocationDetail": {
          "title": "LocationDetail",
          "description": "The city/region the person is in.",
          "type": "string"
        },
        "LocationCountry": {
          "title": "LocationCountry",
          "description": "The country the person is in.",
          "type": "string"
        },
        "TagLineCompany": {
          "title": "TagLineCompany",
          "description": "The tagline for the client the person is in.",
          "type": "string"
        }
      }
    },
    "PassleSyncGetPostsModel": {
      "type": "object",
      "properties": {
        "PassleShortcode": {
          "title": "PassleShortcode",
          "description": "The shortcode of the passle for which you'd like to see post data. This is a required parameter unless `PostShortcode` is given.",
          "type": "string"
        },
        "PostShortcode": {
          "title": "PostShortcode",
          "description": "A comma-separated list of post shortcodes for which you'd like to see data. This is a required parameter unless `PassleShortcode` is given.",
          "type": "string"
        },
        "PageNumber": {
          "format": "int32",
          "title": "PageNumber",
          "description": "The page number of results to show. If the total number of results is larger than the page size (or the number of items per page in the request) then the results will be paginated and you should increment the value of `PageNumber` to see all the results.",
          "maximum": 10000,
          "minimum": 1,
          "type": "integer"
        },
        "ItemsPerPage": {
          "format": "int32",
          "title": "ItemsPerPage",
          "description": "The number of results to return per page. If the total number of results is larger than this value then your results will be paginated and you should increment the value of `PageNumber` to see all the results.",
          "maximum": 100,
          "minimum": 1,
          "type": "integer"
        },
        "IncludeTagGroups": {
          "title": "IncludeTagGroups",
          "description": "A boolean value that, when set to true, includes data about the tag groups to which each post tag belongs. By default, this option is set to false.",
          "type": "boolean"
        },
        "IncludeIntegrationTestContent": {
          "title": "IncludeIntegrationTestContent",
          "description": "If true, integration test content data will be included in the response only if the API key being used has 'Include Integration Content Test' also enabled. If left unset, the content data will be included depending on the 'Include Integration Content Test' option of the API key.",
          "type": "boolean"
        },
        "AuthorImage": {
          "$ref": "#/definitions/ImageRequestOptionsModel",
          "X-PassleImageWidth": 150,
          "X-PassleImageHeight": 150,
          "X-PassleImageCrop": false
        },
        "FeaturedImage": {
          "$ref": "#/definitions/ImageRequestOptionsModel",
          "X-PassleImageWidth": 400,
          "X-PassleImageHeight": 400,
          "X-PassleImageCrop": true
        }
      },
      "X-PassleContainsImage": true
    },
    "PassleSyncGetPostsResponseModel": {
      "type": "object",
      "properties": {
        "TotalCount": {
          "format": "int32",
          "title": "TotalCount",
          "description": "The total number of posts returned.",
          "type": "integer"
        },
        "PageNumber": {
          "format": "int32",
          "title": "PageNumber",
          "description": "The page number of results shown.",
          "type": "integer"
        },
        "PageSize": {
          "format": "int32",
          "title": "PageSize",
          "description": "The total number of items in a page.",
          "type": "integer"
        },
        "Posts": {
          "title": "Posts",
          "description": "An array of posts matching the query.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/IPassleSyncPostModel"
          }
        }
      }
    },
    "IPassleSyncPostModel": {
      "type": "object",
      "properties": {
        "Authors": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/IAuthorModel"
          },
          "readOnly": true
        },
        "AvailableLanguages": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "CoAuthors": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/IAuthorModel"
          },
          "readOnly": true
        },
        "ContentTextSnippet": {
          "type": "string"
        },
        "EstimatedReadTimeInSeconds": {
          "format": "int32",
          "type": "integer"
        },
        "FeaturedItemEmbedProvider": {
          "type": "string"
        },
        "FeaturedItemEmbedType": {
          "format": "int32",
          "enum": [
            0,
            1,
            2,
            3,
            4
          ],
          "type": "integer"
        },
        "FeaturedItemHtml": {
          "type": "string"
        },
        "FeaturedItemMediaType": {
          "format": "int32",
          "enum": [
            0,
            1,
            2,
            3,
            4,
            5,
            6
          ],
          "type": "integer"
        },
        "FeaturedItemPosition": {
          "format": "int32",
          "enum": [
            0,
            1,
            2,
            3
          ],
          "type": "integer"
        },
        "ImageUrl": {
          "type": "string"
        },
        "IsExternal": {
          "type": "boolean"
        },
        "IsFeaturedOnPasslePage": {
          "type": "boolean"
        },
        "IsFeaturedOnPostPage": {
          "type": "boolean"
        },
        "IsRepost": {
          "type": "boolean"
        },
        "Language": {
          "type": "string"
        },
        "MetaData": {
          "$ref": "#/definitions/IMetaDataModel"
        },
        "OpensInNewTab": {
          "type": "boolean"
        },
        "PostContentHtml": {
          "type": "string"
        },
        "PostShortcode": {
          "type": "string"
        },
        "PostSlug": {
          "type": "string"
        },
        "PostTitle": {
          "type": "string"
        },
        "PostUrl": {
          "type": "string"
        },
        "PublishedDate": {
          "format": "date-time",
          "type": "string"
        },
        "QuoteText": {
          "type": "string"
        },
        "QuoteUrl": {
          "type": "string"
        },
        "ShareViews": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/IShareViewsModel"
          },
          "readOnly": true
        },
        "TagGroups": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/IPassleSyncTagGroupModel"
          }
        },
        "TagMappings": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/IPassleSyncTagMappingModel"
          }
        },
        "Tags": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "TotalLikes": {
          "format": "int32",
          "type": "integer"
        },
        "TotalShares": {
          "format": "int32",
          "type": "integer"
        },
        "Translations": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/IPostTranslationModel"
          }
        }
      }
    },
    "IPassleSyncTagMappingModel": {
      "type": "object",
      "properties": {
        "Aliases": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "Label": {
          "type": "string"
        },
        "Tag": {
          "type": "string"
        }
      }
    },
    "IPassleSyncTagGroupModel": {
      "type": "object",
      "properties": {
        "Name": {
          "type": "string"
        },
        "TagMappings": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/IPassleSyncTagMappingModel"
          }
        }
      }
    },
    "IAuthorModel": {
      "type": "object",
      "properties": {
        "EmailAddress": {
          "type": "string"
        },
        "ImageUrl": {
          "type": "string"
        },
        "Name": {
          "type": "string"
        },
        "ProfileUrl": {
          "type": "string"
        },
        "Role": {
          "type": "string"
        },
        "Shortcode": {
          "type": "string"
        },
        "TwitterScreenName": {
          "type": "string"
        }
      }
    },
    "IShareViewsModel": {
      "type": "object",
      "properties": {
        "SocialNetwork": {
          "format": "int32",
          "enum": [
            0,
            1,
            2,
            4,
            7,
            8,
            16,
            32
          ],
          "type": "integer"
        },
        "TotalViews": {
          "format": "int32",
          "type": "integer"
        }
      }
    },
    "IMetaDataModel": {
      "type": "object",
      "properties": {
        "Description": {
          "type": "string",
          "readOnly": true
        },
        "EnforceNoIndex": {
          "type": "boolean"
        },
        "Keywords": {
          "type": "string",
          "readOnly": true
        },
        "Title": {
          "type": "string",
          "readOnly": true
        }
      }
    },
    "IPostTranslationModel": {
      "type": "object",
      "properties": {
        "ContentTextSnippet": {
          "type": "string"
        },
        "EstimatedReadTimeInSeconds": {
          "format": "int32",
          "type": "integer"
        },
        "Language": {
          "type": "string"
        },
        "PostContentHtml": {
          "type": "string"
        },
        "PostSlug": {
          "type": "string"
        },
        "PostTitle": {
          "type": "string"
        },
        "PostUrl": {
          "type": "string"
        }
      }
    },
    "PassleSyncGetPostModel": {
      "type": "object",
      "properties": {
        "PostShortcode": {
          "title": "PostShortcode",
          "description": "The shortcode of the post for which you'd like to see data.",
          "type": "string"
        },
        "IncludeTagGroups": {
          "title": "IncludeTagGroups",
          "description": "A boolean value that, when set to true, includes data about the tag groups to which each post tag belongs. By default, this option is set to false.",
          "type": "boolean"
        },
        "AuthorImage": {
          "$ref": "#/definitions/ImageRequestOptionsModel",
          "X-PassleImageWidth": 150,
          "X-PassleImageHeight": 150,
          "X-PassleImageCrop": false
        },
        "FeaturedImage": {
          "$ref": "#/definitions/ImageRequestOptionsModel",
          "X-PassleImageWidth": 400,
          "X-PassleImageHeight": 400,
          "X-PassleImageCrop": true
        }
      },
      "X-PassleContainsImage": true
    },
    "PassleSyncPostModel": {
      "type": "object",
      "properties": {
        "PostShortcode": {
          "title": "PostShortcode",
          "description": "The shortcode for the post.",
          "type": "string"
        },
        "PassleShortcode": {
          "title": "PassleShortcode",
          "description": "The shortcode for the passle the post is published in.",
          "type": "string"
        },
        "PostUrl": {
          "title": "PostUrl",
          "description": "The url for the post.",
          "type": "string"
        },
        "PostTitle": {
          "title": "PostTitle",
          "description": "The title of the post.",
          "type": "string"
        },
        "Authors": {
          "title": "Authors",
          "description": "A list containing the details of the primary authors of this post.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/IAuthorModel"
          },
          "readOnly": true
        },
        "CoAuthors": {
          "title": "CoAuthors",
          "description": "A list containing the details of the co-authors of this post.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/IAuthorModel"
          },
          "readOnly": true
        },
        "ShareViews": {
          "title": "ShareViews",
          "description": "A list showing how often the post has been shared via different social media channels (LinkedIn, Twitter, Facebook, Xing, Email).",
          "type": "array",
          "items": {
            "$ref": "#/definitions/IShareViewsModel"
          },
          "readOnly": true
        },
        "ContentTextSnippet": {
          "title": "ContentTextSnippet",
          "description": "The first few lines of the post.",
          "type": "string"
        },
        "PublishedDate": {
          "format": "date-time",
          "title": "PublishedDate",
          "description": "A datetime value showing when this post was published.",
          "type": "string"
        },
        "Tags": {
          "title": "Tags",
          "description": "A list of tags for this post.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "FeaturedItemMediaType": {
          "format": "int32",
          "title": "FeaturedItemMediaType",
          "description": "An integer showing what type of media the post's featured media is. 0 - None; 1 - Image; 2 - Video; 3 - Audio; 4 - Embedded link / item; 5 - Font; 6 - Document.",
          "enum": [
            0,
            1,
            2,
            3,
            4,
            5,
            6
          ],
          "type": "integer"
        },
        "FeaturedItemEmbedType": {
          "format": "int32",
          "title": "FeaturedItemEmbedType",
          "description": "An integer showing what type of embed the post's embedded item is, if the featured media is of type '4 - Embedded link / item'. 0 - None; 1 - Photo; 2 - Video; 3 - Link; 4 - Rich.",
          "enum": [
            0,
            1,
            2,
            3,
            4
          ],
          "type": "integer"
        },
        "FeaturedItemEmbedProvider": {
          "title": "FeaturedItemEmbedProvider",
          "description": "A string showing what provider the embedded item came from, if the featured media is of type '4 - Embedded link / item'.",
          "type": "string"
        },
        "ImageUrl": {
          "title": "ImageUrl",
          "description": "The url for the post's featured media.",
          "type": "string"
        },
        "TotalShares": {
          "format": "int32",
          "title": "TotalShares",
          "description": "An integer showing how many times this post has been shared.",
          "type": "integer"
        },
        "IsRepost": {
          "title": "IsRepost",
          "description": "A boolean value showing whether this post is a repost of an original post.",
          "type": "boolean"
        },
        "EstimatedReadTimeInSeconds": {
          "format": "int32",
          "title": "EstimatedReadTimeInSeconds",
          "description": "An integer showing the estimated time to read the post, in seconds.",
          "type": "integer"
        },
        "TotalLikes": {
          "format": "int32",
          "title": "TotalLikes",
          "description": "An integer showing how many times the post has been liked.",
          "type": "integer"
        },
        "OpensInNewTab": {
          "title": "OpensInNewTab",
          "description": "A boolean value showing if the post should open in a new tab.",
          "type": "boolean"
        },
        "MetaData": {
          "$ref": "#/definitions/IMetaDataModel",
          "title": "MetaData",
          "description": "The set of SEO metadata for this post."
        },
        "AvailableLanguages": {
          "title": "AvailableLanguages",
          "description": "The set of HTML ISO Language codes that correspond to the available languages this post is written in.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "Language": {
          "title": "Language",
          "description": "An HTML ISO Language code that corresponds to the language of the post content.",
          "type": "string"
        },
        "Translations": {
          "title": "Translations",
          "description": "The post content, written in different languages that this post is available in.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/IPostTranslationModel"
          }
        },
        "PostSlug": {
          "title": "PostSlug",
          "description": "A string value generated from a post title which can be included in a post url structure.",
          "type": "string"
        },
        "IsExternal": {
          "title": "IsExternal",
          "description": "A boolean value indicating if a post is external.",
          "type": "boolean"
        },
        "PostContentHtml": {
          "title": "PostContentHtml",
          "description": "The html content of this post.",
          "type": "string"
        },
        "FeaturedItemHtml": {
          "title": "FeaturedItemHtml",
          "description": "The html content for the post's featured media.",
          "type": "string"
        },
        "FeaturedItemPosition": {
          "format": "int32",
          "title": "FeaturedItemPosition",
          "description": "An integer showing where the featured media is shown in the post. Values are: 0 - None; 1 - At the bottom of the post; 2 - At the top of the post; 3 - In the post's header.",
          "enum": [
            0,
            1,
            2,
            3
          ],
          "type": "integer"
        },
        "QuoteText": {
          "title": "QuoteText",
          "description": "The text used in the post's quote.",
          "type": "string"
        },
        "QuoteUrl": {
          "title": "QuoteUrl",
          "description": "The url for the post's quote.",
          "type": "string"
        },
        "IsFeaturedOnPasslePage": {
          "title": "IsFeaturedOnPasslePage",
          "description": "A boolean showing whether the post is featured on the Passle page.",
          "type": "boolean"
        },
        "IsFeaturedOnPostPage": {
          "title": "IsFeaturedOnPostPage",
          "description": "A boolean showing whether the post is featured on the post page.",
          "type": "boolean"
        },
        "TagMappings": {
          "title": "TagMappings",
          "description": "The list of tag mappings that matched the post.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/IPassleSyncTagMappingModel"
          }
        },
        "TagGroups": {
          "title": "TagGroups",
          "description": "The list of tag groups that matched the post. If the tag groups module has not been configured, an empty array will be returned.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/IPassleSyncTagGroupModel"
          }
        },
        "Tweets": {
          "type": "array",
          "items": {
            "type": "object"
          }
        }
      }
    },
    "GetPeopleModel": {
      "required": [
        "PassleShortcode"
      ],
      "type": "object",
      "properties": {
        "PassleShortcode": {
          "title": "PassleShortcode",
          "description": "The shortcode of the passle for which you'd like to see people's data.",
          "type": "string"
        },
        "PageNumber": {
          "format": "int32",
          "title": "PageNumber",
          "description": "The page number of results to show. If the total number of results is larger than the page size (or the number of items per page in the request) then the results will be paginated and you should increment the value of `PageNumber` to see all the results.",
          "maximum": 10000,
          "minimum": 1,
          "type": "integer"
        },
        "ItemsPerPage": {
          "format": "int32",
          "title": "ItemsPerPage",
          "description": "The number of results to return per page. If the total number of results is larger than this value then your results will be paginated and you should increment the value of `PageNumber` to see all the results.",
          "maximum": 1000,
          "minimum": 1,
          "type": "integer"
        },
        "SearchQuery": {
          "title": "SearchQuery",
          "description": "A word or sentence used to filter results. Only people whose names match the search query will be returned (case insensitive).",
          "type": "string"
        },
        "SortOrder": {
          "format": "int32",
          "title": "SortOrder",
          "description": "An enum used to return the results in a specific order. 'None' or 0 will not order the results. 'Surname' or 1 will order the results by surname, A-Z (which is the default if no value is given). 'Activity' or 2 will order the results by Expert Influence Score, largest to smallest.",
          "enum": [
            0,
            1,
            2
          ],
          "type": "integer"
        },
        "Filter": {
          "title": "Filter",
          "description": "A single character used to filter results. Only people whose surname starts with the given character will be returned (case sensitive).",
          "type": "string"
        },
        "IncludeIntegrationTestContent": {
          "title": "IncludeIntegrationTestContent",
          "description": "If true, integration test content data will be included in the response only if the API key being used has 'Include Integration Content Test' also enabled. If left unset, the content data will be included depending on the 'Include Integration Content Test' option of the API key.",
          "type": "boolean"
        },
        "Image": {
          "$ref": "#/definitions/ImageRequestOptionsModel",
          "X-PassleImageWidth": 200,
          "X-PassleImageHeight": 200,
          "X-PassleImageCrop": false
        }
      },
      "X-PassleContainsImage": true
    },
    "IGetPeopleResponseModel": {
      "type": "object",
      "properties": {
        "Filter": {
          "type": "string"
        },
        "FilterOptions": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "People": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/IPersonModel"
          }
        },
        "ShowFilters": {
          "type": "boolean"
        },
        "TotalCount": {
          "format": "int32",
          "type": "integer"
        }
      }
    },
    "IPersonModel": {
      "type": "object",
      "properties": {
        "AvatarUrl": {
          "type": "string"
        },
        "Name": {
          "type": "string"
        },
        "ProfileUrl": {
          "type": "string"
        },
        "RoleInfo": {
          "type": "string"
        },
        "Shortcode": {
          "type": "string"
        },
        "SubscribeLink": {
          "type": "string"
        }
      }
    },
    "GetPeopleBySearchModel": {
      "required": [
        "SearchQuery"
      ],
      "type": "object",
      "properties": {
        "SearchQuery": {
          "title": "SearchQuery",
          "description": "A word or sentence used to search people.",
          "type": "string"
        },
        "Limit": {
          "format": "int32",
          "title": "Limit",
          "description": "The max number of results to return. Value must be between 1 and 100.",
          "default": 20,
          "maximum": 100,
          "minimum": 1,
          "type": "integer"
        },
        "Image": {
          "$ref": "#/definitions/ImageRequestOptionsModel",
          "X-PassleImageWidth": 200,
          "X-PassleImageHeight": 200,
          "X-PassleImageCrop": false
        }
      },
      "X-PassleContainsImage": true
    },
    "IGetPeopleBySearchResponseModel": {
      "type": "object",
      "properties": {
        "Results": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/IPersonSearchProfileModel"
          },
          "readOnly": true
        }
      }
    },
    "IPersonSearchProfileModel": {
      "type": "object",
      "properties": {
        "AvatarUrl": {
          "type": "string"
        },
        "FirstName": {
          "type": "string"
        },
        "LastName": {
          "type": "string"
        },
        "LocationCountry": {
          "type": "string"
        },
        "LocationDetail": {
          "type": "string"
        },
        "Name": {
          "type": "string"
        },
        "ProfileSummary": {
          "type": "string"
        },
        "ProfileUrl": {
          "type": "string"
        },
        "RoleInfo": {
          "type": "string"
        },
        "Shortcode": {
          "type": "string"
        },
        "SubscribeLink": {
          "type": "string"
        },
        "TagLineCompany": {
          "type": "string"
        }
      }
    },
    "GetPersonModel": {
      "required": [
        "PersonShortcode"
      ],
      "type": "object",
      "properties": {
        "PersonShortcode": {
          "title": "PersonShortcode",
          "description": "The shortcode of the person for which you'd like to see more information.",
          "type": "string"
        },
        "Image": {
          "$ref": "#/definitions/ImageRequestOptionsModel",
          "X-PassleImageWidth": 200,
          "X-PassleImageHeight": 200,
          "X-PassleImageCrop": false
        }
      },
      "X-PassleContainsImage": true
    },
    "IGetPersonResponseModel": {
      "type": "object",
      "properties": {
        "AboutMe": {
          "type": "string"
        },
        "AvatarUrl": {
          "type": "string"
        },
        "EmailAddress": {
          "type": "string"
        },
        "FacebookProfileLink": {
          "type": "string"
        },
        "InstagramProfileLink": {
          "type": "string"
        },
        "LinkedInProfileLink": {
          "type": "string"
        },
        "LocationCountry": {
          "type": "string"
        },
        "LocationDetail": {
          "type": "string"
        },
        "Name": {
          "type": "string"
        },
        "PersonalLinks": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ILinkModel"
          }
        },
        "PhoneNumber": {
          "type": "string"
        },
        "PinterestProfileLink": {
          "type": "string"
        },
        "Role": {
          "type": "string"
        },
        "Shortcode": {
          "type": "string"
        },
        "SkypeProfileLink": {
          "type": "string"
        },
        "StumbleUponProfileLink": {
          "type": "string"
        },
        "SubscribeLink": {
          "type": "string"
        },
        "TagLineCompany": {
          "type": "string"
        },
        "TwitterScreenName": {
          "type": "string"
        },
        "VimeoProfileLink": {
          "type": "string"
        },
        "WebsiteLink": {
          "type": "string"
        },
        "XingProfileLink": {
          "type": "string"
        },
        "YouTubeProfileLink": {
          "type": "string"
        }
      }
    },
    "GetPostsModel": {
      "type": "object",
      "properties": {
        "PassleShortcode": {
          "title": "PassleShortcode",
          "description": "The shortcode of the passle for which you'd like to see post data. This is required unless `AuthorShortcode` is given.",
          "type": "string"
        },
        "PageNumber": {
          "format": "int32",
          "title": "PageNumber",
          "description": "The page number of results to show. If the total number of results is larger than the page size (or the number of items per page in the request) then the results will be paginated and you should increment the value of `PageNumber` to see all the results.",
          "maximum": 10000,
          "minimum": 1,
          "type": "integer"
        },
        "ItemsPerPage": {
          "format": "int32",
          "title": "ItemsPerPage",
          "description": "The number of results to return per page. If the total number of results is larger than this value then your results will be paginated and you should increment the value of `PageNumber` to see all the results.",
          "maximum": 1000,
          "minimum": 1,
          "type": "integer"
        },
        "DateFrom": {
          "format": "date-time",
          "title": "DateFrom",
          "description": "A datetime value that will exclude posts that were published before this date. If omitted, data will be returned from the date the first post was published. Acceptable formats: 2021-03-21T18:37:45.488Z or 2021-03-21",
          "type": "string"
        },
        "DateTo": {
          "format": "date-time",
          "title": "DateTo",
          "description": "A datetime value that will exclude posts that were published after this date. If omitted, data will be returned up to the current date. Acceptable formats: 2021-03-21T18:37:45.488Z or 2021-03-21",
          "type": "string"
        },
        "TagFilter": {
          "title": "TagFilter",
          "description": "A single tag, or a comma-separated list of tags (maximum 20), used to filter results. Depending on the value of the TagMatchType parameter, you can control whether the AND or OR operator is applied for this filter. Tags will be matched either when the tag is directly applied to the post or when an alias exists which maps to a tag on the post. If not supplied then posts will be returned regardless of tags.",
          "type": "string"
        },
        "TagMatchType": {
          "format": "int32",
          "title": "TagMatchType",
          "description": "An enum used to control whether the AND or OR operator is applied to the TagFilter parameter. 'MatchAllTags' or 1 will apply the AND operator. 'MatchAnyTags' or 2 will apply the OR operator. If unset, the AND operator will be applied.",
          "enum": [
            0,
            1,
            2,
            3,
            4
          ],
          "type": "integer"
        },
        "SearchQuery": {
          "title": "SearchQuery",
          "description": "A word or sentence used to filter results. Only posts whose post title, content, author, quote or tags match the search query will be returned, and posts will be ordered by relevance (case insensitive).",
          "type": "string"
        },
        "AuthorShortcode": {
          "title": "AuthorShortcode",
          "description": "The shortcode, or primary email address, of the author whose posts you'd like to see data for. This is required unless `PassleShortcode` is given.",
          "type": "string"
        },
        "ExcludeFeaturedPost": {
          "title": "ExcludeFeaturedPost",
          "description": "If true, featured posts will be excluded from the results.",
          "type": "boolean"
        },
        "IncludeReposts": {
          "title": "IncludeReposts",
          "description": "If true, reposts will be included in the results.",
          "type": "boolean"
        },
        "RepostedFrom": {
          "title": "RepostedFrom",
          "description": "The shortcode, or comma-separated list of shortcodes that correspond to the source passle(s) of the post data. If specified, the results will contain only reposts that were originally posted to the given passle(s) irrespective of the IncludeReposts value.",
          "type": "string"
        },
        "SearchByTagsOnly": {
          "title": "SearchByTagsOnly",
          "description": "If true, `SearchQuery` will search against tags only. If false, `SearchQuery` will search against tags and other text fields.",
          "type": "boolean"
        },
        "SearchByAuthorsOnly": {
          "title": "SearchByAuthorsOnly",
          "description": "If true, SearchQuery will search against authors only. If false, SearchQuery will search against authors and other text fields.",
          "type": "boolean"
        },
        "FeaturedImage": {
          "$ref": "#/definitions/ImageRequestOptionsModel",
          "description": "Options for the featured image that goes with the post. Default size is 400px x 400px.",
          "X-PassleImageWidth": 400,
          "X-PassleImageHeight": 400,
          "X-PassleImageCrop": true
        },
        "AuthorImage": {
          "$ref": "#/definitions/ImageRequestOptionsModel",
          "description": "Options for the post author's and co-author's avatar images. Default size: 150px x 150px.",
          "X-PassleImageWidth": 150,
          "X-PassleImageHeight": 150,
          "X-PassleImageCrop": false
        },
        "SortOrder": {
          "format": "int32",
          "title": "SortOrder",
          "description": "An enum used to return the results in a specific order. 'None' or 0 will not order the results. 'Date' or 1 will order the results by published date, oldest to newest (which is the default if no value is given). 'Popularity' or 2 will order the results by most views to fewest.\n\nPlease note: If the `SearchQuery` parameter is set then this parameter will have no effect as the results will be ordered by relevance.",
          "enum": [
            0,
            1,
            2
          ],
          "type": "integer"
        },
        "ExcludeExternalPosts": {
          "title": "ExcludeExternalPosts",
          "description": "If true, external posts will be excluded from the results.",
          "type": "boolean"
        },
        "IncludeIntegrationTestContent": {
          "title": "IncludeIntegrationTestContent",
          "description": "If true, integration test content data will be included in the response only if the API key being used has 'Include Integration Content Test' also enabled. If left unset, the content data will be included depending on the 'Include Integration Content Test' option of the API key.",
          "type": "boolean"
        },
        "Language": {
          "title": "Language",
          "description": "An HTML ISO language code. If specified, the endpoint will return only posts that are available in the given language.",
          "type": "string"
        },
        "IncludeTranslations": {
          "title": "IncludeTranslations",
          "description": "If true, the endpoint will return all translation data for each post.",
          "type": "boolean"
        }
      },
      "X-PassleContainsImage": true
    },
    "GetPostsResponseModel": {
      "type": "object",
      "properties": {
        "TotalCount": {
          "format": "int32",
          "title": "TotalCount",
          "description": "The total number of items returned.",
          "type": "integer"
        },
        "PageNumber": {
          "format": "int32",
          "title": "PageNumber",
          "description": "The page number of items shown.",
          "type": "integer"
        },
        "PageSize": {
          "format": "int32",
          "title": "PageSize",
          "description": "The number of items in a page.",
          "type": "integer"
        },
        "Posts": {
          "title": "Posts",
          "description": "An array of items matching the query.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/IPostModel"
          }
        }
      }
    },
    "IPostModel": {
      "type": "object",
      "properties": {
        "Authors": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/IAuthorModel"
          },
          "readOnly": true
        },
        "AvailableLanguages": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "CoAuthors": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/IAuthorModel"
          },
          "readOnly": true
        },
        "ContentTextSnippet": {
          "type": "string"
        },
        "EstimatedReadTimeInSeconds": {
          "format": "int32",
          "type": "integer"
        },
        "FeaturedItemEmbedProvider": {
          "type": "string"
        },
        "FeaturedItemEmbedType": {
          "format": "int32",
          "enum": [
            0,
            1,
            2,
            3,
            4
          ],
          "type": "integer"
        },
        "FeaturedItemMediaType": {
          "format": "int32",
          "enum": [
            0,
            1,
            2,
            3,
            4,
            5,
            6
          ],
          "type": "integer"
        },
        "ImageUrl": {
          "type": "string"
        },
        "IsExternal": {
          "type": "boolean"
        },
        "IsRepost": {
          "type": "boolean"
        },
        "Language": {
          "type": "string"
        },
        "MetaData": {
          "$ref": "#/definitions/IMetaDataModel"
        },
        "OpensInNewTab": {
          "type": "boolean"
        },
        "PostShortcode": {
          "type": "string"
        },
        "PostSlug": {
          "type": "string"
        },
        "PostTitle": {
          "type": "string"
        },
        "PostUrl": {
          "type": "string"
        },
        "PublishedDate": {
          "format": "date-time",
          "type": "string"
        },
        "ShareViews": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/IShareViewsModel"
          },
          "readOnly": true
        },
        "Tags": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "TotalLikes": {
          "format": "int32",
          "type": "integer"
        },
        "TotalShares": {
          "format": "int32",
          "type": "integer"
        },
        "Translations": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/IPostTranslationModel"
          }
        }
      }
    },
    "GetFeaturedPostModel": {
      "required": [
        "PassleShortcode"
      ],
      "type": "object",
      "properties": {
        "PassleShortcode": {
          "title": "PassleShortcode",
          "description": "The shortcode of the passle for which you'd like to see post data.",
          "type": "string"
        },
        "PassleViewVisible": {
          "title": "PassleViewVisible",
          "description": "A boolean value that will include/exclude the featured post depending on whether it's set to show as a featured post in the list of all posts for a passle.",
          "type": "boolean"
        },
        "PostViewVisible": {
          "title": "PostViewVisible",
          "description": "A boolean value that will include/exclude the featured post depending on whether it's set to show as a featured post alongside other posts.",
          "type": "boolean"
        },
        "Language": {
          "title": "Language",
          "description": "An HTML ISO language code. If specified, the endpoint will return the post content in the given language if the post has a translation for it. Otherwise null is returned.",
          "type": "string"
        },
        "IncludeTranslations": {
          "title": "IncludeTranslations",
          "description": "If true, the endpoint will return the featured post contents in all available translations.",
          "type": "boolean"
        },
        "AuthorImage": {
          "$ref": "#/definitions/ImageRequestOptionsModel",
          "X-PassleImageWidth": 150,
          "X-PassleImageHeight": 150,
          "X-PassleImageCrop": false
        },
        "FeaturedImage": {
          "$ref": "#/definitions/ImageRequestOptionsModel",
          "X-PassleImageWidth": 700,
          "X-PassleImageHeight": 300,
          "X-PassleImageCrop": false
        }
      },
      "X-PassleContainsImage": true
    },
    "GetFeaturedPostResponseModel": {
      "type": "object",
      "properties": {
        "Post": {
          "$ref": "#/definitions/IPostModel",
          "title": "Post",
          "description": "An object containing the details of the featured post."
        }
      }
    },
    "GetPostModel": {
      "required": [
        "PostShortcode"
      ],
      "type": "object",
      "properties": {
        "PostShortcode": {
          "title": "PostShortcode",
          "description": "The shortcode of the post for which you'd like to see more information.",
          "type": "string"
        },
        "PreviewMode": {
          "title": "PreviewMode",
          "description": "A boolean value that will include/exclude unpublished posts in the query results.",
          "type": "boolean"
        },
        "Language": {
          "title": "Language",
          "description": "An HTML ISO language code. If specified, the endpoint will return the post data in the given language if the post is available in this language.",
          "type": "string"
        },
        "IncludeTranslations": {
          "title": "IncludeTranslations",
          "description": "If true, the endpoint will return all translation data for the post.",
          "type": "boolean"
        },
        "AuthorImage": {
          "$ref": "#/definitions/ImageRequestOptionsModel",
          "X-PassleImageWidth": 150,
          "X-PassleImageHeight": 150,
          "X-PassleImageCrop": false
        },
        "FeaturedImage": {
          "$ref": "#/definitions/ImageRequestOptionsModel",
          "X-PassleImageWidth": 640,
          "X-PassleImageHeight": 640,
          "X-PassleImageCrop": false
        }
      },
      "X-PassleContainsImage": true
    },
    "GetPostResponseModel": {
      "type": "object",
      "properties": {
        "PublishedDate": {
          "format": "date-time",
          "title": "PublishedDate",
          "description": "A datetime value showing when this post was published.",
          "type": "string"
        },
        "MetaData": {
          "$ref": "#/definitions/IMetaDataModel",
          "title": "MetaData",
          "description": "The set of SEO metadata for this post."
        },
        "PostShortcode": {
          "title": "PostShortcode",
          "description": "The shortcode for the post.",
          "type": "string"
        },
        "PassleShortcode": {
          "title": "PassleShortcode",
          "description": "The shortcode for the passle the post is published in.",
          "type": "string"
        },
        "PostTitle": {
          "title": "PostTitle",
          "description": "The title of the post.",
          "type": "string"
        },
        "PostContentHtml": {
          "title": "PostContentHtml",
          "description": "The html content for the main body of text for the post.",
          "type": "string"
        },
        "ImageUrl": {
          "title": "ImageUrl",
          "description": "The url for the post's featured media.",
          "type": "string"
        },
        "QuoteText": {
          "title": "QuoteText",
          "description": "The text used in the post's quote.",
          "type": "string"
        },
        "QuoteUrl": {
          "title": "QuoteUrl",
          "description": "The url for the post's quote.",
          "type": "string"
        },
        "Tags": {
          "title": "Tags",
          "description": "A list of tags for this post.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "EstimatedReadTimeInSeconds": {
          "format": "int32",
          "title": "EstimatedReadTimeInSeconds",
          "description": "An integer showing the estimated time to read the post, in seconds.",
          "type": "integer"
        },
        "FeaturedItemHTML": {
          "title": "FeaturedItemHTML",
          "description": "The html content for the post's featured media.",
          "type": "string"
        },
        "FeaturedItemMediaType": {
          "format": "int32",
          "title": "FeaturedItemMediaType",
          "description": "An integer showing what type of media the post's featured media is. 0 - None; 1 - Image; 2 - Video; 3 - Audio; 4 - Embedded link / item; 5 - Font; 6 - Document.",
          "enum": [
            0,
            1,
            2,
            3,
            4,
            5,
            6
          ],
          "type": "integer"
        },
        "Authors": {
          "title": "Authors",
          "description": "A list containing the details of the primary authors of this post.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/IAuthorModel"
          }
        },
        "CoAuthors": {
          "title": "CoAuthors",
          "description": "A list containing the details of the co-authors of this post.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/IAuthorModel"
          }
        },
        "PostUrl": {
          "title": "PostUrl",
          "description": "The url for the post.",
          "type": "string"
        },
        "FeaturedItemPosition": {
          "format": "int32",
          "title": "FeaturedItemPosition",
          "description": "An integer showing where the featured media is shown in the post. Values are: 0 - None; 1 - At the bottom of the post; 2 - At the top of the post; 3 - In the post's header.",
          "enum": [
            0,
            1,
            2,
            3
          ],
          "type": "integer"
        },
        "ShareViews": {
          "title": "ShareViews",
          "description": "A list showing how often the post has been viewed via different social media channels. 0 - None; 1 - LinkedIn; 2 - Twitter; 4 - Facebook; 7 - LinkedIn, Twitter and Facebook combined; 16 -  Xing; 32 - Email.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/IShareViewsModel"
          }
        },
        "IsRepost": {
          "title": "IsRepost",
          "description": "A boolean value showing whether this post is a repost of an original post.",
          "type": "boolean"
        },
        "RepostedFromPassleName": {
          "title": "RepostedFromPassleName",
          "description": "The title of the passle from where the post was reposted. This is empty if the post is not a repost, or if the passle has been deleted.",
          "type": "string"
        },
        "ReposterName": {
          "title": "ReposterName",
          "description": "The full name of the user who reposted the post. This is empty if the post is not a repost, or if the user has been deleted.",
          "type": "string"
        },
        "ReposterProfileUrl": {
          "title": "ReposterProfileUrl",
          "description": "The profile url of the user who reposted this post. This is empty if the post is not a repost, or if the user has been deleted.",
          "type": "string"
        },
        "RepostedFromPassleUrl": {
          "title": "RepostedFromPassleUrl",
          "description": "The url of the passle from where this post was reposted. This is empty if the post is not a repost, or if the passle has been deleted.",
          "type": "string"
        },
        "TotalLikes": {
          "format": "int32",
          "title": "TotalLikes",
          "description": "An integer showing how many times the post has been liked.",
          "type": "integer"
        },
        "Language": {
          "title": "Language",
          "description": "The language of the post content.",
          "type": "string"
        },
        "AvailableLanguages": {
          "title": "AvailableLanguages",
          "description": "The set of HTML ISO Language codes that correspond to the available languages this post is written in. This excludes the default language",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "Translations": {
          "title": "Translations",
          "description": "The post content, written in different languages that this post is available in.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/IPostTranslationModel"
          }
        },
        "PostSlug": {
          "title": "PostSlug",
          "description": "A string value generated from a post title which can be included in a post url structure.",
          "type": "string"
        },
        "IsExternal": {
          "title": "IsExternal",
          "description": "A boolean value indicating if a post is external.",
          "type": "boolean"
        },
        "FeaturedImageUrl": {
          "type": "string"
        },
        "FeaturedItemType": {
          "format": "int32",
          "enum": [
            0,
            1,
            2,
            3,
            4,
            5,
            6
          ],
          "type": "integer"
        },
        "Tweets": {
          "type": "array",
          "items": {
            "type": "object"
          }
        }
      }
    },
    "GetPostStatsModel": {
      "type": "object",
      "properties": {
        "PageNumber": {
          "format": "int32",
          "title": "PageNumber",
          "description": "The page number of results to show. If the total number of results is larger than the page size (or the number of items per page in the request) then the results will be paginated and you should increment the value of `PageNumber` to see all the results.",
          "maximum": 10000,
          "minimum": 1,
          "type": "integer"
        },
        "ItemsPerPage": {
          "format": "int32",
          "title": "ItemsPerPage",
          "description": "The number of results to return per page. If the total number of results is larger than this value then your results will be paginated and you should increment the value of `PageNumber` to see all the results.",
          "maximum": 1000,
          "minimum": 1,
          "type": "integer"
        },
        "SortOldestFirst": {
          "title": "SortOldestFirst",
          "description": "If true, the results will be sorted by the date that the post was published, from oldest to newest. If false, they will be sorted from newest to oldest.",
          "type": "boolean"
        },
        "DateFrom": {
          "format": "date-time",
          "title": "DateFrom",
          "description": "A datetime value that will exclude posts that were published before this date. If omitted, data will be returned from the date the first post was published. Acceptable formats: 2021-03-21T18:37:45.488Z or 2021-03-21",
          "type": "string"
        },
        "DateTo": {
          "format": "date-time",
          "title": "DateTo",
          "description": "A datetime value that will exclude posts that were published after this date. If omitted, data will be returned up to the current date. Acceptable formats: 2021-03-21T18:37:45.488Z or 2021-03-21",
          "type": "string"
        }
      }
    },
    "PostStatsResponseModel": {
      "type": "object",
      "properties": {
        "PostStats": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/IPostStatsDataModel"
          }
        },
        "TotalCount": {
          "format": "int32",
          "type": "integer"
        },
        "PageNumber": {
          "format": "int32",
          "type": "integer"
        },
        "PageSize": {
          "format": "int32",
          "type": "integer"
        }
      }
    },
    "IPostStatsDataModel": {
      "type": "object",
      "properties": {
        "AuthorNames": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "ClientName": {
          "type": "string"
        },
        "DatePublished": {
          "format": "date-time",
          "type": "string"
        },
        "NumberOfFacebookShareViews": {
          "format": "int32",
          "type": "integer"
        },
        "NumberOfJDSupraViews": {
          "format": "int32",
          "type": "integer"
        },
        "NumberOfLexologyViews": {
          "format": "int32",
          "type": "integer"
        },
        "NumberOfLinkedInShareViews": {
          "format": "int32",
          "type": "integer"
        },
        "NumberOfMondaqViews": {
          "format": "int32",
          "type": "integer"
        },
        "NumberOfShareViews": {
          "format": "int32",
          "type": "integer"
        },
        "NumberOfTwitterShareViews": {
          "format": "int32",
          "type": "integer"
        },
        "NumberOfViews": {
          "format": "int32",
          "type": "integer"
        },
        "PassleName": {
          "type": "string"
        },
        "PassleShortcode": {
          "type": "string"
        },
        "PostType": {
          "type": "string"
        },
        "PublishedDate": {
          "format": "date-time",
          "type": "string"
        },
        "Tags": {
          "type": "string"
        },
        "Title": {
          "type": "string"
        },
        "Url": {
          "type": "string"
        }
      }
    },
    "GetPostSuggestionsModel": {
      "required": [
        "PassleShortcode"
      ],
      "type": "object",
      "properties": {
        "PassleShortcode": {
          "title": "PassleShortcode",
          "description": "The shortcode of the passle for which you'd like to see post data.",
          "type": "string"
        },
        "PostShortcode": {
          "title": "PostShortcode",
          "description": "The shortcode of a post you'd like to exclude from being suggested.",
          "type": "string"
        },
        "PersonShortcode": {
          "title": "PersonShortcode",
          "description": "The shortcode of an author whose posts you'd like to exclude from being suggested.",
          "type": "string"
        },
        "PageNumber": {
          "format": "int32",
          "title": "PageNumber",
          "description": "The page number of results to show. If the total number of results is larger than the page size (or the number of items per page in the request) then the results will be paginated and you should increment the value of `PageNumber` to see all the results.",
          "maximum": 10000,
          "minimum": 1,
          "type": "integer"
        },
        "ItemsPerPage": {
          "format": "int32",
          "title": "ItemsPerPage",
          "description": "The number of results to return per page. If the total number of results is larger than this value then your results will be paginated and you should increment the value of `PageNumber` to see all the results.",
          "maximum": 1000,
          "minimum": 1,
          "type": "integer"
        },
        "ExcludeFeaturedPost": {
          "title": "ExcludeFeaturedPost",
          "description": "If true, featured posts will be excluded from the results.",
          "type": "boolean"
        },
        "Language": {
          "title": "Language",
          "description": "An HTML ISO language code. If specified, the endpoint will return only the posts that have content translations in the given language.",
          "type": "string"
        },
        "IncludeTranslations": {
          "title": "IncludeTranslations",
          "description": "If true, the endpoint will return the post contents in all available translations.",
          "type": "boolean"
        },
        "AuthorImage": {
          "$ref": "#/definitions/ImageRequestOptionsModel",
          "X-PassleImageWidth": 150,
          "X-PassleImageHeight": 150,
          "X-PassleImageCrop": false
        },
        "FeaturedImage": {
          "$ref": "#/definitions/ImageRequestOptionsModel",
          "X-PassleImageWidth": 400,
          "X-PassleImageHeight": 400,
          "X-PassleImageCrop": true
        }
      },
      "X-PassleContainsImage": true
    },
    "GetPostSuggestionsResponseModel": {
      "type": "object",
      "properties": {
        "TotalCount": {
          "format": "int32",
          "type": "integer"
        },
        "Posts": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/IPostModel"
          }
        },
        "PageSize": {
          "format": "int32",
          "type": "integer"
        }
      }
    },
    "GetRedirectModel": {
      "required": [
        "RemoteId"
      ],
      "type": "object",
      "properties": {
        "RemoteId": {
          "title": "RemoteId",
          "description": "The remote url of a resource, whose passle url you want to retrieve.",
          "type": "string"
        }
      }
    },
    "SyncDataGetItemsModel": {
      "type": "object",
      "properties": {
        "PassleShortcode": {
          "title": "PassleShortcode",
          "description": "The shortcode of the passle for which you'd like to retrieve updates for.",
          "type": "string"
        },
        "DateFrom": {
          "format": "date-time",
          "title": "DateFrom",
          "description": "A datetime value that will exclude updates that were before this date. If omitted, data will be returned up to the current date. Acceptable formats: 2021-03-21T18:37:45.488Z or 2021-03-21",
          "type": "string"
        },
        "DateTo": {
          "format": "date-time",
          "title": "DateTo",
          "description": "A datetime value that will exclude updates after this date. If omitted, data will be returned up to the current date. Acceptable formats: 2021-03-21T18:37:45.488Z or 2021-03-21",
          "type": "string"
        }
      }
    },
    "SyncDataGetItemsResponseModel": {
      "type": "object",
      "properties": {
        "Updates": {
          "title": "Updates",
          "description": "An array of objects. Each object includes an action and data field for a passle item that needs re-syncing.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/ISyncDataItemModel"
          }
        }
      }
    },
    "ISyncDataItemModel": {
      "type": "object",
      "properties": {
        "Action": {
          "format": "int32",
          "enum": [
            1,
            2,
            3,
            4,
            5,
            6
          ],
          "type": "integer"
        },
        "Data": {
          "type": "object",
          "additionalProperties": {
            "type": "object"
          }
        }
      }
    },
    "GetTagMappingsModel": {
      "type": "object",
      "properties": {
        "PassleShortcode": {
          "title": "PassleShortcode",
          "description": "The shortcode of the Passle for which you'd like to see tag mappings .This is required unless `PostShortcode` is given.",
          "type": "string"
        },
        "PostShortcode": {
          "title": "PostShortcode",
          "description": "A post shortcode which will return a tag mappings relating to any tags that apply to that post. If not supplied then all tag mappings will be returned regardless posts they apply to. This is required unless `PassleShortcode` is given.",
          "type": "string"
        },
        "PageNumber": {
          "format": "int32",
          "title": "PageNumber",
          "description": "The page number of results to show. If the total number of results is larger than the page size (or the number of items per page in the request) then the results will be paginated and you should increment the value of `PageNumber` to see all the results.",
          "maximum": 10000,
          "minimum": 1,
          "type": "integer"
        },
        "ItemsPerPage": {
          "format": "int32",
          "title": "ItemsPerPage",
          "description": "The number of results to return per page. If the total number of results is larger than this value then your results will be paginated and you should increment the value of `PageNumber` to see all the results.",
          "maximum": 1000,
          "minimum": 1,
          "type": "integer"
        },
        "Tags": {
          "title": "Tag",
          "description": "The tag or tags separated by comma for which you'd like to see tag mappings. Will show tag mappings for all tags in the client if `Tags` is not provided.",
          "type": "string"
        },
        "TagAliases": {
          "title": "TagAliases",
          "description": "A single alias or comma separated list of aliases used to filter results. Only tag mappings whose aliases include at least one of the aliases provided will be returned (case insensitive). If not supplied then tag mappings will be returned regardless of aliases.",
          "type": "string"
        },
        "UpdatedSince": {
          "format": "date-time",
          "title": "UpdatedSince",
          "description": "Will show tag mappings that have updated since the date provided. Will show tag mappings updated since the begining of time if `UpdatedSince` is not provided.",
          "type": "string"
        }
      }
    },
    "IGetTagMappingsResponseModel": {
      "type": "object",
      "properties": {
        "TagMappings": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ITagMappingModel"
          }
        }
      }
    },
    "ITagMappingModel": {
      "type": "object",
      "properties": {
        "Aliases": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "Label": {
          "type": "string"
        },
        "LastUpdated": {
          "format": "date-time",
          "type": "string"
        },
        "Tag": {
          "type": "string"
        }
      }
    },
    "IGetTagsResponseModel": {
      "type": "object",
      "properties": {
        "Tags": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "IGetTagGroupsResponseModel": {
      "type": "object",
      "properties": {
        "TagGroups": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ITagGroupModel"
          }
        }
      }
    },
    "ITagGroupModel": {
      "type": "object",
      "properties": {
        "Name": {
          "type": "string"
        },
        "Tags": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "GetTagsModel": {
      "required": [
        "PassleShortcode"
      ],
      "type": "object",
      "properties": {
        "PassleShortcode": {
          "title": "PassleShortcode",
          "description": "The shortcode of the Passle for which you'd like to see tags.",
          "type": "string"
        }
      }
    },
    "GetTagGroupsModel": {
      "type": "object",
      "properties": {
        "PassleShortcode": {
          "title": "PassleShortcode",
          "description": "The shortcode of the Passle for which you'd like to see tag groups. Will show tag groups for the entire client if `PassleShortcode` is not provided.",
          "type": "string"
        }
      }
    },
    "GetUserStatsModel": {
      "type": "object",
      "properties": {
        "PageNumber": {
          "format": "int32",
          "title": "PageNumber",
          "description": "The page number of results to show. If the total number of results is larger than the page size (or the number of items per page in the request) then the results will be paginated and you should increment the value of `PageNumber` to see all the results.",
          "maximum": 10000,
          "minimum": 1,
          "type": "integer"
        },
        "ItemsPerPage": {
          "format": "int32",
          "title": "ItemsPerPage",
          "description": "The number of results to return per page. If the total number of results is larger than this value then your results will be paginated and you should increment the value of `PageNumber` to see all the results.",
          "maximum": 1000,
          "minimum": 1,
          "type": "integer"
        },
        "SortOldestFirst": {
          "title": "SortOldestFirst",
          "description": "If true, the results will be sorted by the date that the user was created, from oldest to newest. If false, they will be sorted from newest to oldest.",
          "type": "boolean"
        },
        "DateFrom": {
          "format": "date-time",
          "title": "DateFrom",
          "description": "A datetime value that will exclude users that were created before this date. If omitted, data will be returned from the date the first user was created. Acceptable formats: 2021-03-21T18:37:45.488Z or 2021-03-21",
          "type": "string"
        },
        "DateTo": {
          "format": "date-time",
          "title": "DateTo",
          "description": "A datetime value that will exclude users that were created after this date. If omitted, data will be returned up to the current date. Acceptable formats: 2021-03-21T18:37:45.488Z or 2021-03-21",
          "type": "string"
        }
      }
    },
    "UserStatsResponseModel": {
      "type": "object",
      "properties": {
        "UserStats": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/IUserStatsModel"
          }
        },
        "TotalCount": {
          "format": "int32",
          "type": "integer"
        },
        "PageNumber": {
          "format": "int32",
          "type": "integer"
        },
        "PageSize": {
          "format": "int32",
          "type": "integer"
        }
      }
    },
    "IUserStatsModel": {
      "type": "object",
      "properties": {
        "AccountActivated": {
          "type": "boolean"
        },
        "ActiveStatus": {
          "type": "string"
        },
        "AppUser": {
          "type": "boolean"
        },
        "ClientName": {
          "type": "string"
        },
        "DateLastPostCreated": {
          "format": "date-time",
          "type": "string"
        },
        "EIScore": {
          "format": "int32",
          "type": "integer"
        },
        "EmailAddress": {
          "type": "string"
        },
        "Name": {
          "type": "string"
        },
        "NumberOfPosts": {
          "format": "int32",
          "type": "integer"
        },
        "PostViews": {
          "format": "int32",
          "type": "integer"
        },
        "ShareViews": {
          "format": "int32",
          "type": "integer"
        },
        "Shortcode": {
          "type": "string"
        }
      }
    }
  },
  "securityDefinitions": {
    "apiKey": {
      "type": "apiKey",
      "description": "API Key Authentication",
      "name": "apiKey",
      "in": "query"
    }
  }
}