API guidelines (final draft)