diff --git a/docs/getting-started.rst b/docs/getting-started.rst index e8081c15..e09c5275 100644 --- a/docs/getting-started.rst +++ b/docs/getting-started.rst @@ -1,306 +1,308 @@ Getting Started =============== This is a guide for how to prepare and push a software deposit with the swh-deposit commands. The api is rooted at https://deposit.softwareheritage.org. For more details, see the `main documentation <./index.html>`__. Requirements ------------ You need to be referenced on SWH's client list to have: * a credential (needed for the basic authentication step) -- in this document we reference ```` as the client's name and ```` + + - in this document we reference ```` as the client's name and ```` as its associated authentication password. * an associated collection (by default the client's name is the collection name) `Contact us for more information. `__ Prepare a deposit ----------------- * compress the files in a supported archive format: + - zip: common zip archive (no multi-disk zip files). - tar: tar archive without compression or optionally any of the following compression algorithm gzip (.tar.gz, .tgz), bzip2 (.tar.bz2) , or lzma (.tar.lzma) -* prepare a metadata file with an atom xml entry (more details on -`metadata documentation <./metadata.html>`__.): +* prepare a metadata file (more details `here <./metadata.html>`__.): + - specify metadata schema/vocabulry (CodeMeta is recommended) - specify *MUST* metadata (url, authors, software name and - the external\_identifier) + the external\_identifier) - add all available information under the compatible metadadata term An example of an atom entry file with CodeMeta terms: - .. code:: xml +.. code:: xml Je suis GPL 12345 forge.softwareheritage.org/source/jesuisgpl/ Yes, this is another implementation of "Hello, world!” when you run it. GPL https://www.gnu.org/licenses/gpl.html Reuben Thomas Maintainer Sami Kerola Maintainer Check authentication with a service document request ---------------------------------------------------- Start with a simple request to check credentials and retrieve the *collection iri* onto which the deposit will be pushed . .. code:: shell curl -i --user : https://deposit.softwareheritage.org/1/servicedocument/ - The successful response: + +The successful response: ^^^^^^^^^^^^^^^^^^^^^^^^ .. code:: shell HTTP/1.0 200 OK Server: WSGIServer/0.2 CPython/3.5.3 Content-Type: application/xml 2.0 209715200 The Software Heritage (SWH) Archive Software Collection application/zip application/x-tar Collection Policy Software Heritage Archive Collect, Preserve, Share false http://purl.org/net/sword/package/SimpleZip https://deposit.softwareheritage.org/1// The error response 401 for Unauthorized access: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. code:: shell curl -i https://deposit.softwareheritage.org/1// HTTP/1.0 401 Unauthorized Server: WSGIServer/0.2 CPython/3.5.3 Content-Type: application/xml WWW-Authenticate: Basic realm="" X-Frame-Options: SAMEORIGIN Access to this api needs authentication processing failed Push deposit ------------ +You can push a deposit with: + +* a one single deposit (archive + metadata): + + The user posts in one query a software + source code archive and associated metadata. + The deposit is directly marked with status ``deposited``. +* a multi-part deposit: + + 1. Create an incomplete deposit (marked with status ``partial``) + 2. Add data to a deposit (in multiple requests if needed) + 3. Finalize deposit (the status becomes ``deposited``) -* one single deposit (archive + metadata): The user posts in one query (one deposit) a software - source code archive and associated metadata (deposit is finalized with status - ``deposited``). -* multi-part deposit - 1. Create an incomplete deposit (status ``partial``) - 2. Add data to a deposit (and finalize it, so the status becomes ``deposited``) - 3. Finalize deposit (can be done during second step) Single deposit -~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^ Once the files are ready for deposit, we want to do the actual deposit -in one shot, sending exactly one POST query with the prepared archive and -metadata file: +in one shot, sending exactly one POST query: * 1 archive (content-type ``application/zip`` or ``application/x-tar``) -* 1 atom xml content (``content-type: application/atom+xml;type=entry``) +* 1 metadata file in atom xml format (``content-type: application/atom+xml;type=entry``) For this, we need to provide: -* the arguments: --username 'name' --password 'pass' as credentials -* the name of the archive (example: 'path/to/archive-name.tgz') +* the arguments: ``--username 'name' --password 'pass'`` as credentials +* the name of the archive (example: ``path/to/archive-name.tgz``) * in the same location of the archive and with the following namimg pattern -for the metadata file: path/to/archive-name.metadata.xml + for the metadata file: ``path/to/archive-name.metadata.xml`` * optionally, the --slug 'your-id' argument, a reference to a unique identifier the client uses for the software object. You can do this with the following command: +minimal deposit + .. code:: shell -minimal deposit - $ swh-deposit --username 'name' --password 'pass' je-suis-gpl.tgz + $ swh-deposit --username 'name' --password 'pass' je-suis-gpl.tgz with the client's identifier - $ swh-deposit --username 'name' --password 'pass' je-suis-gpl.tgz --sulg '123456' + +.. code:: shell + + $ swh-deposit --username 'name' --password 'pass' je-suis-gpl.tgz --sulg '123456' deposit to a specific client's collection - $ swh-deposit --username 'name' --password 'pass' je-suis-gpl.tgz --collection 'second-collection' + +.. code:: shell + + $ swh-deposit --username 'name' --password 'pass' je-suis-gpl.tgz --collection 'second-collection' You just posted a deposit to your collection on Software Heritage -https://deposit.softwareheritage.org/1//. -If everything went well, you should have received a response similar to -this: -.. code:: shell +If everything went well, a the successful response will contain the +elements below: - HTTP/1.0 201 Created - Server: WSGIServer/0.2 CPython/3.5.3 - Location: /1//10/metadata/ - Content-Type: application/xml +* ``HTTP/1.0 201 Created``: the deposit was created successfully +* Inforamtion about the deposit, such as: - - 9 - Sept. 26, 2017, 10:11 a.m. - payload - deposited + * deposit id + * deposit date + * deposit status will be ``deposited`` +* Entry points: - - - - - - - - + * ``Location: /1///metadata/``: the EDIT-SE-IRI through + which we can update a deposit's metadata + * ``Location: /1///media/``: the EM-IRI through + which we can update a deposit's content - http://purl.org/net/sword/package/SimpleZip - -* ``HTTP/1.0 201 Created``: the deposit is successful -* ``Location: /1//10/metadata/``: the EDIT-SE-IRI through - which we can update a deposit -* body: it is a deposit receipt detailing all endpoints available to manipulate - the deposit (update, replace, delete, etc...) It also explains the deposit - identifier to be 9 (which is useful for the remaining example). -Note: As the deposit is in ``deposited`` status, you cannot actually -update anything after this query. It will be answered with a 403 forbidden answer. +Note: As the deposit is in ``deposited`` status, you cannot +update the deposit after this query. It will be answered with +a 403 forbidden answer. Multi-part deposit -~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^^^^^^^^^^ The steps to create a multi-part deposit: -Create an incomplete deposit -^^^^^^^^^^^^^^^^^^^^^^^^^^^ -First use the --partial argument to declare there is more to come +1. Create an incomplete deposit +~~~~~~~~~~~~~~~~~~~ +First use the ``--partial`` argument to declare there is more to come .. code:: shell $ swh-deposit --username 'name' --password 'secret' --partial \ - foo.tar.gz + foo.tar.gz -Add content or metadata to the deposit -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -Continue the deposit by using the --deposit-id argument given as a response -for the first step. You can continue adding content or metadat while you use -the --partial argument. +2. Add content or metadata to the deposit +~~~~~~~~~~~~~~~~~~~ +Continue the deposit by using the ``--deposit-id`` argument given as a response +for the first step. You can continue adding content or metadata while you use +the ``--partial`` argument. .. code:: shell $ swh-deposit --username 'name' --password 'secret' --partial \ - --deposit-id 42 add-foo.tar.gz + --deposit-id 42 add-foo.tar.gz -Finalize deposit -^^^^^^^^^^^^^^^^^ -On your last addition, by not declaring it as --partial, the deposit will be +3. Finalize deposit +~~~~~~~~~~~~~~~~~~~ +On your last addition, by not declaring it as ``--partial``, the deposit will be considered as completed and its status will be changed to ``deposited``. .. code:: shell -$ swh-deposit --username 'name' --password 'secret' \ - --deposit-id 42 last-foo.tar.gz + + $ swh-deposit --username 'name' --password 'secret' \ + --deposit-id 42 last-foo.tar.gz Update deposit ---------------- * replace deposit : + - only possible if the deposit status is ``partial`` - - by using the --replace argument + - by using the ``--replace`` argument + .. code:: shell + $ swh-deposit --username 'name' --password 'secret' --replace\ --deposit-id 11 updated-je-suis-gpl.tar.gz -* update a loaded deposit with a new version - - by using the external-id with the --slug argument which will link the - new deposit with its parent deposit +* update a loaded deposit with a new version: + + - by using the external-id with the ``--slug`` argument which will link the + new deposit with its parent deposit .. code:: shell $ swh-deposit --username 'name' --password 'pass' je-suis-gpl-v2.tgz --sulg '123456' Check the deposit's status -^^^^^^^^^^^^^^^^^^^^^^^^^ +-------------------------- -You can check the status of the deposit by using the --deposit-id argument: +You can check the status of the deposit by using the ``--deposit-id`` argument: .. code:: shell $ swh-deposit --login 'name' --pass 'secret' --deposit-id '11' --status Response: .. code:: xml 9 deposited deposit is fully received and ready for loading The different statuses: + - *partial* : multipart deposit is still ongoing - *deposited*: deposit completed - *rejected*: deposit failed the checks - *verified*: content and metadata verified - *loading*: loading in-progress - *done*: loading completed successfully - *failed*: the deposit loading has failed When the the deposit has been loaded into the archive it will be marked ``done`` and in the response will be also available the . For more information about the swh-id go to .....