Sign inSign up

cygni/oauth2-resource-server

By cygni

•Updated over 6 years ago

Image
0

230

cygni/oauth2-resource-server repository overview

⁠Resource server

This is a Resource Server to be used for educational purpose only, e.g. it contains hardcoded user accounts etc.

⁠Run

Using docker

$ docker run -p 127.0.0.1:8080:8080 --env SECURITY_JWT_SIGNINGKEY=MRzRBGrU2xtK29dcSLRLUmbwXDVxHmPT cygni/oauth2-resource-server 

Using docker-compose

version: '3.7'

services:
  resource-server:
    image: cygni/oauth2-resource-server
    container_name: resource-server
    environment:
      - SECURITY_JWT_SIGNINGKEY=MRzRBGrU2xtK29dcSLRLUmbwXDVxHmPT
    ports:
      - '8080:8080'

⁠REST API

The backend exposes the following REST endpoints. At the very bottom of this README you will also find examples of request/response messages for each.

EndpointRequest method(s)Authorized role(s)
/apiGETADMIN, USER
/api/eventsGETADMIN
/api/usersGETADMIN
/api/users/{userId}GETADMIN, USER
/api/users/{userId}/subscriptionsGETADMIN, USER
/api/users/{userId}/filesGETADMIN, USER
/api/hashtagsGETADMIN, USER
/api/hashtags/{hashtag}GETADMIN, USER
/api/hashtags/{hashtag}/subscribePOSTADMIN, USER
/api/hashtags/{hashtag}/unsubscribePOSTADMIN, USER
/api/hashtags/{hashtag}/filesGETADMIN, USER
/api/filesGET, POSTADMIN, USER
/api/files/{fileId}GETADMIN, USER
/api/files/{fileId}/hashtagsGETADMIN, USER
/api/files/{fileId}/downloadGETADMIN, USER

⁠Exploring the REST API

⁠GET /api
$ curl --request GET -i --insecure http://resource.local/api -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX25hbWUiOiJqb2hubnkucHVtYUBjeWduaS5zZSIsInNjb3BlIjpbImFueSJdLCJsYXN0X25hbWUiOiJQdW1hIiwiZXhwIjoxNTgwNjU2MDg5LCJmaXJzdF9uYW1lIjoiSm9obm55IiwiYXV0aG9yaXRpZXMiOlsiUk9MRV9VU0VSIl0sImp0aSI6IjI3OTQ5ZmNlLWE1M2MtNGZjMS1hN2FiLTM5MzczMGMxOTNkMCIsImNsaWVudF9pZCI6Ik5RcWtDYnNlMnIifQ.U8GHeInjtlkXYzy9vF0NacN4ROA1jHDvn3XBATW3hng" 
HTTP/1.1 200
{
  "_links" : {
    "self" : {
      "href" : "http://resource.local/api"
    },
    "userProfile" : {
      "href" : "http://resource.local/api/users/f8f15c9310654c528707e87f5773ef44"
    },
    "hashtags" : {
      "href" : "http://resource.local/api/hashtags"
    },
    "files" : {
      "href" : "http://resource.local/api/files"
    },
    "users" : {
      "href" : "http://resource.local/api/users"
    },
    "events" : {
      "href" : "http://resource.local/api/events"
    }
  }
}
⁠GET /api/events

Possible events to expect:

  • UPLOAD_FILE_EVENT
  • DOWNLOAD_FILE_EVENT
  • SUBSCRIBE_EVENT
  • UNSUBSCRIBE_EVENT,
  • CREATE_HASHTAG_EVENT
