---
name: "solid_auth"
section: "1p"
platform: "linux"
package: "solid-auth"
version: "0.91-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/solid_auth"
---

# solid\_auth(1p)

A Solid management tool

## NAME

solid\_auth - A Solid management tool

## SYNOPSIS

```
      # Set your default webid
      export SOLID_WEBID=https://timbl.inrupt.net/profile/card#me
      # Authentication to a pod
      solid_auth authenticate
      # Get the http headers for a authenticated request
      solid_auth headers GET https://timbl.inrupt.net/inbox/
      # Act like a curl command and fetch authenticated content
      solid_auth curl -- -X GET https://timbl.inrupt.net/inbox/
      # Add some data
      solid_auth curl -- -X POST \
            -H "Content-Type: text/plain" \
            -d "abc" \
            https://timbl.inrupt.net/public/

      # Add a file
      solid_auth curl -- -X PUT \
            -H "Content-Type: application/ld+json" \
            -d "@myfile.jsonld" \
            https://timbl.inrupt.net/public/myfile.jsonld
      # Set a solid base url
      export SOLID_REMOTE_BASE=https://timbl.inrupt.net
      # List all resources on some Pod path
      solid_auth list /public/
      # Get some data
      solid_auth get /inbox/
      # Post some data
      solid_auth post /inbox/ myfile.jsonld
      # Put some data
      solid_auth -f put /public/myfile.txt myfile.txt
      # Patch data
      solid_auth -f patch /public/myfile.txt.meta  - <<EOF
      INSERT DATA { <> <http://example.org> 1234 }
      EOF

      # Create a folder
      solid_auth -f put /public/mytestfolder/
      # Delete some data
      solid_auth delete /public/myfile.txt
      # Mirror a resource, container or tree
      mkdir /data/my_copy
      solid_auth -r mirror /public/ /data/my_copy
      # Upload a directory to the pod
      #  Add the -x option to do it for real (only a test without this option)
      solid_auth -r upload /data/my_copy /public/
      # Clean all files in a container
      #  Add the -x option to do it for real (only a test without this option)
      solid_auth --keep clean /demo/
      # Clean a complete container
      #  Add the -x option to do it for real (only a test without this option)
      solid_auth -r clean /demo/
```

## ENVIRONMENT

- SOLID\_WEBID

  Your WebId.

- SOLID\_REMOTE\_BASE

  The Base URL that is used for all delete, get, head, options post, put, patch requests.

- SOLID\_CLIENT\_ID

  The URL to a static client configuration. See `"etc/web-solid-auth.jsonld"` for an example. This file, edited for your own environment, needs to be published on some public accessible webserver.

## CONFIGURATION

- \--webid

  Your WebId.

- \--base

  The Base URL that is used for all delete, get, head, options post, put, patch requests.

- \--clientid

  The URL to a static client configuration. See `"etc/web-solid-auth.jsonld"` for an example. This file, edited for your own environment, needs to be published on some public accessible webserver.

- \--skip

  Skip resources that already exist (mirror).

- \--delete

  Delete local files that are not in the remote container (mirror).

- \--keep

  Keep containers when cleaning data (clean).

- \--etag=STRING

  Only update the data when the 'Etag' header matches the given string (put,patch). E.g. use the `"head"` command to find the ETag of a resource :

  ```
      $ solid_auth head /demo/LICENSE
      ...
      ETag: "189aa19989dc47eab46c9f2e8c47d0836bb08cb09f7863cbf3cd3bb9a751be27"
      ...
  ```

  Now update the resource with ETag protection

  ```
      $ solid_auth \
          --etag=189aa19989dc47eab46c9f2e8c47d0836bb08cb09f7863cbf3cd3bb9a751be27 \
          put /demo/LICENSE LICENSE
  ```

- \--force \| -f

  Force overwriting existing resources (put, patch).

- \-r

  Recursive (clean, mirror, upload).

- \-x

  Do it for real. The commands `"clean"` and `"upload"` will run by default in safe mode.

- \-H name=value

  Add a header to a request (repeatable) for `"get"`, `"post"`, `"head"`, `"options"` and `"delete"`.

## COMMAND

- authenticate

  Start an authentication process for your WebId. You will be presented with a  URL that you need to open in a webbrowser. After a successfull login the  command can be closed.

  The webbrowser needs to be opened on the same host as the where you where you run the solid\_auth command.

- headers METHOD URL

  Return the Authentication and DPoP headers for a HTTP `"METHOD"` request to `"URL"`.

- curl CURL-OPTS

  Execute a curl command with Authentication and DPoP headers added. Add a `"--"`  option to the `"CURL-OPTS"` to stop solid\_auth from interpreting Curl options.

- list URL

  List the resources in a LDP container at URL.

- mirror \[-rx\] \[--skip\] \[--delete\] URL DIRECTORY

  Mirror the contents of a container to a local directory. Optional provide `"-r"` option for recursive mirror.

- upload \[-rx\] DIRECTORY URL

  Upload a directorty to a container. Optional provide `"-r"` option for recursive upload. With the `"-x"` option, the command will run in demo mode.

- clean \[-rx\] \[--keep\] URL

  Clean all resources in a directory. Optional provide `"-r"` option for recursive clean. With the `"-x"` option, the command will run in demo mode. With the `"--keep"` options all container will be kept.

- get URL

  Return the response of a HTTP GET request to URL.

- post URL FILE \[MIMETYPE\]

  Return the HTTP Message of a HTTP POST request of the FILE with MIMETYPE. Uses libmagic to guess the mimetype.

- put URL \[FILE\] \[MIMETYPE\]

  Return the HTTP Message of a HTTP PUT request of the FILE with MIMETYPE. Uses libmagic to guess the mimetype.

  When the URL ends with a slash (/), then a new container will be created.

- patch URL FILE\|SPARQL

  Send the contents of a SPARQL patch file or string to a URL. Return the HTTP Message of the HTTP PATCH request to the URL.

- head URL

  Return the HTTP Header of a HTTP HEAD request to URL.

- head OPTIONS

  Return the HTTP Header of a HTTP OPTIONS request to URL.

- delete URL

  Return the HTTP Message of a HTTP DELETE request to URL.

- id\_token

  Show the contents of the JWT id token.

- access\_token

  Show the contents of the JWT access token.

## INSPIRATION

This was very much inspired by the Python solid-flask code by Rai \<http://agentydragon.com\> at \<https://gitlab.com/agentydragon/solid-flask\>, and Jeff Zucker's \<https://github.com/jeff-zucker\> Solid-Shell at \<https://www.npmjs.com/package/solid-shell\>.

## COPYRIGHT AND LICENSE

This software is copyright (c) 2021 by Patrick Hochstenbach.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
