{
  "info": {
    "name": "Ferretly API",
    "description": "Illustrative requests for the Ferretly API. Requests target the live API. Configure your own key and subject identifiers. Writes and state-changing GETs can change data or consume credits. Subject creation defaults to debug with analyst assignment disabled; debug is not a general sandbox.",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "auth": {
    "type": "apikey",
    "apikey": [
      {
        "key": "key",
        "value": "X-Api-Key",
        "type": "string"
      },
      {
        "key": "value",
        "value": "{{apiKey}}",
        "type": "string"
      },
      {
        "key": "in",
        "value": "header",
        "type": "string"
      }
    ]
  },
  "variable": [
    {
      "key": "baseUrl",
      "value": "https://api.ferretly.com"
    },
    {
      "key": "apiKey",
      "value": ""
    },
    {
      "key": "subjectId",
      "value": "11111111-1111-4111-8111-111111111111"
    },
    {
      "key": "profileId",
      "value": "11111111-1111-4111-8111-111111111111"
    },
    {
      "key": "externalId",
      "value": "candidate-001"
    }
  ],
  "item": [
    {
      "name": "ApiClient",
      "item": [
        {
          "name": "GET Verify your API key",
          "request": {
            "method": "GET",
            "description": "Example values must be replaced with your own.",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/ApiClient",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "ApiClient"
              ]
            }
          },
          "response": []
        },
        {
          "name": "POST Set the webhook URL",
          "request": {
            "method": "POST",
            "description": "Changes state. Review your authorization, identifiers and payload before sending. Example values must be replaced with your own.",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/ApiClient/updateWebHook",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "ApiClient",
                "updateWebHook"
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "\"https://example.com/hooks/ferretly\"",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "GET Rotate the API key",
          "request": {
            "method": "GET",
            "description": "Changes state. Review your authorization, identifiers and payload before sending. Example values must be replaced with your own.",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/ApiClient/refreshApiKey",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "ApiClient",
                "refreshApiKey"
              ]
            }
          },
          "response": []
        },
        {
          "name": "GET Get your organization",
          "request": {
            "method": "GET",
            "description": "Example values must be replaced with your own.",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/ApiClient/getOrganization",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "ApiClient",
                "getOrganization"
              ]
            }
          },
          "response": []
        },
        {
          "name": "POST Update client properties",
          "request": {
            "method": "POST",
            "description": "Changes state. Review your authorization, identifiers and payload before sending. Example values must be replaced with your own.",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/ApiClient/updateClientSpecificProperties",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "ApiClient",
                "updateClientSpecificProperties"
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "\"integration-example\"",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "POST Update the technical contact",
          "request": {
            "method": "POST",
            "description": "Changes state. Review your authorization, identifiers and payload before sending. Example values must be replaced with your own.",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/ApiClient/updateTechnicalContact",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "ApiClient",
                "updateTechnicalContact"
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "\"integrations@example.com\"",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        }
      ]
    },
    {
      "name": "Subjects",
      "item": [
        {
          "name": "GET List subjects",
          "request": {
            "method": "GET",
            "description": "Example values must be replaced with your own.",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/Subjects",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "Subjects"
              ]
            }
          },
          "response": []
        },
        {
          "name": "POST Create a subject",
          "request": {
            "method": "POST",
            "description": "Changes state. Review your authorization, identifiers and payload before sending. Example values must be replaced with your own.",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/Subjects",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "Subjects"
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"subjectData\": {\n    \"name\": \"Example Candidate\",\n    \"city\": \"Example City\",\n    \"country\": \"US\",\n    \"email\": \"candidate@example.com\",\n    \"linkedInUrl\": \"https://www.linkedin.com/in/your-candidate\",\n    \"tags\": [\n      \"integration-example\"\n    ],\n    \"notes\": \"Please review the supplied profile information.\"\n  },\n  \"handles\": [\n    {\n      \"platform\": \"Twitter\",\n      \"handle\": \"your_candidate\",\n      \"profileUrl\": \"https://x.com/your_candidate\"\n    }\n  ],\n  \"externalSystemId\": \"candidate-001\",\n  \"assignToFerretlyAnalyst\": false,\n  \"isDebug\": true\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "GET Get a subject",
          "request": {
            "method": "GET",
            "description": "Example values must be replaced with your own.",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/Subjects/{{subjectId}}",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "Subjects",
                "{{subjectId}}"
              ]
            }
          },
          "response": []
        },
        {
          "name": "GET Get a subject by external ID",
          "request": {
            "method": "GET",
            "description": "Example values must be replaced with your own.",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/Subjects/getByExternalId/{{externalId}}",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "Subjects",
                "getByExternalId",
                "{{externalId}}"
              ]
            }
          },
          "response": []
        },
        {
          "name": "GET Get screening status",
          "request": {
            "method": "GET",
            "description": "Example values must be replaced with your own.",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/Subjects/{{subjectId}}/screeningstatus",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "Subjects",
                "{{subjectId}}",
                "screeningstatus"
              ]
            }
          },
          "response": []
        },
        {
          "name": "GET Get status by external ID",
          "request": {
            "method": "GET",
            "description": "Example values must be replaced with your own.",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/Subjects/{{externalId}}/screeningStatusByExternalId",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "Subjects",
                "{{externalId}}",
                "screeningStatusByExternalId"
              ]
            }
          },
          "response": []
        },
        {
          "name": "GET Get screening results",
          "request": {
            "method": "GET",
            "description": "Example values must be replaced with your own.",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/Subjects/{{subjectId}}/backgroundCheckResults",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "Subjects",
                "{{subjectId}}",
                "backgroundCheckResults"
              ]
            }
          },
          "response": []
        },
        {
          "name": "GET Get results by external ID",
          "request": {
            "method": "GET",
            "description": "Example values must be replaced with your own.",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/Subjects/getByExternalId/{{externalId}}/backgroundCheckResults",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "Subjects",
                "getByExternalId",
                "{{externalId}}",
                "backgroundCheckResults"
              ]
            }
          },
          "response": []
        },
        {
          "name": "GET Start a screening (without Analyst Assistance)",
          "request": {
            "method": "GET",
            "description": "Changes state. Review your authorization, identifiers and payload before sending. Only for organizations without Analyst Assistance. Do not call this endpoint for Analyst Assistance. Example values must be replaced with your own.",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/Subjects/{{subjectId}}/initiateBackgroundCheck",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "Subjects",
                "{{subjectId}}",
                "initiateBackgroundCheck"
              ]
            }
          },
          "response": []
        },
        {
          "name": "GET Get filtered posts",
          "request": {
            "method": "GET",
            "description": "Example values must be replaced with your own.",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/Subjects/{{subjectId}}/filteredPosts",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "Subjects",
                "{{subjectId}}",
                "filteredPosts"
              ]
            }
          },
          "response": []
        },
        {
          "name": "GET Get filtered posts by external ID",
          "request": {
            "method": "GET",
            "description": "Example values must be replaced with your own.",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/Subjects/{{externalId}}/filteredPostsByExternalId",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "Subjects",
                "{{externalId}}",
                "filteredPostsByExternalId"
              ]
            }
          },
          "response": []
        },
        {
          "name": "GET Download a report",
          "request": {
            "method": "GET",
            "description": "Example values must be replaced with your own.",
            "header": [
              {
                "key": "Accept",
                "value": "application/octet-stream"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/Subjects/{{subjectId}}/downloadBackgroundReport",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "Subjects",
                "{{subjectId}}",
                "downloadBackgroundReport"
              ]
            }
          },
          "response": []
        }
      ]
    },
    {
      "name": "PreferenceProfiles",
      "item": [
        {
          "name": "GET List behavior categories",
          "request": {
            "method": "GET",
            "description": "Example values must be replaced with your own.",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/PreferenceProfiles/behavior-categories",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "PreferenceProfiles",
                "behavior-categories"
              ]
            }
          },
          "response": []
        },
        {
          "name": "GET List preference profiles",
          "request": {
            "method": "GET",
            "description": "Example values must be replaced with your own.",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/PreferenceProfiles",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "PreferenceProfiles"
              ]
            }
          },
          "response": []
        },
        {
          "name": "POST Create a preference profile",
          "request": {
            "method": "POST",
            "description": "Changes state. Review your authorization, identifiers and payload before sending. Contact Ferretly to enable allowPreferenceProfileUpdate before using this operation. Example values must be replaced with your own.",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/PreferenceProfiles",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "PreferenceProfiles"
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"profile_name\": \"Integration example\",\n  \"behavior_categories\": [],\n  \"general_settings\": {\n    \"email_me\": false,\n    \"postTypesToAnalyze\": [\n      \"Post\",\n      \"Reply\",\n      \"Like\",\n      \"Repost\"\n    ]\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "GET Get a preference profile",
          "request": {
            "method": "GET",
            "description": "Example values must be replaced with your own.",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/PreferenceProfiles/{{profileId}}",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "PreferenceProfiles",
                "{{profileId}}"
              ]
            }
          },
          "response": []
        },
        {
          "name": "PUT Update a preference profile",
          "request": {
            "method": "PUT",
            "description": "Changes state. Review your authorization, identifiers and payload before sending. Contact Ferretly to enable allowPreferenceProfileUpdate before using this operation. Example values must be replaced with your own.",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/PreferenceProfiles/{{profileId}}",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "PreferenceProfiles",
                "{{profileId}}"
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"id\": \"11111111-1111-4111-8111-111111111111\",\n  \"profile_name\": \"Integration example\",\n  \"behavior_categories\": [],\n  \"general_settings\": {\n    \"email_me\": false,\n    \"postTypesToAnalyze\": [\n      \"Post\",\n      \"Reply\",\n      \"Like\",\n      \"Repost\"\n    ]\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "DELETE Delete a preference profile",
          "request": {
            "method": "DELETE",
            "description": "Changes state. Review your authorization, identifiers and payload before sending. Contact Ferretly to enable allowPreferenceProfileUpdate before using this operation. Example values must be replaced with your own.",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/PreferenceProfiles/{{profileId}}",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "PreferenceProfiles",
                "{{profileId}}"
              ]
            }
          },
          "response": []
        }
      ]
    },
    {
      "name": "Health",
      "item": [
        {
          "name": "GET Check API health and settings",
          "request": {
            "method": "GET",
            "auth": {
              "type": "noauth"
            },
            "description": "Example values must be replaced with your own.",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/Health/settings",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "Health",
                "settings"
              ]
            }
          },
          "response": []
        }
      ]
    }
  ]
}
