{"id":18890427,"url":"https://github.com/workingdog/taxii2clientcombine","last_synced_at":"2025-10-23T08:00:16.031Z","repository":{"id":151934883,"uuid":"262545897","full_name":"workingDog/Taxii2ClientCombine","owner":"workingDog","description":"TAXII-2.1 client library using the Swift Combine framework","archived":false,"fork":false,"pushed_at":"2020-05-18T06:22:26.000Z","size":16,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-10-07T13:58:05.110Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/workingDog.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2020-05-09T10:26:34.000Z","updated_at":"2023-01-06T11:26:02.000Z","dependencies_parsed_at":"2023-05-16T16:30:39.022Z","dependency_job_id":null,"html_url":"https://github.com/workingDog/Taxii2ClientCombine","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/workingDog/Taxii2ClientCombine","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/workingDog%2FTaxii2ClientCombine","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/workingDog%2FTaxii2ClientCombine/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/workingDog%2FTaxii2ClientCombine/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/workingDog%2FTaxii2ClientCombine/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/workingDog","download_url":"https://codeload.github.com/workingDog/Taxii2ClientCombine/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/workingDog%2FTaxii2ClientCombine/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":280583895,"owners_count":26355258,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-23T02:00:06.710Z","response_time":142,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-08T07:55:34.568Z","updated_at":"2025-10-23T08:00:15.968Z","avatar_url":"https://github.com/workingDog.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"# TAXII 2.1 client library in Swift using the Combine framework\n\n### Status\nwork in progress, not yet ready\n\n\n**Taxii2Client** is a Swift library that provides a set of classes and methods for building clients to [TAXII-2.1](https://oasis-open.github.io/cti-documentation/) servers.\n\n[[1]](https://oasis-open.github.io/cti-documentation/) \nTrusted Automated Exchange of Intelligence Information (TAXII) is an application layer protocol \nused to exchange cyber threat intelligence (CTI) over HTTPS. \nTAXII enables organizations to share CTI by defining an API that aligns with common sharing models.\n[TAXII-2.1](https://oasis-open.github.io/cti-documentation/) defines the TAXII RESTful API and its resources along with the requirements for TAXII Client and Server implementations. \n\n\n**Taxii2Client** uses asynchronous requests to fetch TAXII 2.1 server resources. \nIt provides the following endpoints:\n\n- *Server*, endpoint for retrieving the discovery and api roots resources.\n- *ApiRoot*, endpoint for retrieving the api roots resources.\n- *Collections*, endpoint for retrieving the list of collection resources. \n- *Collection*, endpoint for retrieving a collection resource and associated objects. \n- *Status*, endpoint for retrieving a status resource. \n\n### Usage\n\nThe following TAXII 2.1 API services are supported with these corresponding async methods. Each method returns a Combine framework Publisher.\n\n- Server Discovery --\u003e server.discovery \n- Get API Root Information --\u003e server.getApiroots()\n- Get Collections --\u003e collections.get() and collections.get(index)\n- Get Object Manifests --\u003e collection.getManifests()\n- Get Status --\u003e status.get()\n- Add Objects --\u003e collection.addObjects(envelope) and collection.addObject(bundle) for TAXII-2.0  \n- Get Objects --\u003e collection.getObjects() and getBundle() for TAXII-2.0 \n\n(NOTE: the objects returned from getBundle() and getObjects() consist of JSON constructs, not Swift STIX-2 class objects)\n\nThe class *TaxiiConnection* provides the async communication to the server.\n\nExample:\n\n    import Taxii2Client\n    import Combine\n \n    // taxii-2.0\n    let conn = TaxiiConnection(host: \"cti-taxii.mitre.org\", user: \"\", password: \"\", taxiiVersion: \"2.0\")\n    let taxiiServer = Server(conn: conn)\n    cancellable = taxiiServer.discovery()\n        .sink(receiveCompletion: { _ in },\n                receiveValue: { discovery in\n                print(\"---\u003e discovery: \\(discovery as Optional)\")\n        })\n    }\n\nSee the [TAXII 2.1 Specification](https://oasis-open.github.io/cti-documentation/) for the list \nof attributes of the TAXII 2.1 server responses.\n\n### Installation \n\n#### Swift Package Manager\n\nCreate a Package.swift file for your project and add a dependency to:\n\n    dependencies: [\n      .package(url: \"https://github.com/workingDog/Taxii2ClientCombine.git\", from: \"0.0.1\")\n    ]\n\n#### Using Xcode\n\nSelect File \u003e Swift Packages \u003e Add Package Dependency...,\n\"https://github.com/workingDog/Taxii2ClientCombine.git\"\n\n### Dependencies and requirements\n\n**Taxii2Client** depends on the following library:\n\n- [GenericJSON](https://github.com/zoul/generic-json-swift)\n\nRequires Swift 5\n\n### References\n \n1) [TAXII 2.1 Specification](https://oasis-open.github.io/cti-documentation/resources#taxii-21-specification)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fworkingdog%2Ftaxii2clientcombine","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fworkingdog%2Ftaxii2clientcombine","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fworkingdog%2Ftaxii2clientcombine/lists"}