code: func (op *Operator) AreaJoin(areaID string, addresses []string, q *WriteOptions) ([]*AreaJoinResponse, *WriteMeta, error) {
  	r := op.c.newRequest("PUT", "/v1/operator/area/"+areaID+"/join")
  	r.setWriteOptions(q)
  	r.obj = addresses
  	rtt, resp, err := requireOK(op.c.doRequest(r))
  	if err != nil {
  		return nil, nil, err
  	}
  	defer resp.Body.Close()
  
  	wm := &WriteMeta{}
  	wm.RequestTime = rtt
  
  	var out []*AreaJoinResponse
  	if err := decodeBody(resp, &out); err != nil {
  		return nil, nil, err
  	}
  	return out, wm, nil
  }
docs: // AreaJoin attempts to join the given set of join addresses to the given
  // network area. See the Area structure for details about join addresses.