Swiftpack.co -  cloudant/swift-cloudant as Swift Package
Swiftpack.co is a collection of thousands of indexed Swift packages. Search packages.
A Swift Lang client for Cloudant and CouchDB
.package(url: "https://github.com/cloudant/swift-cloudant.git", from: "0.9.0")


Version Platform Build Status

Applications use swift-cloudant to store, index and query remote JSON data on Cloudant or CouchDB.

Swift-Cloudant is an Apache CouchDB™ client written in Swift. It is built by Cloudant and is available under the Apache 2.0 license.


This is an early-release version of the library, with support for the following operations:

  • Getting documents by doc ID.
  • Updating and deleting documents.
  • Creating and deleting databases.
  • Changes Feed operations
  • Creating, updating and deleting of attachments.
  • Querying views.
  • Creating, deleting and querying indexes.

We will be rounding out the feature set in upcoming releases.

Currently it does not support being called from Objective-C.


SwiftCloudant is supported, however since it is an early release it is on a "best effort" basis.


Currently Swift Cloudant supports:

Swift versions

  • Minimum Swift language version 4.2
  • Minimum Swift tools version 5.0


  • macOS
  • Linux

Swift Cloudant is unsupported on:

  • iOS (should work, but hasn't been tested)
  • tvOS
  • watchOS

Using in your project

SwiftCloudant is available using the Swift Package Manager and CocoaPods.

To use with CocoaPods add the following line to your Podfile:

pod 'SwiftCloudant', :git => 'https://github.com/cloudant/swift-cloudant.git'

To use with the swift package manager add the following line to your dependencies in your Package.swift:

.Package(url: "https://github.com/cloudant/swift-cloudant.git")

Overview of the library

import SwiftCloudant

// Create a CouchDBClient
let cloudantURL = URL(string:"https://username.cloudant.com")!
let client = CouchDBClient(url:cloudantURL, username:"username", password:"password")
let dbName = "database"

// Create a document
let create = PutDocumentOperation(id: "doc1", body: ["hello":"world"], databaseName: dbName) {(response, httpInfo, error) in
    if let error = error as? SwiftCloudant.Operation.Error {
        switch error {
        case .http(let httpError):
            print("http error status code: \(httpError.statusCode)  response: \(httpError.response)")
            print("Encountered an error while creating a document. Error:\(error)")
    } else {
        print("Created document \(response?["id"]) with revision id \(response?["rev"])")

// create an attachment
let attachment = "This is my awesome essay attachment for my document"
let putAttachment = PutAttachmentOperation(name: "myAwesomeAttachment",
    contentType: "text/plain",
    data: attachment.data(using: String.Encoding.utf8, allowLossyConversion: false)!,
    documentID: "doc1",
    revision: "1-revisionidhere",
    databaseName: dbName) { (response, info, error) in
        if let error = error {
            print("Encountered an error while creating an attachment. Error:\(error)")
        } else {
            print("Created attachment \(response?["id"]) with revision id \(response?["rev"])")
client.add(operation: putAttachment)

// Read a document
let read = GetDocumentOperation(id: "doc1", databaseName: dbName) { (response, httpInfo, error) in
    if let error = error {
        print("Encountered an error while reading a document. Error:\(error)")
    } else {
        print("Read document: \(response)")

// Delete a document
let delete = DeleteDocumentOperation(id: "doc1",
    revision: "1-revisionidhere",
    databaseName: dbName) { (response, httpInfo, error) in
    if let error = error {
        print("Encountered an error while deleting a document. Error: \(error)")
    } else {
        print("Document deleted")


Currently they are no third party dependencies.



Contributing to the project





Stars: 40
Last commit: 1 week ago

Ad: Job Offers

iOS Software Engineer @ Perry Street Software
Perry Street Software is Jack’d and SCRUFF. We are two of the world’s largest gay, bi, trans and queer social dating apps on iOS and Android. Our brands reach more than 20 million members worldwide so members can connect, meet and express themselves on a platform that prioritizes privacy and security. We invest heavily into SwiftUI and using Swift Packages to modularize the codebase.

Release Notes

0.9.0 (2019-04-15)
2 years ago
  • [FIXED] Fixed scope of Operation.Error to be exposed as public.
  • [BREAKING CHANGE] Projects using older Swift tool and language versions will not work with versions newer than 0.8.0.
  • [UPGRADED] Minimum Swift language version to 4.2.
  • [UPGRADED] Swift tools version and package manifest to version 5.0.

Swiftpack is being maintained by Petr Pavlik | @ptrpavlik | @swiftpackco | API