{
  "openapi": "3.0.3",
  "info": {
    "title": "swift.org API",
    "description": "API for retrieving Swift version release information, including date, platform support, tags, and toolchain details.",
    "version": "1.1.0"
  },
  "servers": [
    {
      "url": "https://www.swift.org/api/v1",
      "description": "The production deployment."
    },
    {
      "url": "http://127.0.0.1:4000/api/v1",
      "description": "A local deployment."
    }
  ],
  "tags": [
    {
      "name": "Toolchains",
      "description": "Information about published toolchains builds."
    },
    {
      "name": "Swiftly",
      "description": "Information about the Swiftly installer."
    },
    {
      "name": "SSWG",
      "description": "Information about the Swift Server Workgroup."
    }
  ],
  "paths": {
    "/install/releases.json": {
      "get": {
        "operationId": "listReleases",
        "summary": "Fetch all released toolchains",
        "tags": [
          "Toolchains"
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Release"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/install/dev/{branch}/{platform}.json": {
      "parameters": [
        {
          "name": "branch",
          "in": "path",
          "required": true,
          "schema": {
            "$ref": "#/components/schemas/SourceBranch"
          }
        },
        {
          "name": "platform",
          "in": "path",
          "required": true,
          "schema": {
            "$ref": "#/components/schemas/PlatformIdentifier"
          }
        }
      ],
      "get": {
        "operationId": "listDevToolchains",
        "summary": "Fetch all development toolchains",
        "tags": [
          "Toolchains"
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DevToolchains"
                }
              }
            }
          }
        }
      }
    },
    "/install/dev/{branch}/static-sdk.json": {
      "parameters": [
        {
          "name": "branch",
          "in": "path",
          "required": true,
          "schema": {
            "$ref": "#/components/schemas/SourceBranch"
          }
        }
      ],
      "get": {
        "operationId": "listStaticSDKDevToolchains",
        "summary": "Fetch all static SDK development toolchains",
        "tags": [
          "Toolchains"
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DevToolchainsForArch"
                }
              }
            }
          }
        }
      }
    },
    "/swiftly.json": {
      "get": {
        "operationId": "getCurrentSwiftlyRelease",
        "summary": "Fetch the metadata of the current Swiftly release.",
        "tags": [
          "Swiftly"
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SwiftlyRelease"
                }
              }
            }
          }
        }
      }
    },
    "/sswg/incubation/{filter}.json": {
      "parameters": [
        {
          "name": "filter",
          "in": "path",
          "required": true,
          "schema": {
            "$ref": "#/components/schemas/SSWGIncubationFilter"
          }
        }
      ],
      "get": {
        "operationId": "listSSWGIncubatedPackages",
        "summary": "List the packages incubated by the Swift Server Workgroup.",
        "tags": [
          "SSWG"
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SSWGPackageList"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "Release": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "pattern": "\\d+\\.\\d+(\\.\\d+)?",
            "description": "Version number of the Swift release.",
            "example": "6.0.2"
          },
          "date": {
            "type": "string",
            "pattern": "\\d{4}-\\d{2}-\\d{2}",
            "description": "Release date of the Swift version.",
            "example": "2024-10-28"
          },
          "platforms": {
            "type": "array",
            "description": "List of supported platforms for this release.",
            "items": {
              "$ref": "#/components/schemas/Platform"
            }
          },
          "tag": {
            "type": "string",
            "description": "Release tag identifier.",
            "example": "swift-6.0.2-RELEASE"
          },
          "xcode": {
            "type": "string",
            "description": "Xcode version associated with the release.",
            "example": "Xcode 16.1"
          },
          "xcode_release": {
            "type": "boolean",
            "description": "Indicates if this Swift version has an associated Xcode release."
          }
        },
        "required": [
          "name",
          "date",
          "platforms",
          "tag",
          "xcode"
        ]
      },
      "KnownPlatformIdentifier": {
        "description": "A platform identifier known as of this snapshot of the API document.\n\nThis is distinct from `PlatformIdentifier` to allow parsing unknown identifiers.\nParsing unknown identifiers is important to avoid a new identifier causing a major API break.",
        "type": "string",
        "enum": [
          "amazonlinux2",
          "centos7",
          "macos",
          "ubi9",
          "ubuntu2004",
          "ubuntu2204",
          "windows10"
        ]
      },
      "PlatformIdentifier": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/KnownPlatformIdentifier"
          },
          {
            "type": "string",
            "description": "The raw identifier, a fallback for when an unknown identifier is received."
          }
        ]
      },
      "KnownDevToolchainKind": {
        "description": "A dev toolchain name known as of this snapshot of the API document.\n\nThis is distinct from `DevToolchainKind` to allow parsing unknown names.\nParsing unknown names is important to avoid a new name causing a major API break.",
        "type": "string",
        "enum": [
          "Swift Development Snapshot"
        ]
      },
      "DevToolchainKind": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/KnownDevToolchainKind"
          },
          {
            "type": "string",
            "description": "The raw name, a fallback for when an unknown name is received."
          }
        ]
      },
      "DevToolchainForArch": {
        "type": "object",
        "properties": {
          "name": {
            "$ref": "#/components/schemas/DevToolchainKind"
          },
          "date": {
            "type": "string",
            "pattern": "\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2} [-+]\\d{4}",
            "description": "Date and time of the snapshot in 'YYYY-MM-DD HH:MM:SS -ZZZZ' format.",
            "example": "2024-10-12 10:10:00 -0600"
          },
          "dir": {
            "type": "string",
            "description": "Directory name for the snapshot release.",
            "example": "swift-6.0-DEVELOPMENT-SNAPSHOT-2024-10-12-a"
          },
          "download": {
            "type": "string",
            "description": "Filename of the snapshot archive to download.",
            "example": "swift-6.0-DEVELOPMENT-SNAPSHOT-2024-07-25-a-amazonlinux2-aarch64.tar.gz"
          },
          "download_signature": {
            "type": "string",
            "description": "Filename of the signature file for the download.",
            "example": "swift-6.0-DEVELOPMENT-SNAPSHOT-2024-07-25-a-amazonlinux2-aarch64.tar.gz.sig"
          },
          "debug_info": {
            "type": "string",
            "description": "Filename of the debug symbols file for the download.",
            "example": "swift-DEVELOPMENT-SNAPSHOT-2024-10-27-a-osx-symbols.pkg"
          }
        },
        "required": [
          "date",
          "dir",
          "download"
        ]
      },
      "DevToolchainsForArch": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/DevToolchainForArch"
        }
      },
      "DevToolchains": {
        "type": "object",
        "properties": {
          "aarch64": {
            "$ref": "#/components/schemas/DevToolchainsForArch"
          },
          "arm64": {
            "$ref": "#/components/schemas/DevToolchainsForArch"
          },
          "x86_64": {
            "$ref": "#/components/schemas/DevToolchainsForArch"
          },
          "universal": {
            "$ref": "#/components/schemas/DevToolchainsForArch"
          }
        }
      },
      "KnownSourceBranch": {
        "description": "A branch known as of this snapshot of the API document.\n\nThis is distinct from `SourceBranch` to allow parsing unknown branches.\nParsing unknown branches is important to avoid a new branch causing a major API break.",
        "type": "string",
        "enum": [
          "main",
          "6.0"
        ]
      },
      "SourceBranch": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/KnownSourceBranch"
          },
          {
            "type": "string",
            "description": "The raw branch, a fallback for when an unknown branch is received."
          }
        ]
      },
      "KnownPlatformType": {
        "description": "A platform type known as of this snapshot of the API document.\n\nThis is distinct from `PlatformType` to allow parsing unknown platforms.\nParsing unknown platforms is important to avoid a new platform causing a major API break.",
        "type": "string",
        "enum": [
          "Linux",
          "Windows",
          "static-sdk"
        ]
      },
      "PlatformType": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/KnownPlatformType"
          },
          {
            "type": "string",
            "description": "The raw platform name, a fallback for when an unknown platform is received."
          }
        ]
      },
      "KnownArchitecture": {
        "description": "An architecture known as of this snapshot of the API document.\n\nThis is distinct from `Architecture` to allow parsing unknown architectures.\nParsing unknown architectures is important to avoid a new architecture causing a major API break.",
        "type": "string",
        "enum": [
          "aarch64",
          "arm64",
          "x86_64",
          "universal"
        ]
      },
      "Architecture": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/KnownArchitecture"
          },
          {
            "type": "string",
            "description": "The raw architecture name, a fallback for when an unknown architecture is received."
          }
        ]
      },
      "Platform": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Platform name.",
            "example": "Ubuntu 24.04"
          },
          "platform": {
            "$ref": "#/components/schemas/PlatformType"
          },
          "archs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Architecture"
            },
            "description": "List of supported architectures."
          },
          "checksum": {
            "type": "string",
            "description": "SHA-256 Checksum of the static SDK, if this platform is the static SDK."
          }
        },
        "required": [
          "name",
          "platform",
          "archs"
        ]
      },
      "KnownSwiftlyPlatformIdentifier": {
        "description": "A Swiftly platform identifier known as of this snapshot of the API document.\n\nThis is distinct from `SwiftlyPlatformIdentifier` to allow parsing unknown platform identifiers.\nParsing unknown platform identifiers is important to avoid a new platform causing a major API break.",
        "type": "string",
        "enum": [
          "Linux",
          "Darwin",
          "Windows"
        ]
      },
      "SwiftlyPlatformIdentifier": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/KnownSwiftlyPlatformIdentifier"
          },
          {
            "type": "string",
            "description": "The raw platform identifier, a fallback for when an unknown platform is received."
          }
        ]
      },
      "SwiftlyArtifactDownloadURL": {
        "type": "string",
        "description": "A download URL for a Swiftly artifact.",
        "example": "https://download.swift.org/swiftly/linux/swiftly-0.4.0-dev-aarch64.tar.gz"
      },
      "SwiftlyReleasePlatformArtifacts": {
        "type": "object",
        "description": "Information about the Swiftly artifacts for a specific platform.",
        "properties": {
          "platform": {
            "$ref": "#/components/schemas/SwiftlyPlatformIdentifier"
          },
          "arm64": {
            "$ref": "#/components/schemas/SwiftlyArtifactDownloadURL"
          },
          "x86_64": {
            "$ref": "#/components/schemas/SwiftlyArtifactDownloadURL"
          }
        },
        "required": [
          "platform",
          "arm64",
          "x86_64"
        ]
      },
      "SwiftlyRelease": {
        "type": "object",
        "description": "Information about a release of the Swiftly installer.",
        "properties": {
          "version": {
            "type": "string",
            "description": "The current Swiftly version.",
            "example": "0.4.0-dev"
          },
          "platforms": {
            "type": "array",
            "description": "A list of supported platforms with artifact URLs.",
            "items": {
              "$ref": "#/components/schemas/SwiftlyReleasePlatformArtifacts"
            }
          }
        },
        "required": [
          "version",
          "platforms"
        ]
      },
      "SSWGPackageURL": {
        "type": "string",
        "description": "A URL of an SSWG-incubated package.",
        "example": "http://github.com/apple/swift-nio.git"
      },
      "SSWGPackageList": {
        "type": "array",
        "description": "A list of SSWG-incubated packages.",
        "items": {
          "$ref": "#/components/schemas/SSWGPackageURL"
        }
      },
      "SSWGIncubationFilter": {
        "type": "string",
        "description": "A filter for fetching a subset of the SSWG-incubated packages.",
        "enum": [
          "all",
          "graduated",
          "incubating",
          "sandbox"
        ]
      }
    }
  }
}