{
  "module": "diddifood",
  "display_name": "DiddiFood",
  "version": "admin.v1",
  "resources": [
    {
      "name": "restaurants",
      "label": "Restaurants",
      "permissions": [
        "read",
        "create",
        "update",
        "approve",
        "reject"
      ],
      "supports_list": true,
      "supports_detail": true,
      "supports_history": false
    },
    {
      "name": "catalog",
      "label": "Catalogues restaurant",
      "permissions": [
        "read"
      ],
      "supports_list": false,
      "supports_detail": true,
      "supports_history": false
    },
    {
      "name": "staff",
      "label": "Personnel restaurant",
      "permissions": [
        "read",
        "assign",
        "unassign"
      ],
      "supports_list": true,
      "supports_detail": false,
      "supports_history": false
    },
    {
      "name": "orders",
      "label": "Commandes",
      "permissions": [
        "read",
        "update"
      ],
      "supports_list": true,
      "supports_detail": true,
      "supports_history": false
    },
    {
      "name": "deliveries",
      "label": "Livraisons Food",
      "permissions": [
        "read"
      ],
      "supports_list": false,
      "supports_detail": true,
      "supports_history": false
    },
    {
      "name": "payments",
      "label": "Paiements Food",
      "permissions": [
        "read"
      ],
      "supports_list": false,
      "supports_detail": true,
      "supports_history": false
    },
    {
      "name": "refund_requests",
      "label": "Demandes de remboursement",
      "permissions": [
        "read",
        "approve",
        "reject"
      ],
      "supports_list": true,
      "supports_detail": false,
      "supports_history": false
    },
    {
      "name": "wallet_beneficiaries",
      "label": "Beneficiaires wallet restaurant",
      "permissions": [
        "update"
      ],
      "supports_list": false,
      "supports_detail": false,
      "supports_history": false
    },
    {
      "name": "audit_events",
      "label": "Audit DiddiFood",
      "permissions": [
        "audit_read"
      ],
      "supports_list": true,
      "supports_detail": false,
      "supports_history": true
    }
  ],
  "commands": [
    {
      "module": "diddifood",
      "name": "create_restaurant",
      "permission": "create",
      "description": "Create a restaurant pending Food review",
      "method": "POST",
      "path": "/food/v1/internal/backoffice/restaurants",
      "reason_field": "reason",
      "requires_reason": true,
      "requires_idempotency": true,
      "execution_mode": "queued",
      "service_scope": "food:restaurants:write",
      "operator_from_requester": true,
      "operator_header_aliases": [],
      "operator_in_body": false,
      "input_fields": [
        {
          "name": "owner_user_id",
          "label": "Owner user ID",
          "type": "string",
          "required": true,
          "options": null
        },
        {
          "name": "name",
          "label": "Restaurant name",
          "type": "string",
          "required": true,
          "options": null
        },
        {
          "name": "address",
          "label": "Address",
          "type": "string",
          "required": true,
          "options": null
        },
        {
          "name": "latitude",
          "label": "Latitude",
          "type": "number",
          "required": true,
          "options": null
        },
        {
          "name": "longitude",
          "label": "Longitude",
          "type": "number",
          "required": true,
          "options": null
        },
        {
          "name": "description",
          "label": "Description",
          "type": "string",
          "required": false,
          "options": null
        }
      ],
      "high_value_threshold_xof": null
    },
    {
      "module": "diddifood",
      "name": "decide_restaurant",
      "permission": "approve",
      "description": "Approve, reject, suspend or reactivate a restaurant",
      "method": "POST",
      "path": "/food/v1/internal/backoffice/restaurants/{restaurant_id}/decisions",
      "reason_field": "reason",
      "requires_reason": true,
      "requires_idempotency": true,
      "execution_mode": "queued",
      "service_scope": "food:restaurants:write",
      "operator_from_requester": true,
      "operator_header_aliases": [],
      "operator_in_body": false,
      "input_fields": [
        {
          "name": "action",
          "label": "Decision",
          "type": "string",
          "required": true,
          "options": [
            "approve",
            "reject",
            "suspend",
            "reactivate"
          ]
        }
      ],
      "high_value_threshold_xof": null
    },
    {
      "module": "diddifood",
      "name": "update_service_settings",
      "permission": "update",
      "description": "Update restaurant weekly hours, neighborhoods and service radius",
      "method": "PUT",
      "path": "/food/v1/internal/backoffice/restaurants/{restaurant_id}/service-settings",
      "reason_field": "reason",
      "requires_reason": true,
      "requires_idempotency": true,
      "execution_mode": "queued",
      "service_scope": "food:restaurants:write",
      "operator_from_requester": true,
      "operator_header_aliases": [],
      "operator_in_body": false,
      "input_fields": [],
      "high_value_threshold_xof": null
    },
    {
      "module": "diddifood",
      "name": "change_staff",
      "permission": "assign",
      "description": "Grant or remove a Food restaurant staff role",
      "method": "PUT",
      "path": "/food/v1/internal/backoffice/restaurants/{restaurant_id}/staff/{target_user_id}",
      "reason_field": "reason",
      "requires_reason": true,
      "requires_idempotency": true,
      "execution_mode": "queued",
      "service_scope": "food:staff:write",
      "operator_from_requester": true,
      "operator_header_aliases": [],
      "operator_in_body": false,
      "input_fields": [
        {
          "name": "action",
          "label": "Change",
          "type": "string",
          "required": true,
          "options": [
            "grant",
            "remove"
          ]
        },
        {
          "name": "role",
          "label": "Role",
          "type": "string",
          "required": false,
          "options": [
            "manager",
            "kitchen"
          ]
        }
      ],
      "high_value_threshold_xof": null
    },
    {
      "module": "diddifood",
      "name": "cancel_order",
      "permission": "update",
      "description": "Cancel a Food order before acceptance",
      "method": "POST",
      "path": "/food/v1/internal/backoffice/orders/{order_id}/cancel",
      "reason_field": "reason",
      "requires_reason": true,
      "requires_idempotency": true,
      "execution_mode": "queued",
      "service_scope": "food:orders:write",
      "operator_from_requester": true,
      "operator_header_aliases": [],
      "operator_in_body": false,
      "input_fields": [],
      "high_value_threshold_xof": null
    },
    {
      "module": "diddifood",
      "name": "configure_wallet_beneficiary",
      "permission": "update",
      "description": "Configure the DiddiPay beneficiary reference of a restaurant wallet",
      "method": "PUT",
      "path": "/food/v1/admin/restaurants/{restaurant_id}/wallet/beneficiary",
      "reason_field": "reason",
      "requires_reason": true,
      "requires_idempotency": true,
      "execution_mode": "queued",
      "service_scope": "food:wallet:write",
      "operator_from_requester": true,
      "operator_header_aliases": [],
      "operator_in_body": false,
      "input_fields": [
        {
          "name": "beneficiary_reference",
          "label": "DiddiPay beneficiary reference",
          "type": "string",
          "required": true,
          "options": null
        }
      ],
      "high_value_threshold_xof": null
    },
    {
      "module": "diddifood",
      "name": "approve_refund",
      "permission": "approve",
      "description": "Approve a submitted Food refund request and call DiddiPay when online",
      "method": "POST",
      "path": "/food/v1/internal/backoffice/refund-requests/{refund_request_id}/approve",
      "reason_field": "reason",
      "requires_reason": true,
      "requires_idempotency": true,
      "execution_mode": "queued",
      "service_scope": "food:payments:write",
      "operator_from_requester": true,
      "operator_header_aliases": [],
      "operator_in_body": false,
      "input_fields": [],
      "high_value_threshold_xof": null
    },
    {
      "module": "diddifood",
      "name": "reject_refund",
      "permission": "reject",
      "description": "Reject a submitted Food refund request without moving money",
      "method": "POST",
      "path": "/food/v1/internal/backoffice/refund-requests/{refund_request_id}/reject",
      "reason_field": "reason",
      "requires_reason": true,
      "requires_idempotency": true,
      "execution_mode": "queued",
      "service_scope": "food:payments:write",
      "operator_from_requester": true,
      "operator_header_aliases": [],
      "operator_in_body": false,
      "input_fields": [],
      "high_value_threshold_xof": null
    }
  ]
}
