{ "info": { "author": "Niddel Corp.", "author_email": "contact@niddel.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Environment :: Other Environment", "Intended Audience :: Developers", "Intended Audience :: System Administrators", "License :: OSI Approved :: Apache Software License", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Topic :: Security", "Topic :: Software Development :: Libraries" ], "description": "|PyPI version| |Build status| |Dependency Status|\n\nNiddel Magnet v2 API Python SDK\n===============================\n\nA simple client that allows idiomatic access to the `Niddel Magnet v2\nREST API `__. Uses the wonderful\n`requests `__ package to perform the\nrequests.\n\nRelease history:\nhttps://github.com/Niddel/magnet-api2-sdk-python/releases\n\nConfiguring Credentials\n-----------------------\n\nThere are a couple of ways to let the ``Connection`` object know which\nAPI key to use. The simplest one is to pass one explicitly to its\nconstructor:\n\n.. code:: python\n\n from magnetsdk2 import Connection\n\n conn = Connection(api_key=\"my secret API key\")\n\nIf an explicit API key is not provided, the ``Connection`` constructor\nwill look for one first in the ``MAGNETSDK_API_KEY`` environment\nvariable and failing that in the ``default`` profile of the\nconfiguration file.\n\nYou can add different API keys to a configuration file with different\nprofiles by creating a file called ``.magnetsdk/config`` under the\ncurrent user's home directory. It is a basic Python configuration file\nthat looks like the following:\n\n::\n\n [default]\n api_key=my secret api key\n\n [profile2]\n api_key=another secret api key\n\nSo in this case you could create a connection to use either API key as\nfollows:\n\n.. code:: python\n\n from magnetsdk2 import Connection\n\n conn_default = Connection() # uses default profile\n conn_profile2 = Connection(profile='profile2') # use profile2 explicitly\n\nUsing the SDK\n-------------\n\nIt's as simple as creating a ``Connection`` object and using it to\nperform queries. This small example shows you how to print out all of\nthe organizations the configured API key has access to.\n\n.. code:: python\n\n import json\n from magnetsdk2 import Connection\n\n conn = Connection()\n for org in conn.iter_organizations():\n print(json.dumps(org, indent=4))\n\nDownloading Only New Alerts\n---------------------------\n\nA common scenario for using the SDK is downloading only new alerts over\ntime, typically to feed an integration with a 3rd party SIEM or\nticketing system. In order to implement this, the concept of a\npersistent iterator that saves its state on a JSON file is provided in\nthe SDK:\n\n.. code:: python\n\n from magnetsdk2 import Connection\n from magnetsdk2.iterator import FilePersistentAlertIterator\n\n conn = Connection()\n # replace xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx with a valid organization ID \n alert_iterator = FilePersistentAlertIterator('persistence.json', conn, 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx')\n for alert in alert_iterator:\n try:\n # try to process alert in some way\n print(alert)\n except:\n alert_iterator.load() # on failure, reload iterator so last alert doesn't count as processed\n else:\n alert_iterator.save() # on success, save iterator so last alert counts as processed\n\nIf you run this same code multiple times, it should ever only output\nalerts it hasn't processed before, provided file ``persistence.json`` is\nnot tampered with and remains available for reading and writing.\n\nYou save the current state of the iterator with the ``save`` method. If\nyou tried to process an alert and failed, you can simply not save the\niterator and reload the previous consistent state from disk using the\n``load`` method.\n\nThough the provided implementation saves the data to a JSON file, it is\neasy to add other means of persistence by creating subclasses of\n``magnetsdk2.iterator.AbstractPersistentAlertIterator`` that implement\nthe abstract ``_save`` and ``_load`` methods.\n\nCommand-line Utility\n--------------------\n\nStarting with version 1.2.0, the package installs a ``niddel``\ncommand-line utility which can be used to perform most of the same\nfunctionalities available on the SDK. First install the package:\n\n.. code:: bash\n\n $ pip install magnetsdk2\n\nThen, you can see that a ``--profile`` option can be provided to select\nan alternative API key from ``~/.magnetsdk/config``, as described\npreviously:\n\n.. code:: bash\n\n $ niddel -h\n usage: niddel [-h] [-p PROFILE] [-i] [-v] [-o OUTFILE]\n {me,organizations,alerts,logs} ...\n\n Command-line utility to interact with the Niddel Magnet v2 API (v1.4.1)\n\n positional arguments:\n {me,organizations,alerts,logs}\n me display API key owner information\n organizations list basic organization information\n alerts list an organization's alerts\n logs upload, download or list log files\n\n optional arguments:\n -h, --help show this help message and exit\n -p PROFILE, --profile PROFILE\n which profile (from ~/.magnetsdk/config) to obtain API\n key from\n -i, --indent indent JSON output\n -v, --verbose set verbose mode\n -o OUTFILE, --outfile OUTFILE\n destination file to write to, if exists will be\n overwritten\n\nYou can even use a persistent alert iterator by providing a file name\nwith ``--persist`` when listing alerts:\n\n.. code:: bash\n\n $ niddel alerts -h\n usage: niddel alerts [-h] [--start START] [-p PERSIST] [-f {json,cef}]\n organization\n\n list an organization's alerts\n\n positional arguments:\n organization ID of the organization\n\n optional arguments:\n -h, --help show this help message and exit\n --start START initial batch date to process in YYYY-MM-DD format\n --cursor CURSOR latest cursor returned setting the initial batch of alerts\n -p PERSIST, --persist PERSIST\n file to store persistent state data, to ensure only\n alerts that haven't been seen before are part of the\n output\n -f {json,cef}, --format {json,cef}\n format in which to output alerts\n\nKeep in mind that the persistence state is only saved immediately before\nthe command exits, after all unprocessed alerts have been printed to\nstdout. So if the CLI utility is interrupted or if an exception occurs\nmid-processing, no state is saved and any alerts output in this failed\nexecution are not considered processed.\n\nThe default output format for alerts is JSON, but if you provide\n``--format cef`` then the `ArcSight Common Event\nFormat `__\nwill be used instead.\n\n.. |PyPI version| image:: https://badge.fury.io/py/magnetsdk2.svg\n :target: https://badge.fury.io/py/magnetsdk2\n.. |Build status| image:: https://ci.appveyor.com/api/projects/status/7k25x3lphcxagb7t/branch/master?svg=true\n :target: https://ci.appveyor.com/project/asieira/magnet-api2-sdk-python/branch/master\n.. |Dependency Status| image:: https://dependencyci.com/github/Niddel/magnet-api2-sdk-python/badge\n :target: https://dependencyci.com/github/Niddel/magnet-api2-sdk-python", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/niddel/magnet-api2-sdk-python/", "keywords": "", "license": "Apache Software License", "maintainer": "", "maintainer_email": "", "name": "magnetsdk2", "package_url": "https://pypi.org/project/magnetsdk2/", "platform": "any", "project_url": "https://pypi.org/project/magnetsdk2/", "project_urls": { "Homepage": "https://github.com/niddel/magnet-api2-sdk-python/" }, "release_url": "https://pypi.org/project/magnetsdk2/1.6.6/", "requires_dist": null, "requires_python": "", "summary": "Python SDK to access the Niddel Magnet API v2", "version": "1.6.6" }, "last_serial": 5788314, "releases": { "1.1.0": [ { "comment_text": "", "digests": { "md5": "21db14e521e519b2235525c77ac26c60", "sha256": "2465a78edbd131926837ab38cc983dae706535c7c1f6bc03f3091502076df3b3" }, "downloads": -1, "filename": "magnetsdk2-1.1.0.tar.gz", "has_sig": false, "md5_digest": "21db14e521e519b2235525c77ac26c60", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9916, "upload_time": "2017-11-09T14:55:54", "url": "https://files.pythonhosted.org/packages/c0/96/8a316c35516e180777e974d3742232a9879882c7bea2d3c95795ea644cb3/magnetsdk2-1.1.0.tar.gz" } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "7b3a2a2a6160921e243d686a7a08212e", "sha256": "d5cf5a05ff906e2c4ba7fea915e2fd10fe25021a1fc9ba8115b3cdc4ae3cff51" }, "downloads": -1, "filename": "magnetsdk2-1.2.0.tar.gz", "has_sig": false, "md5_digest": "7b3a2a2a6160921e243d686a7a08212e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12030, "upload_time": "2017-11-09T19:32:40", "url": "https://files.pythonhosted.org/packages/7d/0f/987ce1204df8b5966fce808d6369ae6c9604bb15beecce3b39adf324c64b/magnetsdk2-1.2.0.tar.gz" } ], "1.2.2": [ { "comment_text": "", "digests": { "md5": "a6292f9c2b55c7a76237c75a7d1087e6", "sha256": "b9e097f5844508c986f1f2633028d0e149cf5363d1b6798b9a464698fcbb60d4" }, "downloads": -1, "filename": "magnetsdk2-1.2.2.tar.gz", "has_sig": false, "md5_digest": "a6292f9c2b55c7a76237c75a7d1087e6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13876, "upload_time": "2017-11-09T20:43:27", "url": "https://files.pythonhosted.org/packages/1c/df/06961b49262c31ab704e971a064c0bc8c3744c1124512c2faf3a26efa68a/magnetsdk2-1.2.2.tar.gz" } ], "1.2.3": [ { "comment_text": "", "digests": { "md5": "19bee8d7720b1fd74c07aadcd29a7e88", "sha256": "943ceb48c78c8535bfa4400d69dd8ce096a614e1cd97152eb24895b537b18e56" }, "downloads": -1, "filename": "magnetsdk2-1.2.3.tar.gz", "has_sig": false, "md5_digest": "19bee8d7720b1fd74c07aadcd29a7e88", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13882, "upload_time": "2017-11-09T20:54:06", "url": "https://files.pythonhosted.org/packages/f0/58/bd6c95f492abd6dbe3078a0c56406d1d01d330e974c8470334a8af74b0dc/magnetsdk2-1.2.3.tar.gz" } ], "1.3.0": [ { "comment_text": "", "digests": { "md5": "3b439d2c45677957e379d5074d562348", "sha256": "09a2cd4f31a98ac89f18740fd60ec8e9556d12b342351e5dd38159492c8aed89" }, "downloads": -1, "filename": "magnetsdk2-1.3.0.tar.gz", "has_sig": false, "md5_digest": "3b439d2c45677957e379d5074d562348", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16125, "upload_time": "2017-11-15T18:43:57", "url": "https://files.pythonhosted.org/packages/9d/f5/a63df160652ff952935c960ea2fab5a4ff82bba2a2c5d21a9b8309724566/magnetsdk2-1.3.0.tar.gz" } ], "1.3.1": [ { "comment_text": "", "digests": { "md5": "613d30e5c90d64c5434f603047cac76d", "sha256": "1e5260ae2dd70e63d3fe18a2543de3b88d83376a7a83f645a728a0466db563e5" }, "downloads": -1, "filename": "magnetsdk2-1.3.1.tar.gz", "has_sig": false, "md5_digest": "613d30e5c90d64c5434f603047cac76d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16103, "upload_time": "2017-11-15T19:18:47", "url": "https://files.pythonhosted.org/packages/6b/41/579832bc3920d0cd26dd7d0e52239d0519f8d79026f1a49e52d6fc9541ee/magnetsdk2-1.3.1.tar.gz" } ], "1.3.2": [ { "comment_text": "", "digests": { "md5": "e4007c707e8e2d2e433a44cbb07398a1", "sha256": "6b2ad7aa705f663400c8ac303303d8d167471d81093cdcedfe0d3e92ff608eef" }, "downloads": -1, "filename": "magnetsdk2-1.3.2.tar.gz", "has_sig": false, "md5_digest": "e4007c707e8e2d2e433a44cbb07398a1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16141, "upload_time": "2017-11-15T20:35:06", "url": "https://files.pythonhosted.org/packages/24/f8/dd20c248cde9641cf376debb849cb0344661bafd02a13c27315b727995e4/magnetsdk2-1.3.2.tar.gz" } ], "1.4.0": [ { "comment_text": "", "digests": { "md5": "3c7434ae3477382db12b179ec5cd65b6", "sha256": "b80f100498678316cb84c4c551701079946399e85f255195fd11b746ac736407" }, "downloads": -1, "filename": "magnetsdk2-1.4.0.tar.gz", "has_sig": false, "md5_digest": "3c7434ae3477382db12b179ec5cd65b6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17860, "upload_time": "2017-11-17T14:38:38", "url": "https://files.pythonhosted.org/packages/a8/af/b29bf453e8a28730ecdc9dda990e0c0d892977f647dc8ae37accbc185f01/magnetsdk2-1.4.0.tar.gz" } ], "1.4.1": [ { "comment_text": "", "digests": { "md5": "f3b56b98c857a5e3e5516bd11ed9e043", "sha256": "38e04267074f731b597256b66aa92b6e75fbb8580cfdf45af53ec20787736ead" }, "downloads": -1, "filename": "magnetsdk2-1.4.1.tar.gz", "has_sig": false, "md5_digest": "f3b56b98c857a5e3e5516bd11ed9e043", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18177, "upload_time": "2017-11-23T11:18:32", "url": "https://files.pythonhosted.org/packages/70/18/b6e7eeda8791dee117569bd98a1c022655b40d33752e662ad9bc0c3faf70/magnetsdk2-1.4.1.tar.gz" } ], "1.5.0": [ { "comment_text": "", "digests": { "md5": "49bd50017276c70ad4929b6cf69fe5b0", "sha256": "fb17f8278534d0b03e3892e2b446a0b1fd80582a989b8157eb9d349570f4dd5a" }, "downloads": -1, "filename": "magnetsdk2-1.5.0.tar.gz", "has_sig": false, "md5_digest": "49bd50017276c70ad4929b6cf69fe5b0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19020, "upload_time": "2017-11-24T18:46:48", "url": "https://files.pythonhosted.org/packages/45/fc/9a9e8f4e005b833ae974e32d35a6483ff885417d300639bb9495524f802f/magnetsdk2-1.5.0.tar.gz" } ], "1.5.1": [ { "comment_text": "", "digests": { "md5": "5f7e8cd7164486df69b062803173d1a5", "sha256": "c24f26636f8c3fa4d083b2665b0d09e9821bdba022ec0cc83d4b5712e1bd6400" }, "downloads": -1, "filename": "magnetsdk2-1.5.1.tar.gz", "has_sig": false, "md5_digest": "5f7e8cd7164486df69b062803173d1a5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19199, "upload_time": "2017-12-01T11:21:37", "url": "https://files.pythonhosted.org/packages/cf/88/8a8167d71d25da704e3c8843e7d491ddba73860f073c3765bd3aa8cb5a9d/magnetsdk2-1.5.1.tar.gz" } ], "1.5.2": [ { "comment_text": "", "digests": { "md5": "6db046ffcdd2418e0d8b71ac0fc93754", "sha256": "f8b30115b8867141ba252baac3470cd92381c43dc73b6df02375117424b20419" }, "downloads": -1, "filename": "magnetsdk2-1.5.2.tar.gz", "has_sig": false, "md5_digest": "6db046ffcdd2418e0d8b71ac0fc93754", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19214, "upload_time": "2017-12-08T12:42:38", "url": "https://files.pythonhosted.org/packages/9d/1e/d6a5e1d812dbe72362c2e6935854a3efce6e2cb6a266cd98ad703cb81dd2/magnetsdk2-1.5.2.tar.gz" } ], "1.5.3": [ { "comment_text": "", "digests": { "md5": "82541ebe8794f45e13a74914c20d7a91", "sha256": "f19b1c0060a7b4ca1ebc1c2ec8f45fb70160bf4525c539eaa879f0b3d02c43fd" }, "downloads": -1, "filename": "magnetsdk2-1.5.3.tar.gz", "has_sig": false, "md5_digest": "82541ebe8794f45e13a74914c20d7a91", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19121, "upload_time": "2017-12-08T13:17:22", "url": "https://files.pythonhosted.org/packages/83/33/ef98e669cf10847b8409faa3535cf1a1c12cdf514f92ed27029c0f283bb8/magnetsdk2-1.5.3.tar.gz" } ], "1.5.4": [ { "comment_text": "", "digests": { "md5": "5e9e9ada35c6e910513b263881d02a7a", "sha256": "289a83c0b931644591566b0a16fe47bffa086114119776f9ef9b0fba6e539988" }, "downloads": -1, "filename": "magnetsdk2-1.5.4.tar.gz", "has_sig": false, "md5_digest": "5e9e9ada35c6e910513b263881d02a7a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19122, "upload_time": "2017-12-08T20:01:02", "url": "https://files.pythonhosted.org/packages/fd/1d/297a6ac9348c746a70b25171f0f7da99cb4f33058dc465d620982ec2008e/magnetsdk2-1.5.4.tar.gz" } ], "1.6.0": [ { "comment_text": "", "digests": { "md5": "3e1e86be1b2a9340cb18a7b5274aa043", "sha256": "0bea96f376175a6f8d2a8b29b2b07c14b2fb8cc8bd10dfc8e47639cd3d7a7766" }, "downloads": -1, "filename": "magnetsdk2-1.6.0.tar.gz", "has_sig": false, "md5_digest": "3e1e86be1b2a9340cb18a7b5274aa043", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19012, "upload_time": "2018-06-21T20:34:23", "url": "https://files.pythonhosted.org/packages/09/fb/57427f8afa0d53d9db9fbf65a2ba71e068fee79afa2cb181b54e88d83abf/magnetsdk2-1.6.0.tar.gz" } ], "1.6.1": [ { "comment_text": "", "digests": { "md5": "7dd760c6032ce6c7b524718bd1e33455", "sha256": "d107e25aa9357be1140d58881c5297ec2950f5809752deda553c93d22569e498" }, "downloads": -1, "filename": "magnetsdk2-1.6.1.tar.gz", "has_sig": false, "md5_digest": "7dd760c6032ce6c7b524718bd1e33455", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19678, "upload_time": "2018-07-06T13:42:21", "url": "https://files.pythonhosted.org/packages/ef/73/711a372df3525024761764825937b6348a485843c0f622e4cde82115eecf/magnetsdk2-1.6.1.tar.gz" } ], "1.6.2": [ { "comment_text": "", "digests": { "md5": "798b8515fecdae02d865c8aec0ada2ee", "sha256": "aa3c9a947b8b0c0708b26ca44b9fd02ff214a67583910b8f2f828b60fcda5f11" }, "downloads": -1, "filename": "magnetsdk2-1.6.2.tar.gz", "has_sig": false, "md5_digest": "798b8515fecdae02d865c8aec0ada2ee", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19165, "upload_time": "2018-09-20T18:42:10", "url": "https://files.pythonhosted.org/packages/d0/38/df2ce6a38ee29e11e199ebc84ab2f10812ef3b98ecfa0e62a9f0596e8be6/magnetsdk2-1.6.2.tar.gz" } ], "1.6.3": [ { "comment_text": "", "digests": { "md5": "131dc0d3b53c462219546f76c92aa642", "sha256": "bb4b5795684ec276faff5c4d0d08b3306342ac72a4e5a2ac93aabed79e46aff7" }, "downloads": -1, "filename": "magnetsdk2-1.6.3.tar.gz", "has_sig": false, "md5_digest": "131dc0d3b53c462219546f76c92aa642", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20223, "upload_time": "2018-09-27T16:31:35", "url": "https://files.pythonhosted.org/packages/32/25/3531e5f5578333a295f15fac061e68e9d5a56c71b154eec8019d04817ac5/magnetsdk2-1.6.3.tar.gz" } ], "1.6.4": [ { "comment_text": "", "digests": { "md5": "e6e80d5ede025a7224e139d7f1df93e8", "sha256": "2edcfc74b53df7cbcd02504572aebe54418f69a671d48cec763c241f49bdf373" }, "downloads": -1, "filename": "magnetsdk2-1.6.4.tar.gz", "has_sig": false, "md5_digest": "e6e80d5ede025a7224e139d7f1df93e8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20173, "upload_time": "2018-12-20T21:09:12", "url": "https://files.pythonhosted.org/packages/8a/08/61b9fd334562d1ff62cef1e4cd958035776521079bb7fb836f137b2ce945/magnetsdk2-1.6.4.tar.gz" } ], "1.6.5": [ { "comment_text": "", "digests": { "md5": "22c6c948a81f1de2290b90c21d69c79a", "sha256": "9c3e78503e6d0996fb97f9b2f4585a934973109a5fb9bafeafcfdfae63700d95" }, "downloads": -1, "filename": "magnetsdk2-1.6.5.tar.gz", "has_sig": false, "md5_digest": "22c6c948a81f1de2290b90c21d69c79a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20339, "upload_time": "2019-05-28T20:28:31", "url": "https://files.pythonhosted.org/packages/c1/46/84f0994594c7a3c8f1bdd42461c2601fd8012908f95b0d0a7d66535017d6/magnetsdk2-1.6.5.tar.gz" } ], "1.6.6": [ { "comment_text": "", "digests": { "md5": "4a401bdd9828c8e8d2733db73db949ac", "sha256": "d3e84f2576ae1733d798ddecdeda7f1370cb4c01df06dfa458c4d08c70d4cb4f" }, "downloads": -1, "filename": "magnetsdk2-1.6.6.0.tar.gz", "has_sig": false, "md5_digest": "4a401bdd9828c8e8d2733db73db949ac", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20467, "upload_time": "2019-09-05T20:38:13", "url": "https://files.pythonhosted.org/packages/05/e2/36e8f0b82953cf752202f2b91d6ece1543d5fdd03fab1db9b7156345fd5e/magnetsdk2-1.6.6.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "4a401bdd9828c8e8d2733db73db949ac", "sha256": "d3e84f2576ae1733d798ddecdeda7f1370cb4c01df06dfa458c4d08c70d4cb4f" }, "downloads": -1, "filename": "magnetsdk2-1.6.6.0.tar.gz", "has_sig": false, "md5_digest": "4a401bdd9828c8e8d2733db73db949ac", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20467, "upload_time": "2019-09-05T20:38:13", "url": "https://files.pythonhosted.org/packages/05/e2/36e8f0b82953cf752202f2b91d6ece1543d5fdd03fab1db9b7156345fd5e/magnetsdk2-1.6.6.0.tar.gz" } ] }