{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/adaptlypost-com/json-schema/adaptlypost-com-create-connect-link-request-schema.json",
  "title": "CreateConnectLinkRequest",
  "x-generated": "2026-10-31",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/_original/adaptlypost-com-api-openapi.json#/components/schemas/CreateConnectLinkRequest",
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "maxLength": 80,
      "description": "Label shown in the dashboard list of links"
    },
    "visibility": {
      "type": "string",
      "enum": [
        "PUBLIC",
        "PRIVATE"
      ],
      "description": "`PRIVATE` shows the client only the accounts they connected through this link. Defaults to `PUBLIC`"
    },
    "allowedPlatforms": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "FACEBOOK",
          "INSTAGRAM",
          "THREADS",
          "TIKTOK",
          "TWITTER",
          "BLUESKY",
          "LINKEDIN",
          "PINTEREST",
          "YOUTUBE",
          "MASTODON",
          "TELEGRAM",
          "GOOGLE_BUSINESS",
          "TUMBLR",
          "WORDPRESS"
        ]
      },
      "uniqueItems": true,
      "description": "Platforms the client can pick. Omit or send [] for every platform"
    },
    "maxAccounts": {
      "type": "integer",
      "minimum": 1,
      "description": "Accounts the link can connect in total. Reconnecting an account it already connected does not count again"
    },
    "expiresAt": {
      "type": "string",
      "format": "date-time",
      "description": "When the link stops working, as an ISO 8601 date-time with a `Z` or `±hh:mm` offset, such as `2026-11-30T23:59:59Z`. At least 1 hour and at most 365 days from now. Defaults to 7 days from now. Leave it out when `neverExpires` is true"
    },
    "neverExpires": {
      "type": "boolean",
      "description": "true keeps the link working until it is revoked or reaches `maxAccounts`. The response then has `expiresAt: null`"
    }
  }
}