$ curl --request GET -i --insecure http://resource.local/api/events -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX25hbWUiOiJqb2hubnkucHVtYUBjeWduaS5zZSIsInNjb3BlIjpbImFueSJdLCJsYXN0X25hbWUiOiJQdW1hIiwiZXhwIjoxNTgwNjU2MDg5LCJmaXJzdF9uYW1lIjoiSm9obm55IiwiYXV0aG9yaXRpZXMiOlsiUk9MRV9VU0VSIl0sImp0aSI6IjI3OTQ5ZmNlLWE1M2MtNGZjMS1hN2FiLTM5MzczMGMxOTNkMCIsImNsaWVudF9pZCI6Ik5RcWtDYnNlMnIifQ.U8GHeInjtlkXYzy9vF0NacN4ROA1jHDvn3XBATW3hng"
HTTP/1.1 200
{
  "events" : [ {
    "occurred" : "2020-02-02T22:03:45.006749Z",
    "uploadedBy" : {
      "username" : "[email protected]"
    },
    "file" : {
      "hashtags" : [ {
        "hashtag" : "thebestever"
      } ],
      "filename" : "somefancyfile.png",
      "size" : 3743,
      "uploadedTime" : "2020-02-02T22:03:45.006Z",
      "uploadedBy" : {
        "username" : "[email protected]"
      }
    },
    "type" : "UPLOAD_FILE_EVENT"
  }, {
    "occurred" : "2020-02-02T22:03:45.000850Z",
    "createdBy" : {
      "username" : "[email protected]"
    },
    "hashtag" : {
      "hashtag" : "thebestever"
    },
    "type" : "CREATE_HASHTAG_EVENT"
  } ],
  "_links" : {
    "self" : {
      "href" : "http://resource.local/api/events"
    }
  }
}        
⁠GET /api/users
$ curl --request GET -i --insecure http://resource.local/api/users -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX25hbWUiOiJhZG1pbkBjeWduaS5zZSIsInNjb3BlIjpbImFueSJdLCJsYXN0X25hbWUiOiJIZXJvIiwiZXhwIjoxNTgwNjgwNzMyLCJmaXJzdF9uYW1lIjoiU3VwZXIiLCJhdXRob3JpdGllcyI6WyJST0xFX0FETUlOIl0sImp0aSI6IjAzY2I1YWJhLTA4MGUtNDFhOS05NjVhLTdmMjIyMzI4MWFkNiIsImNsaWVudF9pZCI6Ik5RcWtDYnNlMnIifQ.4Epq4_yV1Y7P5kOio8LpQPiwda1HY9ovfQrGBHEBLec"
HTTP/1.1 200
{
  "users" : [ {
    "username" : "[email protected]",
    "subscriptions" : [ ],
    "_links" : {
      "self" : {
        "href" : "http://resource.local/api/users/37507ffde1b148b9b5fc5d19c0535b0a"
      }
    }
  }, {
    "username" : "[email protected]",
    "subscriptions" : [ ],
    "_links" : {
      "self" : {
        "href" : "http://resource.local/api/users/f8f15c9310654c528707e87f5773ef44"
      }
    }
  }, {
    "username" : "[email protected]",
    "subscriptions" : [ ],
    "_links" : {
      "self" : {
        "href" : "http://resource.local/api/users/e332e65bbab443d189671e8cceee7c28"
      }
    }
  } ],
  "_links" : {
    "self" : {
      "href" : "http://resource.local/api/users"
    }
  }
}
⁠GET /api/users/{userId}
$ curl --request GET -i --insecure http://resource.local/api/users/4441df695b0c4bceab57cfc17d85f927 -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX25hbWUiOiJqb2hubnkucHVtYUBjeWduaS5zZSIsInNjb3BlIjpbImFueSJdLCJsYXN0X25hbWUiOiJQdW1hIiwiZXhwIjoxNTgwNjU2MDg5LCJmaXJzdF9uYW1lIjoiSm9obm55IiwiYXV0aG9yaXRpZXMiOlsiUk9MRV9VU0VSIl0sImp0aSI6IjI3OTQ5ZmNlLWE1M2MtNGZjMS1hN2FiLTM5MzczMGMxOTNkMCIsImNsaWVudF9pZCI6Ik5RcWtDYnNlMnIifQ.U8GHeInjtlkXYzy9vF0NacN4ROA1jHDvn3XBATW3hng"
HTTP/1.1 200
{
  "username" : "[email protected]",
  "firstName" : "Johnny",
  "lastName" : "Puma",
  "subscriptions" : [ ],
  "_links" : {
    "self" : {
      "href" : "http://resource.local/api/users/4441df695b0c4bceab57cfc17d85f927"
    },
    "subscriptions" : {
      "href" : "http://resource.local/api/users/4441df695b0c4bceab57cfc17d85f927/subscriptions"
    }
  }
} 
⁠GET /api/users/{userId}/subscriptions
$ curl --request GET -i --insecure http://resource.local/api/users/f8f15c9310654c528707e87f5773ef44/subscriptions -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX25hbWUiOiJhZG1pbkBjeWduaS5zZSIsInNjb3BlIjpbImFueSJdLCJsYXN0X25hbWUiOiJIZXJvIiwiZXhwIjoxNTgwNjgwNzMyLCJmaXJzdF9uYW1lIjoiU3VwZXIiLCJhdXRob3JpdGllcyI6WyJST0xFX0FETUlOIl0sImp0aSI6IjAzY2I1YWJhLTA4MGUtNDFhOS05NjVhLTdmMjIyMzI4MWFkNiIsImNsaWVudF9pZCI6Ik5RcWtDYnNlMnIifQ.4Epq4_yV1Y7P5kOio8LpQPiwda1HY9ovfQrGBHEBLec"
HTTP/1.1 200
{
  "subscriptions" : [ ],
  "_links" : {
    "self" : {
      "href" : "http://resource.local/api/users/f8f15c9310654c528707e87f5773ef44/subscriptions"
    },
    "user" : {
      "href" : "http://resource.local/api/users/f8f15c9310654c528707e87f5773ef44"
    },
    "users" : {
      "href" : "http://resource.local/api/users"
    }
  }
}
⁠GET /api/users/{userId}/files

