anchor.diff:      + user (object)
           + data(User Resource Identifier)
   
  +## Task Resource Identifier
  ++ id: `1` (string, required)
  ++ type: `task` (string, required)
  +
   ## Task Response (object)
   + data(Task Resource)
   + include JSON API Version
  
positive.code: 
  + Response 201 (application/vnd.api+json; charset=utf-8)
  
      + Attributes (User Role Response)
  
  + Response 422 (application/vnd.api+json; charset=utf-8)
  
      + Attributes (Unprocessable Entity Response)
  
  ### List all user roles [GET]
  
  + Request
  
      + Headers
  
              Accept: application/vnd.api+json
  
  + Response 200 (application/vnd.api+json; charset=utf-8)
  
      + Attributes (User Roles Response)
  
  ## User Role [/user-roles/{id}]
  
  ### Retrieve a user role [GET]
  
  + Parameters
  
      + id (number) - Id of a user role.
  
  + Request
  
      + Headers
  
              Accept: application/vnd.api+json
  
  + Response 200 (application/vnd.api+json; charset=utf-8)
  
      + Attributes (User Role Response)
  
  + Response 404 (application/vnd.api+json; charset=utf-8)
  
      + Attributes (Record Not Found Response)
  
  ### Delete a user role [DELETE]
  
  + Parameters
  
      + id (number) - Id of a user role.
  
  + Request
  
      + Headers
  
              Accept: application/vnd.api+json
              Authorization: Bearer <token>
  
  + Response 204 (application/vnd.api+json; charset=utf-8)
  
      + Attributes (No Content Response)
  
  + Response 401 (application/vnd.api+json; charset=utf-8)
  
      + Attributes (JSON Web Token Invalid Response)
  
  + Response 403 (application/vnd.api+json; charset=utf-8)
  
      + Attributes (Forbidden Response)
  
  + Response 404 (application/vnd.api+json; charset=utf-8)
  
      + Attributes (Record Not Found Response)
  
  # Group User Skills
  
  This resource identifies a relationship between a User and a Skill. For example, the skill of "Elixir" may belong to a given user.
  
  ## User Skills [/user-skills]
  
  ### Create a User Skill [POST /user-skills]
  
  + Request
  
      + Headers
  
              Accept: application/vnd.api+json
              Authorization: Bearer <token>
  
  + Response 201 (application/vnd.api+json; charset=utf-8)
  
      + Attributes (User Skill Response)
  
  + Response 401 (application/vnd.api+json; charset=utf-8)
  
      + Attributes (JSON Web Token Invalid Response)
  
  + Response 422 (application/vnd.api+json; charset=utf-8)
  
      + Attributes (Unprocessable Entity Response)
  
  ### List all user skills [GET]
  
  + Request
  
      + Headers
  
              Accept: application/vnd.api+json
  
  + Response 200 (application/vnd.api+json; charset=utf-8)
  
      + Attributes (User Skills Response)
  
  ### Filter user skills by id [GET /user-skills{?filter[id]}]
  
  + Parameters
  
      + `filter[id]`: `1,2,3` (string, required) - Comma separated string of `ids` to filter by.
  
          Technically, the parameter is `filter: { id: '1,2,3' }`, which ends up being serialized into `filter[id]`. However, syntax constraints do not allow us to define it in the documentation this way.
  
  + Request
  
      + Headers
  
              Accept: application/vnd.api+json
  
  + Response 200 (application/vnd.api+json; charset=utf-8)
  
      + Attributes (User Skills Response)
  
  ## User Skill [/user-skills/{id}]
  
  ### Retrieve a user skill [GET]
  
  + Parameters
  
      + id (number) - Id of a user skill.
  
  + Request
  
      + Headers
  
              Accept: application/vnd.api+json
  
  + Response 200 (application/vnd.api+json; charset=utf-8)
  
      + Attributes (User Skill Response)
  
  
  ### Delete a user skill [DELETE]
  
  + Parameters
  
      + id (number) - Id of a user skill.
  
  + Request
  
  
