<table>
  <thead>
  <tr>
    <th>{{:: ts('Entity') }}</th>
    <th>{{:: ts('Action(s)') }}</th>
    <th>{{:: ts('Filter(s)') }}</th>
    <th>{{:: ts('Field(s)') }}</th>
  </tr>
  </thead>
  <tbody>
  <tr ng-repeat="api in perm.api"
      ng-class-even="'even-row even'"
      ng-class-odd="'odd-row odd'">
    <td>
      <em ng-show="api.entity == '*'">{{:: ts('Any') }}</em>
      <code ng-hide="api.entity == '*'">{{api.entity}}</code>
    </td>
    <td>
      <div ng-switch="isString(api.actions)">
          <span ng-switch-when="true">
            <em ng-show="api.actions == '*'">{{:: ts('Any') }}</em>
            <code ng-hide="api.actions == '*'">{{api.actions}}</code>
          </span>
          <span ng-switch-default="">
            <span ng-repeat="action in api.actions"><code>{{action}}</code><span ng-show="!$last">, </span></span>
          </span>
      </div>
    </td>
    <td>
      <em ng-show="!hasRequiredFilters(api)">{{:: ts('Any') }}</em>
      <div ng-repeat="(field,value) in api.required"><code>{{field}}</code> = "<code>{{value}}</code>"<span ng-show="!$last">, </span></div>
    </td>
    <td>
      <em ng-show="api.fields == '*'">{{:: ts('Any') }}</em>
      <span ng-hide="api.fields == '*'" ng-repeat="field in api.fields"><code>{{field}}</code><span ng-show="!$last">, </span></span>
    </td>
  </tr>
  </tbody>
</table>
<div class="crmCxn-footer">
  <em ng-bind-html="ts('For in-depth details about entities and actions, see the <a href=\'%1\' target=\'%2\'>API Explorer</a>.', {1: apiExplorerUrl, 2: '_blank'})"></em>
</div>
