func serviceCreate(w http.ResponseWriter, r *http.Request, t auth.Token) (err error) {
	s := service.Service{
		Name:     InputValue(r, "id"),
		Username: InputValue(r, "username"),
		Endpoint: map[string]string{"production": InputValue(r, "endpoint")},
		Password: InputValue(r, "password"),
	}
	team := InputValue(r, "team")
	if team == "" {
		team, err = permission.TeamForPermission(t, permission.PermServiceCreate)
		if err == permission.ErrTooManyTeams {
			return &errors.HTTP{
				Code:    http.StatusBadRequest,
				Message: "You must provide a team responsible for this service in the manifest file.",
			}
		}
		if err != nil {
			return err
		}
	}
	s.OwnerTeams = []string{team}
	allowed := permission.Check(t, permission.PermServiceCreate,
		permission.Context(permTypes.CtxTeam, s.OwnerTeams[0]),
	)
	if !allowed {
		return permission.ErrUnauthorized
	}
	delete(r.Form, "password")
	evt, err := event.New(&event.Opts{
		Target:     serviceTarget(s.Name),
		Kind:       permission.PermServiceCreate,
		Owner:      t,
		CustomData: event.FormToCustomData(InputFields(r)),
		Allowed:    event.Allowed(permission.PermServiceReadEvents, contextsForServiceProvision(&s)...),
	})
	if err != nil {
		return err
	}
	defer func() { evt.Done(err) }()
	err = service.Create(s)
	if err != nil {
		if err == service.ErrServiceAlreadyExists {
			return &errors.HTTP{Code: http.StatusConflict, Message: err.Error()}
		}
		return err
	}
	w.WriteHeader(http.StatusCreated)
	fmt.Fprint(w, "success")
	return nil
}
func serviceCreate(w http.ResponseWriter, r *http.Request, t auth.Token) (err error) {
	s := service.Service{
		Name:     InputValue(r, "id"),
		Username: InputValue(r, "username"),
		Endpoint: map[string]string{"production": InputValue(r, "endpoint")},
		Password: InputValue(r, "password"),
	}
	team := InputValue(r, "team")
	if team == "" {
		team, err = permission.TeamForPermission(t, permission.PermServiceCreate)
		if err == permission.ErrTooManyTeams {
			return &errors.HTTP{
				Code:    http.StatusBadRequest,
				Message: "You must provide a team responsible for this service in the manifest file.",
			}
		}
		if err != nil {
			return err
		}
	}
	s.OwnerTeams = []string{team}
	allowed := permission.Check(t, permission.PermServiceCreate,
		permission.Context(permTypes.CtxTeam, s.OwnerTeams[0]),
	)
	if !allowed {
		return permission.ErrUnauthorized
	}
	delete(r.Form, "password")
	evt, err := event.New(&event.Opts{
		Target:     serviceTarget(s.Name),
		Kind:       permission.PermServiceCreate,
		Owner:      t,
		CustomData: event.FormToCustomData(InputFields(r)),
		Allowed:    event.Allowed(permission.PermServiceReadEvents, contextsForServiceProvision(&s)...),
	})
	if err != nil {
		return err
	}
	defer func() { evt.Done(err) }()
	err = service.Create(s)
	if err != nil {
		if err == service.ErrServiceAlreadyExists {
			return &errors.HTTP{Code: http.StatusConflict, Message: err.Error()}
		}
		return err
	}
	w.WriteHeader(http.StatusCreated)
	fmt.Fprint(w, "success")
	return nil
}
func serviceCreate ( w http . ResponseWriter , r * http . Request , t auth . Token ) ( err error ) { s := service . Service { Name : InputValue ( r , " " ) , Username : InputValue ( r , " " ) , Endpoint : map [ string ] string { " " : InputValue ( r , " " ) } , Password : InputValue ( r , " " ) , } team := InputValue ( r , " " ) if team == " " { team , err = permission . TeamForPermission ( t , permission . PermServiceCreate ) if err == permission . ErrTooManyTeams { return & errors . HTTP { Code : http . StatusBadRequest , Message : " " , } } if err != nil { return err } } s . OwnerTeams = [ ] string { team } allowed := permission . Check ( t , permission . PermServiceCreate , permission . Context ( permTypes . CtxTeam , s . OwnerTeams [ 0 ] ) , ) if ! allowed { return permission . ErrUnauthorized } delete ( r . Form , " " ) evt , err := event . New ( & event . Opts { Target : serviceTarget ( s . Name ) , Kind : permission . PermServiceCreate , Owner : t , CustomData : event . FormToCustomData ( InputFields ( r ) ) , Allowed : event . Allowed ( permission . PermServiceReadEvents , contextsForServiceProvision ( & s ) ... ) , } ) if err != nil { return err } defer func ( ) { evt . Done ( err ) } ( ) err = service . Create ( s ) if err != nil { if err == service . ErrServiceAlreadyExists { return & errors . HTTP { Code : http . StatusConflict , Message : err . Error ( ) } } return err } w . WriteHeader ( http . StatusCreated ) fmt . Fprint ( w , " " ) return nil }
// title: service create
// path: /services
// method: POST
// consume: application/x-www-form-urlencoded
// responses:
//   201: Service created
//   400: Invalid data
//   401: Unauthorized
//   409: Service already exists
title : service create path : / services method : POST consume : application / x - www - form - urlencoded responses : 201 : Service created 400 : Invalid data 401 : Unauthorized 409 : Service already exists