code: func (c *Client) CreateOrganization(ctx context.Context, o *platform.Organization) error {
  	op := getOp(platform.OpCreateOrganization)
  	return c.db.Update(func(tx *bolt.Tx) error {
  		unique := c.uniqueOrganizationName(ctx, tx, o)
  		if !unique {
  			return &platform.Error{
  				Code: platform.EConflict,
  				Op:   op,
  				Msg:  fmt.Sprintf("organization with name %s already exists", o.Name),
  			}
  		}
  
  		o.ID = c.IDGenerator.ID()
  		if err := c.appendOrganizationEventToLog(ctx, tx, o.ID, organizationCreatedEvent); err != nil {
  			return &platform.Error{
  				Err: err,
  				Op:  op,
  			}
  		}
  
  		if err := c.putOrganization(ctx, tx, o); err != nil {
  			return &platform.Error{
  				Err: err,
  				Op:  op,
  			}
  		}
  		return nil
  	})
  }
docs: // CreateOrganization creates a platform organization and sets b.ID.