negative.code: 
  ### Exchange email and password for token [POST]
  
  + Request
  
      + Attributes
  
          + username: `me@testuser.org` (string, required) - The user's email address.
          + password: `password` (string, required)
  
      + Headers
  
              Content-Type: application/vnd.api+json
  
  + Response 201 (application/vnd.api+json; charset=utf-8)
  
      + Attributes (JSON Web Token Valid Response)
  
  + Response 401 (application/vnd.api+json; charset=utf-8)
  
      + Attributes (JSON Web Token No User With Email Response)
  
  + Response 401 (application/vnd.api+json; charset=utf-8)
  
      + Attributes (JSON Web Token Invalid Password Response)
  
  ## JSON Web Token Refresh [/token/refresh]
  
  ### Refresh the token [POST]
  
  + Request
  
      + Attributes
  
          + token: `eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJVc2VyOjEiLCJleHAiOjE0NzY3NTQ2MTcsImlhdCI6MTQ3NDE2MjYxNywiaXNzIjoiQ29kZUNvcnBzIiwianRpIjoiMDY2ODQ0OWYtNWY5OC00ODVkLWI4NTktNjRhZDhmZDU3NWQ4IiwicGVtIjp7fSwic3ViIjoiVXNlcjoxIiwidHlwIjoidG9rZW4ifQ.Y80alu1UEmk4uxGgA7ORVdS8ikuUJFxCozyK6S9UeaLW392Vhti4d1Y1IXivWA_j9TKjADhqTQnMihbCzUiLsA` (string, required) - The JSON Web Token provided in the create step.
  
      + Headers
  
              Content-Type: application/vnd.api+json
  
  + Response 201 (application/vnd.api+json; charset=utf-8)
  
      + Attributes (JSON Web Token Valid Response)
  
  + Response 401 (application/vnd.api+json; charset=utf-8)
  
      + Attributes (JSON Web Token Expired Response)
  
  # Group Categories
  
  This endpoint is for creating and returning the categories available for projects and users.
  
  The Category resource allows us to categorize projects (Project Category), as well as identify a user's interests (User Category). The categories of "Society", "Technology" or "Government", for example, could all be used to categorize projects or match to a user's given interests.
  
  ## Categories [/categories]
  
  ### Create a category [POST]
  
  + Request
  
      + Headers
  
              Accept: application/vnd.api+json
              Authorization: Bearer {token}
  
  + Response 201 (application/vnd.api+json; charset=utf-8)
  
      + Attributes (Category Response)
  
  + Response 422 (application/vnd.api+json; charset=utf-8)
  
      + Attributes (Unprocessable Entity Response)
  
  ### List all categories [GET]
  
  + Request
  
      + Headers
  
              Accept: application/vnd.api+json
  
  + Response 200 (application/vnd.api+json; charset=utf-8)
  
      + Attributes (Categories Response)
  
  ## Category [/categories/{id}]
  
  ### Retrieve a category [GET]
  
  + Request
  
      + Headers
  
              Accept: application/vnd.api+json
  
  + Response 200 (application/vnd.api+json; charset=utf-8)
  
      + Attributes (Category Response)
  
  + Response 404 (application/vnd.api+json; charset=utf-8)
  
      + Attributes (Record Not Found Response)
  
  ### Update a category [PATCH]
  
  + Request
  
      + Headers
  
              Accept: application/vnd.api+json
              Authorization: Bearer {token}
  
  + Response 201 (application/vnd.api+json; charset=utf-8)
  
      + Attributes (Category Response)
  
  + Response 403 (application/vnd.api+json; charset=utf-8)
  
      + Attributes (Forbidden Response)
  
  + Response 404 (application/vnd.api+json; charset=utf-8)
  
      + Attributes (Record Not Found Response)
  
  # Group Comments
  
  This endpoint is for creating and returning comments.
  
  ## Comments [/comments]
  
  You can list all comments or retrieve individual comments, as well as create and update comments.
  
  ### Create a comment [POST]
  
  + Request
  
      + Headers
  
              Accept: application/vnd.api+json
              Authorization: Bearer {token}
  
      + Attributes (Comment Create Request)
  
  + Response 201 (application/vnd.api+json; charset=utf-8)
  
      + Attributes (Comment Response)
  
  + Response 422 (application/vnd.api+json; charset=utf-8)
  
      + Attributes (Unprocessable Entity Response)
  
  ### Filter comments by list of ids [GET /comments{?filter[id]}]
  
  + Request
  
      + Attributes
  
          + `filter[id]`: `1,2,3` (string, required) - Comma separated string of `ids` to filter by.
  
      + Headers
  
              Accept: application/vnd.api+json
  
  + Response 200 (application/vnd.api+json; charset=utf-8)
  
      + Attributes (Comments Response)
  
  ## Comment [/comments/{id}]
  
  + Parameters
  
      + id (number, required)
  
  ### Update a comment [PATCH]
  
  + Request
  
      + Headers
  
              Accept: application/vnd.api+json
              Authorization: Bearer {token}
  
      + Attributes (Comment Update Request)
  
  + Response 201 (application/vnd.api+json; charset=utf-8)
  
      + Attributes (Comment Response)
  
  + Response 403 (application/vnd.api+json; charset=utf-8)
  
      + Attributes (Forbidden Response)
  
  + Response 422 (application/vnd.api+json; charset=utf-8)
  
      + Attributes (Unprocessable Entity Response)
  
  # Group Donation Goals
  
  This resource describes one of any number of donation goals a project might have. A project cannot create a donation goal until they have started accepting payment with Stripe.
  
  ## Donation Goals [/donation-goals]
  
  ### Create a donation goal [POST]
  
  To create a donation goal the user must be a site admin or the owner of the referenced project.
  
  + Request
  
      + Headers
  
              Accept: application/vnd.api+json
              Authorization: Bearer {token}
  
      + Attributes (Donation Goal Create Request)
  
  + Response 201 (application/vnd.api+json; charset=utf-8)
  
      + Attributes (Donation Goal Response)
  
  + Response 401 (application/vnd.api+json; charset=utf-8)
  
      + Attributes (JSON Web Token Invalid Response)
  
  + Response 403 (application/vnd.api+json; charset=utf-8)
  
      + Attributes (Forbidden Response)
  
  + Response 404 (application/vnd.api+json; charset=utf-8)
  
      + Attributes (Record Not Found Response)
  
  + Response 422 (application/vnd.api+json; charset=utf-8)
  
      + Attributes (Unprocessable Entity Response)
  
  ### List all donation goals [GET]
  
  + Request
  
    + Headers
  
              Accept: application/vnd.api+json
  
  + Response 200 (application/vnd.api+json; charset=utf-8)
  
      + Attributes (Donation Goals Response)
  
  ### Filter by id [GET /donation-goals{?filter[id]}]
  
  + Request
  
      + Attributes
  
          + `filter[id]`: `1,2,3` (string, required) - Comma separated string of `ids` to filter by.
  
      + Headers
  
              Accept: application/vnd.api+json
  
  + Response 200 (application/vnd.api+json; charset=utf-8)
  
      + Attributes (Donation Goals Response)
  
  + Response 404 (application/vnd.api+json; charset=utf-8)
  
      + Attributes (Record Not Found Response)
  
  ## Donation Goal [/donation-goals/{id}]
  
  + Parameters
  
      + id (number, required)
  
  ### Retrieve a donation goal [GET]
  
  + Request
  
      + Headers
  
              Accept: application/vnd.api+json
  
  + Response 200 (application/vnd.api+json; charset=utf-8)
  
      + Attributes (Donation Goal Response)
  
  + Response 404 (application/vnd.api+json; charset=utf-8)
  
      + Attributes (Record Not Found Response)
  
  ### Update a donation goal [PATCH]
  
  To update a donation goal the user must be a site admin or the owner of the referenced project.
  
  + Request
  
      + Headers
  
              Accept: application/vnd.api+json
              Authorization: Bearer {token}
  
      + Attributes (Donation Goal Update Request)
  
  + Response 200 (application/vnd.api+json; charset=utf-8)
  
      + Attributes (Donation Goal Response)
  
  + Response 401 (application/vnd.api+json; charset=utf-8)
  
      + Attributes (JSON Web Token Invalid Response)
  
  + Response 403 (application/vnd.api+json; charset=utf-8)
  
      + Attributes (Forbidden Response)
  
  + Response 404 (application/vnd.api+json; charset=utf-8)
  
      + Attributes (Record Not Found Response)
  
  + Response 422 (application/vnd.api+json; charset=utf-8)
  
      + Attributes (Unprocessable Entity Response)
  
  ### Delete a donation goal [DELETE]
  
  To delete a donation goal the user must be a site admin or the owner of the referenced project.
  
  + Request
  
      + Headers
  
              Accept: application/vnd.api+json
              Authorization: Bearer {token}
  
  + Response 204 (application/vnd.api+json; charset=utf-8)
  
      + Attributes (No Content Response)
  
  + Response 401 (application/vnd.api+json; charset=utf-8)
  
      + Attributes (JSON Web Token Invalid Response)
  
  + Response 403 (application/vnd.api+json; charset=utf-8)
  
      + Attributes (Forbidden Response)
  
  + Response 404 (application/vnd.api+json; charset=utf-8)
  
      + Attributes (Record Not Found Response)
  
  # Group Organization Memberships
  
  ## Organization Memberships [/organization-memberships]
  
  ### Create an organization membership [POST]
  
  + Request
  
      + Attributes (Organization Membership Create Request)
  
      + Headers
  
              Accept: application/vnd.api+json
              Authorization: Bearer {token}
  
  + Response 201 (application/vnd.api+json; charset=utf-8)
  
      + Attributes (Organization Membership Response)
  
  + Response 401 (application/vnd.api+json; charset=utf-8)
  
      + Attributes (JSON Web Token Invalid Response)
  
  + Response 403 (application/vnd.api+json; charset=utf-8)
  
      + Attributes (Forbidden Response)
  
  ### List all organization memberships for an organization [GET /organizations/{organization_id}/memberships]
  
  + Parameters
  
      + organization_id: 1 (number, required) - Organization id, uniquely identifying a organization
  
  + Request
  
      + Headers
  
              Accept: application/vnd.api+json
  
  + Response 200 (application/vnd.api+json; charset=utf-8)
  
      + Attributes (Organization Memberships Response)
  
  ### Filter by id [GET /organization-memberships{?filter[id]}]
  
  + Request
  
      + Attributes
  
          + `filter[id]`: `1,2,3` (string, required) - Comma separated string of `ids` to filter by.
  
      + Headers
  
              Accept: application/vnd.api+json
  
  + Response 200 (application/vnd.api+json; charset=utf-8)
  
      + Attributes (Organization Memberships Response)
  
  ## Organization Membership [/organization-memberships/{id}]
  
  + Parameters
  
      + id (number, required)
  
  ### Retrieve an organization membership [GET]
  
  + Request
  
      + Headers
  
              Accept: application/vnd.api+json
  
  + Response 200 (application/vnd.api+json; charset=utf-8)
  
      + Attributes (Organization Membership Response)
  
  ### Update an organization membership [PATCH]
  
  + Request
  
      + Attributes (Organization Membership Update Request)
  
      + Headers
  
  