--- title: Using API --- E2E Object Storage supports a range of REST endpoints for seamless integration with external applications and plugins. ## Getting Started Object Storage is capable of supporting any API SDK that’s S3 compliant, but we recommend using [Minio SDKs](https://docs.min.io/docs/python-client-api-reference.html) for the best experience. In this article, we will use Python to demonstrate API examples, but you may use other languages as per your comfort. Pre-requisites -------------- - You will need **Python 2.7** or **higher**. - You will need a storage bucket and credentials (access/secret key). - Install **minio python sdk**: ```bash pip install minio ``` Initialize Client ----------------- **Endpoint URLs** - **Delhi-NCR :** ``objectstore.e2enetworks.net`` ```bash from minio import Minio eos_client = Minio('<>', access_key='<>', secret_key='<>', secure=True) ``` ## List objects from a bucket ```bash # method: list_objects # params: bucket_name, prefix (object path prefix), recursive (set True for directories) objects = eos_client.list_objects('<>', prefix='<>', recursive=False) for obj in objects: print(obj.bucket_name, obj.object_name, obj.last_modified, obj.size, obj.content_type) ``` ## Get Object ```bash # method: get_object # params: bucket_name, object name (object full path) from minio.error import ResponseError try: data = eos_client.get_object('bucketname', 'objectname') with open('test-file', 'wb') as file_data: for d in data.stream(32*1024): file_data.write(d) except ResponseError as err: print(err) ``` ## Put Object ```bash # method: get_object # params: bucket_name, object name (object full path), # file pointer, size of file, content type from minio.error import ResponseError try: with open('/local_dir/test-file.csv', 'rb') as file_data: file_stat = os.stat('/local_dir/test-file.csv') eos_client.put_object('bucketname', 'objectname', file_data, file_stat.st_size, content_type='application/csv') except ResponseError as err: print(err) ``` ## Remove Object ```bash # method: remove_objects # params: bucket_name, object prefix (e.g. directory path) from minio.error import ResponseError try: get_name = lambda object: object.object_name names = map(get_name, client.list_objects_v2('bucketname', 'path', recursive=True)) for err in client.remove_objects('bucketname', names): print("Deletion Error: {}".format(err)) except ResponseError as err: print(err) ``` ## Supported Operations At the moment, the following object-level operations are supported. But we intend to add more bucket and admin-level functions soon. Please feel free to write to us at `cloud-platform@e2enetworks.com` for feature requests. | Operation | Operation | Operation | |-------------------------------|-------------------------------|-------------------------------| | list_objects | get_object | remove_object | | put_object | copy_object | remove_objects | | fput_object | fget_object | get_partial_object | | select_object_content | remove_incomplete_upload | presigned_get_object | | presigned_put_object | | | ---