.. _store-methods-ref:

store methods
=============

file_store_add (EE only)
------------------------

.. py:function:: file_store_add(apiuser, filename, content, description=<Optional:''>)

   Upload API for the file_store

   Example usage from CLI::
       rhodecode-api --instance-name=enterprise-1 upload_file "{"content": "$(cat image.jpg | base64)", "filename":"image.jpg"}"

   This command takes the following options:

   :param apiuser: This is filled automatically from the |authtoken|.
   :type apiuser: AuthUser
   :param filename: name of the file uploaded
   :type filename: str
   :param description: Optional description for added file
   :type description: str
   :param content: base64 encoded content of the uploaded file
   :type content: str

   Example output:

   .. code-block:: bash

     id : <id_given_in_input>
     result: {
       "access_path": "/_file_store/download/84d156f7-8323-4ad3-9fce-4a8e88e1deaf-0.jpg",
       "access_path_fqn": "http://server.domain.com/_file_store/download/84d156f7-8323-4ad3-9fce-4a8e88e1deaf-0.jpg",
       "store_fid": "84d156f7-8323-4ad3-9fce-4a8e88e1deaf-0.jpg"
     }
     error :  null


file_store_add_with_acl (EE only)
---------------------------------

.. py:function:: file_store_add_with_acl(apiuser, filename, content, description=<Optional:''>, scope_user_id=<Optional:None>, scope_repo_id=<Optional:None>, scope_repo_group_id=<Optional:None>)

   Upload API for the file_store

   Example usage from CLI::
       rhodecode-api --instance-name=enterprise-1 upload_file "{"content": "$(cat image.jpg | base64)", "filename":"image.jpg", "scope_repo_id":101}"

   This command takes the following options:

   :param apiuser: This is filled automatically from the |authtoken|.
   :type apiuser: AuthUser
   :param filename: name of the file uploaded
   :type filename: str
   :param description: Optional description for added file
   :type description: str
   :param content: base64 encoded content of the uploaded file
   :type content: str

   :param scope_user_id: Optionally bind this file to user.
       This will check ACL in such way only this user can access the file.
   :type scope_user_id: int
   :param scope_repo_id: Optionally bind this file to repository.
       This will check ACL in such way only user with proper access to such
       repository can access the file.
   :type scope_repo_id: int
   :param scope_repo_group_id:  Optionally bind this file to repository group.
       This will check ACL in such way only user with proper access to such
       repository group can access the file.
   :type scope_repo_group_id: int

   Example output:

   .. code-block:: bash

     id : <id_given_in_input>
     result: {
       "access_path": "/_file_store/download/84d156f7-8323-4ad3-9fce-4a8e88e1deaf-0.jpg",
       "access_path_fqn": "http://server.domain.com/_file_store/download/84d156f7-8323-4ad3-9fce-4a8e88e1deaf-0.jpg",
       "store_fid": "84d156f7-8323-4ad3-9fce-4a8e88e1deaf-0.jpg"
     }
     error :  null


file_store_get_info (EE only)
-----------------------------

.. py:function:: file_store_get_info(apiuser, store_fid)

   Get artifact data.

   Example output:

   .. code-block:: bash

     id : <id_given_in_input>
     result: {
         "artifact": {
           "access_path_fqn": "https://rhodecode.example.com/_file_store/download/0-031c2aa0-0d56-49a7-9ba3-b570bdd342ab.jpg",
           "created_on": "2019-10-15T16:25:35.491",
           "description": "my upload",
           "downloaded_times": 1,
           "file_uid": "0-031c2aa0-0d56-49a7-9ba3-b570bdd342ab.jpg",
           "filename": "example.jpg",
           "filename_org": "0-031c2aa0-0d56-49a7-9ba3-b570bdd342ab.jpg",
           "hidden": false,
           "metadata": [
             {
               "artifact": "0-031c2aa0-0d56-49a7-9ba3-b570bdd342ab.jpg",
               "key": "yellow",
               "section": "tags",
               "value": "bar"
             }
           ],
           "sha256": "818dff0f44574dfb6814d38e6bf3c60c5943d1d13653398ecddaedf2f6a5b04d",
           "size": 18599,
           "uploaded_by": {
             "email": "admin@rhodecode.com",
             "emails": [
               "admin@rhodecode.com"
             ],
             "firstname": "Admin",
             "lastname": "LastName",
             "user_id": 2,
             "username": "admin"
           }
         }
     }
     error :  null


file_store_delete (EE only)
---------------------------

.. py:function:: file_store_delete(apiuser, store_fid)

   Delete an artifact based on the secret uuid.

   Example output:

   .. code-block:: bash

     id : <id_given_in_input>
     result: {
         "artifact" : {"uid": "some uid", "removed": true}
     }
     error :  null


file_store_add_metadata (EE only)
---------------------------------

.. py:function:: file_store_add_metadata(apiuser, store_fid, section, key, value, value_type=<Optional:'unicode'>)

   Add metadata into artifact. The metadata consist of section, key, value. eg.
   section='tags', 'key'='tag_name', value='1'

   :param apiuser: This is filled automatically from the |authtoken|.
   :type apiuser: AuthUser

   :param store_fid: file uid, e.g 0-d054cb71-91ab-44e2-9e4b-23fe14b4d74a.mp4
   :type store_fid: str

   :param section: Section name to add metadata
   :type section: str

   :param key: Key to add as metadata
   :type key: str

   :param value: Value to add as metadata
   :type value: str

   :param value_type: Optional type, default is 'unicode' other types are:
       int, list, bool, unicode, str

   :type value_type: str

   Example output:

   .. code-block:: bash

     id : <id_given_in_input>
     result: {
           "metadata": [
             {
               "artifact": "0-d054cb71-91ab-44e2-9e4b-23fe14b4d74a.mp4",
               "key": "secret",
               "section": "tags",
               "value": "1"
             },
             {
               "artifact": "0-d054cb71-91ab-44e2-9e4b-23fe14b4d74a.mp4",
               "key": "video",
               "section": "tags",
               "value": "1"
             }
           ]
     }
     error :  null


