code: func newPostLabelHandler(s plat.LabelService) http.HandlerFunc {
  	return func(w http.ResponseWriter, r *http.Request) {
  		ctx := r.Context()
  
  		req, err := decodePostLabelRequest(ctx, r)
  		if err != nil {
  			EncodeError(ctx, err, w)
  			return
  		}
  
  		if err := req.Label.Validate(); err != nil {
  			EncodeError(ctx, err, w)
  			return
  		}
  
  		if err := s.CreateLabel(ctx, &req.Label); err != nil {
  			EncodeError(ctx, err, w)
  			return
  		}
  
  		if err := encodeResponse(ctx, w, http.StatusCreated, newLabelResponse(&req.Label)); err != nil {
  			// TODO: this can potentially result in calling w.WriteHeader multiple times, we need to pass a logger in here
  			// some how. This isn't as simple as simply passing in a logger to this function since the time that this function
  			// is called is distinct from the time that a potential logger is set.
  			EncodeError(ctx, err, w)
  			return
  		}
  	}
  }
docs: // newPostLabelHandler returns a handler func for a POST to /labels endpoints