Get all available files matching the current user subscriptions.

$ curl --request GET -i --insecure http://resource.local/api/users/f8f15c9310654c528707e87f5773ef44/files -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX25hbWUiOiJhZG1pbkBjeWduaS5zZSIsInNjb3BlIjpbImFueSJdLCJsYXN0X25hbWUiOiJIZXJvIiwiZXhwIjoxNTgwNjgwNzMyLCJmaXJzdF9uYW1lIjoiU3VwZXIiLCJhdXRob3JpdGllcyI6WyJST0xFX0FETUlOIl0sImp0aSI6IjAzY2I1YWJhLTA4MGUtNDFhOS05NjVhLTdmMjIyMzI4MWFkNiIsImNsaWVudF9pZCI6Ik5RcWtDYnNlMnIifQ.4Epq4_yV1Y7P5kOio8LpQPiwda1HY9ovfQrGBHEBLec"
HTTP/1.1 200
{
  "files" : [ ],
  "_links" : {
    "self" : [ {
      "href" : "http://resource.local/api/users/f8f15c9310654c528707e87f5773ef44/files"
    }, {
      "href" : "http://resource.local/api/users/f8f15c9310654c528707e87f5773ef44/subscriptions"
    } ],
    "user" : {
      "href" : "http://resource.local/api/users/f8f15c9310654c528707e87f5773ef44"
    },
    "users" : {
      "href" : "http://resource.local/api/users"
    }
  }
}
⁠GET /api/hashtags
$ curl --request GET -i --insecure http://resource.local/api/hashtags -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX25hbWUiOiJqb2hubnkucHVtYUBjeWduaS5zZSIsInNjb3BlIjpbImFueSJdLCJsYXN0X25hbWUiOiJQdW1hIiwiZXhwIjoxNTgwNjU2MDg5LCJmaXJzdF9uYW1lIjoiSm9obm55IiwiYXV0aG9yaXRpZXMiOlsiUk9MRV9VU0VSIl0sImp0aSI6IjI3OTQ5ZmNlLWE1M2MtNGZjMS1hN2FiLTM5MzczMGMxOTNkMCIsImNsaWVudF9pZCI6Ik5RcWtDYnNlMnIifQ.U8GHeInjtlkXYzy9vF0NacN4ROA1jHDvn3XBATW3hng"
HTTP/1.1 200
{
  "hashtags" : [ {
    "hashtag" : "crosscountryskiing",
    "_links" : {
      "self" : {
        "href" : "http://resource.local/api/hashtags/crosscountryskiing"
      }
    }
  }, {
    "hashtag" : "fanzy",
    "_links" : {
      "self" : {
        "href" : "http://resource.local/api/hashtags/fanzy"
      }
    }
  }, {
    "hashtag" : "cool",
    "_links" : {
      "self" : {
        "href" : "http://resource.local/api/hashtags/cool"
      }
    }
  }, {
    "hashtag" : "bestimageever",
    "_links" : {
      "self" : {
        "href" : "http://resource.local/api/hashtags/bestimageever"
      }
    }
  }, {
    "hashtag" : "vasaloppet",
    "_links" : {
      "self" : {
        "href" : "http://resource.local/api/hashtags/vasaloppet"
      }
    }
  } ],
  "_links" : {
    "self" : {
      "href" : "http://resource.local/api/hashtags"
    }
  }
}  
⁠GET /api/hashtags/{hashtag}
$ curl --request GET -i --insecure http://resource.local/api/hashtags/crosscountryskiing -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX25hbWUiOiJqb2hubnkucHVtYUBjeWduaS5zZSIsInNjb3BlIjpbImFueSJdLCJsYXN0X25hbWUiOiJQdW1hIiwiZXhwIjoxNTgwNjU2MDg5LCJmaXJzdF9uYW1lIjoiSm9obm55IiwiYXV0aG9yaXRpZXMiOlsiUk9MRV9VU0VSIl0sImp0aSI6IjI3OTQ5ZmNlLWE1M2MtNGZjMS1hN2FiLTM5MzczMGMxOTNkMCIsImNsaWVudF9pZCI6Ik5RcWtDYnNlMnIifQ.U8GHeInjtlkXYzy9vF0NacN4ROA1jHDvn3XBATW3hng"
HTTP/1.1 200
{
  "hashtag" : "crosscountryskiing",
  "_links" : {
    "self" : {
      "href" : "http://resource.local/api/hashtags/crosscountryskiing"
    },
    "files" : {
      "href" : "http://resource.local/api/hashtags/crosscountryskiing/files"
    }
  }
}  
⁠POST /api/hashtags/{hashtag}/subscribe
$ curl --request POST -i --insecure http://resource.local/api/hashtags/crosscountryskiing/subscribe -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX25hbWUiOiJhZG1pbkBjeWduaS5zZSIsInNjb3BlIjpbImFueSJdLCJsYXN0X25hbWUiOiJIZXJvIiwiZXhwIjoxNTgwNjgwNzMyLCJmaXJzdF9uYW1lIjoiU3VwZXIiLCJhdXRob3JpdGllcyI6WyJST0xFX0FETUlOIl0sImp0aSI6IjAzY2I1YWJhLTA4MGUtNDFhOS05NjVhLTdmMjIyMzI4MWFkNiIsImNsaWVudF9pZCI6Ik5RcWtDYnNlMnIifQ.4Epq4_yV1Y7P5kOio8LpQPiwda1HY9ovfQrGBHEBLec"
$ curl --request POST -i --insecure http://resource.local/api/hashtags/vasaloppet/subscribe -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX25hbWUiOiJhZG1pbkBjeWduaS5zZSIsInNjb3BlIjpbImFueSJdLCJsYXN0X25hbWUiOiJIZXJvIiwiZXhwIjoxNTgwNjgxMzA5LCJmaXJzdF9uYW1lIjoiU3VwZXIiLCJhdXRob3JpdGllcyI6WyJST0xFX0FETUlOIl0sImp0aSI6IjJhODA4MTlkLTMzNzAtNDc5Ny1iZWFiLTg2MDA4ZmI3MzUyYiIsImNsaWVudF9pZCI6Ik5RcWtDYnNlMnIifQ.iKZ9CUq5l0jFdlHaJMIGZb1aDsNcpfoek1tGWKjY8G0"
HTTP/1.1 200
{
  "username" : "[email protected]",
  "firstName" : "Super",
  "lastName" : "Hero",
  "subscriptions" : [ {
    "hashtag" : "crosscountryskiing",
    "_links" : {
      "self" : {
        "href" : "http://resource.local/api/hashtags/crosscountryskiing"
      }
    }
  }, {
    "hashtag" : "vasaloppet",
    "_links" : {
      "self" : {
        "href" : "http://resource.local/api/hashtags/vasaloppet"
      }
    }
  } ],
  "_links" : {
    "self" : {
      "href" : "http://resource.local/api/users/f8f15c9310654c528707e87f5773ef44"
    }
  }
}
⁠POST /api/hashtags/{hashtag}/unsubscribe
$ curl --request POST -i --insecure http://resource.local/api/hashtags/vasaloppet/unsubscribe -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX25hbWUiOiJhZG1pbkBjeWduaS5zZSIsInNjb3BlIjpbImFueSJdLCJsYXN0X25hbWUiOiJIZXJvIiwiZXhwIjoxNTgwNjgxMzA5LCJmaXJzdF9uYW1lIjoiU3VwZXIiLCJhdXRob3JpdGllcyI6WyJST0xFX0FETUlOIl0sImp0aSI6IjJhODA4MTlkLTMzNzAtNDc5Ny1iZWFiLTg2MDA4ZmI3MzUyYiIsImNsaWVudF9pZCI6Ik5RcWtDYnNlMnIifQ.iKZ9CUq5l0jFdlHaJMIGZb1aDsNcpfoek1tGWKjY8G0"
HTTP/1.1 200
{
  "username" : "[email protected]",
  "firstName" : "Super",
  "lastName" : "Hero",
  "subscriptions" : [ {
    "hashtag" : "crosscountryskiing",
    "_links" : {
      "self" : {
        "href" : "http://resource.local/api/hashtags/crosscountryskiing"
      }
    }
  } ],
  "_links" : {
    "self" : {
      "href" : "http://resource.local/api/users/f8f15c9310654c528707e87f5773ef44"
    }
  }
}
⁠GET /api/hashtags/{hashtag}/files
$ curl --request GET -i --insecure http://resource.local/api/hashtags/crosscountryskiing/files -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX25hbWUiOiJqb2hubnkucHVtYUBjeWduaS5zZSIsInNjb3BlIjpbImFueSJdLCJsYXN0X25hbWUiOiJQdW1hIiwiZXhwIjoxNTgwNjU4MzM4LCJmaXJzdF9uYW1lIjoiSm9obm55IiwiYXV0aG9yaXRpZXMiOlsiUk9MRV9VU0VSIl0sImp0aSI6ImY4ZjE2NzIyLWU0NDMtNGE3Ny04ZTEzLTE3Yzc3YjM5MzI2MSIsImNsaWVudF9pZCI6Ik5RcWtDYnNlMnIifQ.V7DfHLnx_UJnHCcl3xGdaeNrUrTuvXVVQ3obBGBCEbM"
HTTP/1.1 200
{
  "files" : [ {
    "filename" : "somefancyfile.png",
    "hashtags" : [ "crosscountryskiing" ],
    "size" : 3743,
    "uploadedTime" : "2020-02-02T15:35:33.734922Z",
    "uploadedBy" : "[email protected]",
    "_links" : {
      "self" : {
        "href" : "http://resource.local/api/files/ced23473d4bf48519b94811141a3a22b"
      }
    }
  } ],
  "_links" : {
    "self" : {
      "href" : "http://resource.local/api/hashtags/crosscountryskiing/files"
    },
    "hashtag" : {
      "href" : "http://resource.local/api/hashtags/crosscountryskiing"
    }
  }
}               
⁠GET /api/files
$ curl --request GET -i --insecure http://resource.local/api/files -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX25hbWUiOiJhZG1pbkBjeWduaS5zZSIsInNjb3BlIjpbImFueSJdLCJsYXN0X25hbWUiOiJIZXJvIiwiZXhwIjoxNTgwNjgxMzA5LCJmaXJzdF9uYW1lIjoiU3VwZXIiLCJhdXRob3JpdGllcyI6WyJST0xFX0FETUlOIl0sImp0aSI6IjJhODA4MTlkLTMzNzAtNDc5Ny1iZWFiLTg2MDA4ZmI3MzUyYiIsImNsaWVudF9pZCI6Ik5RcWtDYnNlMnIifQ.iKZ9CUq5l0jFdlHaJMIGZb1aDsNcpfoek1tGWKjY8G0"
HTTP/1.1 200
{
  "files" : [ {
    "filename" : "somefancyfile.png",
    "hashtags" : [ "crosscountryskiing" ],
    "size" : 3743,
    "uploadedTime" : "2020-02-02T21:57:47.465951Z",
    "uploadedBy" : "[email protected]",
    "_links" : {
      "self" : {
        "href" : "http://resource.local/api/files/39025c08a3c14021a6cc8526f8e12809"
      }
    }
  } ],
  "_links" : {
    "self" : {
      "href" : "http://resource.local/api/files"
    }
  }
}
⁠POST /api/files
$ curl -F '[email protected]' -F 'hashtags=[{"hashtag":"crosscountryskiing"}]' http://resource.local/api/files -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX25hbWUiOiJhZG1pbkBjeWduaS5zZSIsInNjb3BlIjpbImFueSJdLCJsYXN0X25hbWUiOiJIZXJvIiwiZXhwIjoxNTgwNjgxMzA5LCJmaXJzdF9uYW1lIjoiU3VwZXIiLCJhdXRob3JpdGllcyI6WyJST0xFX0FETUlOIl0sImp0aSI6IjJhODA4MTlkLTMzNzAtNDc5Ny1iZWFiLTg2MDA4ZmI3MzUyYiIsImNsaWVudF9pZCI6Ik5RcWtDYnNlMnIifQ.iKZ9CUq5l0jFdlHaJMIGZb1aDsNcpfoek1tGWKjY8G0"
HTTP/1.1 201
{
  "filename" : "somefancyfile.png",
  "hashtags" : [ "crosscountryskiing" ],
  "size" : 3743,
  "uploadedTime" : "2020-02-02T15:35:33.734922Z",
  "uploadedBy" : "[email protected]",
  "_links" : {
    "self" : {
      "href" : "http://resource.local/api/files/ced23473d4bf48519b94811141a3a22b"
    },
    "download" : {
      "href" : "http://resource.local/api/files/ced23473d4bf48519b94811141a3a22b/download"
    },
    "hashtags" : {
      "href" : "http://resource.local/api/files/ced23473d4bf48519b94811141a3a22b/hashtags"
    },
    "uploadedBy" : {
      "href" : "http://resource.local/api/users/1196de116ae14436943f1acbe55beb20"
    }
  }
} 
⁠GET /api/files/{fileId}/hashtags
$ curl --request GET -i --insecure http://resource.local/api/files/ced23473d4bf48519b94811141a3a22b/hashtags -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX25hbWUiOiJqb2hubnkucHVtYUBjeWduaS5zZSIsInNjb3BlIjpbImFueSJdLCJsYXN0X25hbWUiOiJQdW1hIiwiZXhwIjoxNTgwNjU4MzM4LCJmaXJzdF9uYW1lIjoiSm9obm55IiwiYXV0aG9yaXRpZXMiOlsiUk9MRV9VU0VSIl0sImp0aSI6ImY4ZjE2NzIyLWU0NDMtNGE3Ny04ZTEzLTE3Yzc3YjM5MzI2MSIsImNsaWVudF9pZCI6Ik5RcWtDYnNlMnIifQ.V7DfHLnx_UJnHCcl3xGdaeNrUrTuvXVVQ3obBGBCEbM"
HTTP/1.1 200
{
  "hashtags" : [ {
    "hashtag" : "crosscountryskiing",
    "_links" : {
      "self" : {
        "href" : "http://resource.local/api/hashtags/crosscountryskiing"
      }
    }
  } ]
} 
⁠GET /api/files/{fileId}/download
$ curl -i --insecure http://resource.local/api/files/e6ca1e14b9ab4c23a129fc768f991ba2/download -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX25hbWUiOiJqb2hubnkucHVtYUBjeWduaS5zZSIsInNjb3BlIjpbImFueSJdLCJsYXN0X25hbWUiOiJQdW1hIiwiZXhwIjoxNTgwNjU4MzM4LCJmaXJzdF9uYW1lIjoiSm9obm55IiwiYXV0aG9yaXRpZXMiOlsiUk9MRV9VU0VSIl0sImp0aSI6ImY4ZjE2NzIyLWU0NDMtNGE3Ny04ZTEzLTE3Yzc3YjM5MzI2MSIsImNsaWVudF9pZCI6Ik5RcWtDYnNlMnIifQ.V7DfHLnx_UJnHCcl3xGdaeNrUrTuvXVVQ3obBGBCEbM"
HTTP/1.1 200
Content-Disposition: attachment; filename="somefancyfile.png"
Content-Length: 3743
... 

Tag summary

Content type

Image

Digest

Size

268.8 MB

Last updated

over 6 years ago

docker pull cygni/oauth2-resource-server