API Documentation

API Endpoint

Resource Requests

Resource Requests

A resource request represents a request for resource allocation on a specific budget (service). It captures the need for a person to be assigned to work on a project for a given period.

Resource requests follow a status lifecycle: pending -> resolved, rejected, or canceled.

When creating a resource request, the booking method determines how time is specified:

  • Hours per day (booking_method_id: 1): set the time attribute (minutes per day)

  • Percentage per day (booking_method_id: 2): set the percentage attribute (50 or 100)

  • Total time (booking_method_id: 3): set the total_time attribute (total minutes for the period)

Resolving a resource request creates one or more bookings atomically. If any booking fails validation, the entire resolve operation is rolled back.

Resource requests diagram

Supported filter params

  • id (array)

  • service_id (array)

  • creator_id (array)

  • resolver_id (array)

  • created_at

  • status (array)

  • started_on

  • ended_on

  • title

  • deleted_at

  • resolved_at

  • query

  • time

  • time_to_close

  • job_title

  • subsidiary_id (array)

  • workplace_id (array)

  • team_id (array)

  • service_type_id (array)

  • tags (array)

Supported sort params

  • id

  • status

  • booking_method_id

  • time

  • total_time

  • percentage

  • created_at

  • resolved_at

  • started_on

  • ended_on

  • service

  • creator

  • resolver

GET /api/v2/resource_requests
Requestsreturns list of resource requests

GET  /api/v2/resource_requests

Headers
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Content-Type: application/vnd.api+json
Responses200
Headers
Content-Type: application/vnd.api+json; charset=utf-8
Body
{
  "data": [
    {
      "id": "1",
      "type": "resource_requests",
      "attributes": {
        "title": "Resource Request 1",
        "started_on": "2026-02-28",
        "ended_on": "2026-03-07",
        "status": "pending",
        "custom_fields": {},
        "created_at": "2026-02-28T05:20:45.233+01:00",
        "time": 480,
        "total_time": null,
        "percentage": null,
        "rejected_reason": null,
        "booking_method_id": 1,
        "time_to_close": null,
        "exchange_rate": "1.0",
        "exchange_rate_normalized": "0.8",
        "exchange_date": "2026-02-28",
        "currency": "USD",
        "currency_default": "USD",
        "currency_normalized": "EUR",
        "max_cost_per_hour": 0,
        "max_cost_per_hour_default": 0,
        "max_cost_per_hour_normalized": 0,
        "fields": {},
        "note": "Test resource request note",
        "resolved_at": null,
        "canceled_at": null
      },
      "relationships": {
        "organization": {
          "data": {
            "type": "organizations",
            "id": "2378"
          }
        },
        "service": {
          "meta": {
            "included": false
          }
        },
        "creator": {
          "meta": {
            "included": false
          }
        },
        "resolver": {
          "meta": {
            "included": false
          }
        },
        "custom_field_people": {
          "meta": {
            "included": false
          }
        },
        "custom_field_attachments": {
          "meta": {
            "included": false
          }
        }
      }
    },
    {
      "id": "2",
      "type": "resource_requests",
      "attributes": {
        "title": "Resource Request 2",
        "started_on": "2026-02-28",
        "ended_on": "2026-03-07",
        "status": "pending",
        "custom_fields": {},
        "created_at": "2026-02-28T05:20:45.292+01:00",
        "time": 480,
        "total_time": null,
        "percentage": null,
        "rejected_reason": null,
        "booking_method_id": 1,
        "time_to_close": null,
        "exchange_rate": "1.0",
        "exchange_rate_normalized": "0.8",
        "exchange_date": "2026-02-28",
        "currency": "USD",
        "currency_default": "USD",
        "currency_normalized": "EUR",
        "max_cost_per_hour": 0,
        "max_cost_per_hour_default": 0,
        "max_cost_per_hour_normalized": 0,
        "fields": {},
        "note": "Test resource request note",
        "resolved_at": null,
        "canceled_at": null
      },
      "relationships": {
        "organization": {
          "data": {
            "type": "organizations",
            "id": "2378"
          }
        },
        "service": {
          "meta": {
            "included": false
          }
        },
        "creator": {
          "meta": {
            "included": false
          }
        },
        "resolver": {
          "meta": {
            "included": false
          }
        },
        "custom_field_people": {
          "meta": {
            "included": false
          }
        },
        "custom_field_attachments": {
          "meta": {
            "included": false
          }
        }
      }
    },
    {
      "id": "3",
      "type": "resource_requests",
      "attributes": {
        "title": "Resource Request 3",
        "started_on": "2026-02-28",
        "ended_on": "2026-03-07",
        "status": "pending",
        "custom_fields": {},
        "created_at": "2026-02-28T05:20:45.350+01:00",
        "time": 480,
        "total_time": null,
        "percentage": null,
        "rejected_reason": null,
        "booking_method_id": 1,
        "time_to_close": null,
        "exchange_rate": "1.0",
        "exchange_rate_normalized": "0.8",
        "exchange_date": "2026-02-28",
        "currency": "USD",
        "currency_default": "USD",
        "currency_normalized": "EUR",
        "max_cost_per_hour": 0,
        "max_cost_per_hour_default": 0,
        "max_cost_per_hour_normalized": 0,
        "fields": {},
        "note": "Test resource request note",
        "resolved_at": null,
        "canceled_at": null
      },
      "relationships": {
        "organization": {
          "data": {
            "type": "organizations",
            "id": "2378"
          }
        },
        "service": {
          "meta": {
            "included": false
          }
        },
        "creator": {
          "meta": {
            "included": false
          }
        },
        "resolver": {
          "meta": {
            "included": false
          }
        },
        "custom_field_people": {
          "meta": {
            "included": false
          }
        },
        "custom_field_attachments": {
          "meta": {
            "included": false
          }
        }
      }
    }
  ],
  "links": {
    "first": "http://api-test.productive.io/api/v2/resource_requests?page%5Bnumber%5D=1&page%5Bsize%5D=30",
    "last": "http://api-test.productive.io/api/v2/resource_requests?page%5Bnumber%5D=1&page%5Bsize%5D=30"
  },
  "meta": {
    "current_page": 1,
    "total_pages": 1,
    "total_count": 3,
    "page_size": 30,
    "max_page_size": 200
  }
}

Get resource requests
GET/api/v2/resource_requests


GET /api/v2/resource_requests/1
Requestsreturns single resource request

GET  /api/v2/resource_requests/4

Headers
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Content-Type: application/vnd.api+json
Responses200
Headers
Content-Type: application/vnd.api+json; charset=utf-8
Body
{
  "data": {
    "id": "4",
    "type": "resource_requests",
    "attributes": {
      "title": "test",
      "started_on": "2026-02-28",
      "ended_on": "2026-03-07",
      "status": "pending",
      "custom_fields": {},
      "created_at": "2026-02-28T05:20:45.509+01:00",
      "time": 480,
      "total_time": null,
      "percentage": null,
      "rejected_reason": null,
      "booking_method_id": 1,
      "time_to_close": null,
      "exchange_rate": "1.0",
      "exchange_rate_normalized": "0.8",
      "exchange_date": "2026-02-28",
      "currency": "USD",
      "currency_default": "USD",
      "currency_normalized": "EUR",
      "max_cost_per_hour": 0,
      "max_cost_per_hour_default": 0,
      "max_cost_per_hour_normalized": 0,
      "fields": {},
      "note": "Test resource request note",
      "resolved_at": null,
      "canceled_at": null
    },
    "relationships": {
      "organization": {
        "data": {
          "type": "organizations",
          "id": "2379"
        }
      },
      "service": {
        "meta": {
          "included": false
        }
      },
      "creator": {
        "meta": {
          "included": false
        }
      },
      "resolver": {
        "meta": {
          "included": false
        }
      },
      "custom_field_people": {
        "meta": {
          "included": false
        }
      },
      "custom_field_attachments": {
        "meta": {
          "included": false
        }
      }
    }
  },
  "meta": {}
}

Gets a resource request
GET/api/v2/resource_requests/{id}

URI Parameters
HideShow
id
number (required) Example: 1

resource request id


POST /api/v2/resource_requests
Requestscreates new resource requestreturns error when required attributes are missingreturns bad request when POST body is invalid

POST  /api/v2/resource_requests

Headers
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Content-Type: application/vnd.api+json
Body
{
  "data": {
    "type": "resource_requests",
    "attributes": {
      "title": "test",
      "started_on": "2026-02-28",
      "ended_on": "2026-03-07",
      "time": 480,
      "note": "test",
      "booking_method_id": 1,
      "currency": "USD"
    },
    "relationships": {
      "service": {
        "data": {
          "type": "services",
          "id": "1361"
        }
      }
    }
  }
}
Responses201
Headers
Content-Type: application/vnd.api+json; charset=utf-8
Body
{
  "data": {
    "id": "5",
    "type": "resource_requests",
    "attributes": {
      "title": "test",
      "started_on": "2026-02-28",
      "ended_on": "2026-03-07",
      "status": "pending",
      "custom_fields": null,
      "created_at": "2026-02-28T05:20:45.668+01:00",
      "time": 480,
      "total_time": null,
      "percentage": null,
      "rejected_reason": null,
      "booking_method_id": 1,
      "time_to_close": null,
      "exchange_rate": "1.0",
      "exchange_rate_normalized": "0.8",
      "exchange_date": "2026-02-28",
      "currency": "USD",
      "currency_default": "USD",
      "currency_normalized": "EUR",
      "max_cost_per_hour": 0,
      "max_cost_per_hour_default": 0,
      "max_cost_per_hour_normalized": 0,
      "fields": {},
      "note": "test",
      "resolved_at": null,
      "canceled_at": null
    },
    "relationships": {
      "organization": {
        "data": {
          "type": "organizations",
          "id": "2381"
        }
      },
      "service": {
        "meta": {
          "included": false
        }
      },
      "creator": {
        "meta": {
          "included": false
        }
      },
      "resolver": {
        "meta": {
          "included": false
        }
      },
      "custom_field_people": {
        "meta": {
          "included": false
        }
      },
      "custom_field_attachments": {
        "meta": {
          "included": false
        }
      }
    }
  },
  "meta": {}
}

POST  /api/v2/resource_requests

Headers
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Content-Type: application/vnd.api+json
Body
{
  "data": {
    "type": "resource_requests",
    "attributes": {
      "title": null
    }
  }
}
Responses422
Headers
Content-Type: application/vnd.api+json; charset=utf-8
Body
{
  "errors": [
    {
      "status": "422",
      "code": "invalid_attribute",
      "title": "Invalid Attribute",
      "detail": "can't be blank",
      "meta": {},
      "source": {
        "pointer": "data/attributes/title"
      }
    },
    {
      "status": "422",
      "code": "invalid_attribute",
      "title": "Invalid Attribute",
      "detail": "can't be blank",
      "meta": {},
      "source": {
        "pointer": "data/attributes/currency"
      }
    },
    {
      "status": "422",
      "code": "invalid_attribute",
      "title": "Invalid Attribute",
      "detail": "is not a valid currency",
      "meta": {},
      "source": {
        "pointer": "data/attributes/currency"
      }
    },
    {
      "status": "422",
      "code": "invalid_attribute",
      "title": "Invalid Attribute",
      "detail": "can't be blank",
      "meta": {},
      "source": {
        "pointer": "data/attributes/started_on"
      }
    },
    {
      "status": "422",
      "code": "invalid_attribute",
      "title": "Invalid Attribute",
      "detail": "is not a date",
      "meta": {
        "allow_nil": false
      },
      "source": {
        "pointer": "data/attributes/started_on"
      }
    },
    {
      "status": "422",
      "code": "invalid_attribute",
      "title": "Invalid Attribute",
      "detail": "can't be blank",
      "meta": {},
      "source": {
        "pointer": "data/attributes/ended_on"
      }
    },
    {
      "status": "422",
      "code": "invalid_attribute",
      "title": "Invalid Attribute",
      "detail": "is not a date",
      "meta": {
        "allow_nil": false,
        "after_or_equal_to": "started_on"
      },
      "source": {
        "pointer": "data/attributes/ended_on"
      }
    },
    {
      "status": "422",
      "code": "invalid_attribute",
      "title": "Invalid Attribute",
      "detail": "can't be blank",
      "meta": {},
      "source": {
        "pointer": "data/attributes/service"
      }
    },
    {
      "status": "422",
      "code": "invalid_attribute",
      "title": "Invalid Attribute",
      "detail": "can't be blank",
      "meta": {},
      "source": {
        "pointer": "data/attributes/booking_method_id"
      }
    },
    {
      "status": "422",
      "code": "invalid_attribute",
      "title": "Invalid Attribute",
      "detail": "is not included in the list",
      "meta": {
        "value": null
      },
      "source": {
        "pointer": "data/attributes/booking_method_id"
      }
    }
  ]
}

POST  /api/v2/resource_requests

Headers
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Content-Type: application/vnd.api+json
Body
{
  "data": null
}
Responses400
Headers
Content-Type: application/vnd.api+json; charset=utf-8
Body
{
  "errors": [
    {
      "status": "400",
      "title": "Bad Request",
      "meta": {},
      "source": {}
    }
  ]
}

Create a resource request
POST/api/v2/resource_requests

URI Parameters
HideShow
service_id
number (required) Example: 1

service (budget) id the resource is requested for

started_on
date (required) Example: 2026-02-01

start date of the requested resource allocation

ended_on
date (required) Example: 2026-02-28

end date of the requested resource allocation

booking_method_id
number (required) Example: 1

1: hours per day, time attribute needs to be set; 2: percentage per day, percentage attribute needs to be set; 3: total time

title
string (optional) Example: Senior+Developer+needed

title/name of the resource request

time
number (optional) Example: 480

time in minutes per day, required with booking_method_id 1

percentage
number (optional) Example: 100

percentage of working hours (50 or 100), required with booking_method_id 2

total_time: `4800` (number, optional) - total time in minutes for the entire period, required with booking_method_id 3
string (required) 
note
string (optional) Example: Need+someone+with+React+experience

additional notes for the resource request

fields
object (optional) Example: %7Bjob_title%3A+%22Developer%22%2C+team_ids%3A+%5B1%2C+2%5D%7D

configurable fields: job_title, subsidiary_id, workplace_id, team_ids, service_type_ids, tags

custom_fields
object (optional) Example: %7B%7D

custom field values

subscriber_ids
array (optional) Example: %5B1%2C+2%5D

person ids to subscribe to notifications for this request


PATCH /api/v2/resource_requests/1
Requestsupdates resource request attributesreturns error when updating with invalid data

PATCH  /api/v2/resource_requests/6

Headers
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Content-Type: application/vnd.api+json
Body
{
  "data": {
    "type": "resource_requests",
    "id": "6",
    "attributes": {
      "title": "Updated Title",
      "note": "Updated note"
    }
  }
}
Responses200
Headers
Content-Type: application/vnd.api+json; charset=utf-8
Body
{
  "data": {
    "id": "6",
    "type": "resource_requests",
    "attributes": {
      "title": "Updated Title",
      "started_on": "2026-02-28",
      "ended_on": "2026-03-07",
      "status": "pending",
      "custom_fields": null,
      "created_at": "2026-02-28T05:20:45.907+01:00",
      "time": 480,
      "total_time": null,
      "percentage": null,
      "rejected_reason": null,
      "booking_method_id": 1,
      "time_to_close": null,
      "exchange_rate": "1.0",
      "exchange_rate_normalized": "0.8",
      "exchange_date": "2026-02-28",
      "currency": "USD",
      "currency_default": "USD",
      "currency_normalized": "EUR",
      "max_cost_per_hour": 0,
      "max_cost_per_hour_default": 0,
      "max_cost_per_hour_normalized": 0,
      "fields": {},
      "note": "Updated note",
      "resolved_at": null,
      "canceled_at": null
    },
    "relationships": {
      "organization": {
        "data": {
          "type": "organizations",
          "id": "2384"
        }
      },
      "service": {
        "meta": {
          "included": false
        }
      },
      "creator": {
        "meta": {
          "included": false
        }
      },
      "resolver": {
        "meta": {
          "included": false
        }
      },
      "custom_field_people": {
        "meta": {
          "included": false
        }
      },
      "custom_field_attachments": {
        "meta": {
          "included": false
        }
      }
    }
  },
  "meta": {}
}

PATCH  /api/v2/resource_requests/7

Headers
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Content-Type: application/vnd.api+json
Body
{
  "data": {
    "type": "resource_requests",
    "id": "7",
    "attributes": {
      "title": null
    }
  }
}
Responses422
Headers
Content-Type: application/vnd.api+json; charset=utf-8
Body
{
  "errors": [
    {
      "status": "422",
      "code": "invalid_attribute",
      "title": "Invalid Attribute",
      "detail": "can't be blank",
      "meta": {},
      "source": {
        "pointer": "data/attributes/title"
      }
    }
  ]
}

Update a resource request
PATCH/api/v2/resource_requests/{id}

URI Parameters
HideShow
id
number (required) Example: 1

resource request id


DELETE /api/v2/resource_requests/1
Requestsdeletes resource request

DELETE  /api/v2/resource_requests/8

Headers
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Content-Type: application/vnd.api+json
Responses204
This response has no content.

Deletes a resource request
DELETE/api/v2/resource_requests/{id}

URI Parameters
HideShow
id
number (required) Example: 1

resource request id


PATCH /api/v2/resource_requests/1/cancel
Requestscancels pending resource request

PATCH  /api/v2/resource_requests/9/cancel

Headers
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Content-Type: application/vnd.api+json
Body
{
  "data": {
    "type": "resource_requests",
    "id": "9"
  }
}
Responses200
Headers
Content-Type: application/vnd.api+json; charset=utf-8
Body
{
  "data": {
    "id": "9",
    "type": "resource_requests",
    "attributes": {
      "title": "Resource Request 6",
      "started_on": "2026-02-28",
      "ended_on": "2026-03-07",
      "status": "canceled",
      "custom_fields": {},
      "created_at": "2026-02-28T05:20:46.509+01:00",
      "time": 480,
      "total_time": null,
      "percentage": null,
      "rejected_reason": null,
      "booking_method_id": 1,
      "time_to_close": null,
      "exchange_rate": "1.0",
      "exchange_rate_normalized": "0.8",
      "exchange_date": "2026-02-28",
      "currency": "USD",
      "currency_default": "USD",
      "currency_normalized": "EUR",
      "max_cost_per_hour": 0,
      "max_cost_per_hour_default": 0,
      "max_cost_per_hour_normalized": 0,
      "fields": {},
      "note": "Test resource request note",
      "resolved_at": null,
      "canceled_at": "2026-02-28T05:20:46.522+01:00"
    },
    "relationships": {
      "organization": {
        "data": {
          "type": "organizations",
          "id": "2389"
        }
      },
      "service": {
        "meta": {
          "included": false
        }
      },
      "creator": {
        "meta": {
          "included": false
        }
      },
      "resolver": {
        "meta": {
          "included": false
        }
      },
      "custom_field_people": {
        "meta": {
          "included": false
        }
      },
      "custom_field_attachments": {
        "meta": {
          "included": false
        }
      }
    }
  },
  "meta": {}
}

Cancel a resource request
PATCH/api/v2/resource_requests/{id}/cancel

URI Parameters
HideShow
id
number (required) Example: 1

resource request id


PATCH /api/v2/resource_requests/1/reject
Requestsrejects pending resource request

PATCH  /api/v2/resource_requests/10/reject

Headers
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Content-Type: application/vnd.api+json
Body
{
  "data": {
    "type": "resource_requests",
    "id": "10",
    "attributes": {
      "rejected_reason": "test"
    }
  }
}
Responses200
Headers
Content-Type: application/vnd.api+json; charset=utf-8
Body
{
  "data": {
    "id": "10",
    "type": "resource_requests",
    "attributes": {
      "title": "Resource Request 7",
      "started_on": "2026-02-28",
      "ended_on": "2026-03-07",
      "status": "rejected",
      "custom_fields": {},
      "created_at": "2026-02-28T05:20:46.742+01:00",
      "time": 480,
      "total_time": null,
      "percentage": null,
      "rejected_reason": "test",
      "booking_method_id": 1,
      "time_to_close": 0,
      "exchange_rate": "1.0",
      "exchange_rate_normalized": "0.8",
      "exchange_date": "2026-02-28",
      "currency": "USD",
      "currency_default": "USD",
      "currency_normalized": "EUR",
      "max_cost_per_hour": 0,
      "max_cost_per_hour_default": 0,
      "max_cost_per_hour_normalized": 0,
      "fields": {},
      "note": "Test resource request note",
      "resolved_at": "2026-02-28T05:20:46.754+01:00",
      "canceled_at": null
    },
    "relationships": {
      "organization": {
        "data": {
          "type": "organizations",
          "id": "2391"
        }
      },
      "service": {
        "meta": {
          "included": false
        }
      },
      "creator": {
        "meta": {
          "included": false
        }
      },
      "resolver": {
        "meta": {
          "included": false
        }
      },
      "custom_field_people": {
        "meta": {
          "included": false
        }
      },
      "custom_field_attachments": {
        "meta": {
          "included": false
        }
      }
    }
  },
  "meta": {}
}

Reject a resource request
PATCH/api/v2/resource_requests/{id}/reject

URI Parameters
HideShow
id
number (required) Example: 1

resource request id

rejected_reason
string (optional) Example: No+available+resources+for+the+requested+period

reason for rejecting the request


POST /api/v2/resource_requests/1/resolve
Requestsresolves resource request and creates bookingsreturns error when bookings are missingreturns error when bookings are invalid

POST  /api/v2/resource_requests/11/resolve

Headers
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Content-Type: application/vnd.api+json
Body
{
  "data": {
    "type": "resource_requests",
    "id": "11",
    "attributes": {
      "bookings": [
        {
          "type": "bookings",
          "attributes": {
            "started_on": "2026-02-28",
            "ended_on": "2026-03-01",
            "time": 480
          },
          "relationships": {
            "person": {
              "data": {
                "type": "people",
                "id": "8958"
              }
            },
            "service": {
              "data": {
                "type": "services",
                "id": "1367"
              }
            }
          }
        }
      ]
    }
  }
}
Responses200
Headers
Content-Type: application/vnd.api+json; charset=utf-8
Body
{
  "data": {
    "id": "11",
    "type": "resource_requests",
    "attributes": {
      "title": "Resource Request 8",
      "started_on": "2026-02-28",
      "ended_on": "2026-03-07",
      "status": "resolved",
      "custom_fields": {},
      "created_at": "2026-02-28T05:20:46.953+01:00",
      "time": 480,
      "total_time": null,
      "percentage": null,
      "rejected_reason": null,
      "booking_method_id": 1,
      "time_to_close": 0,
      "exchange_rate": "1.0",
      "exchange_rate_normalized": "0.8",
      "exchange_date": "2026-02-28",
      "currency": "USD",
      "currency_default": "USD",
      "currency_normalized": "EUR",
      "max_cost_per_hour": 0,
      "max_cost_per_hour_default": 0,
      "max_cost_per_hour_normalized": 0,
      "fields": {},
      "note": "Test resource request note",
      "resolved_at": "2026-02-28T05:20:46.966+01:00",
      "canceled_at": null
    },
    "relationships": {
      "organization": {
        "data": {
          "type": "organizations",
          "id": "2393"
        }
      },
      "service": {
        "meta": {
          "included": false
        }
      },
      "creator": {
        "meta": {
          "included": false
        }
      },
      "resolver": {
        "meta": {
          "included": false
        }
      },
      "custom_field_people": {
        "meta": {
          "included": false
        }
      },
      "custom_field_attachments": {
        "meta": {
          "included": false
        }
      }
    }
  },
  "meta": {}
}

POST  /api/v2/resource_requests/13/resolve

Headers
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Content-Type: application/vnd.api+json
Body
{
  "data": {
    "type": "resource_requests",
    "id": "13"
  }
}
Responses422
Headers
Content-Type: application/vnd.api+json; charset=utf-8
Body
{
  "errors": [
    {
      "status": "422",
      "code": "invalid_attribute",
      "title": "Invalid Attribute",
      "detail": "can't be blank",
      "meta": {},
      "source": {
        "pointer": "data/attributes/bookings"
      }
    },
    {
      "status": "422",
      "code": "invalid_attribute",
      "title": "Invalid Attribute",
      "detail": "must be an array",
      "meta": {},
      "source": {
        "pointer": "data/attributes/bookings"
      }
    }
  ]
}

POST  /api/v2/resource_requests/14/resolve

Headers
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Content-Type: application/vnd.api+json
Body
{
  "data": {
    "type": "resource_requests",
    "id": "14",
    "attributes": {
      "bookings": [
        {
          "type": "bookings",
          "attributes": {
            "started_on": null,
            "ended_on": null
          },
          "relationships": {
            "person": {
              "data": null
            },
            "service": {
              "data": null
            }
          }
        }
      ]
    }
  }
}
Responses422
Headers
Content-Type: application/vnd.api+json; charset=utf-8
Body
{
  "errors": [
    {
      "status": "422",
      "code": "invalid_attribute",
      "title": "Invalid Attribute",
      "detail": "Booking 0: person_id can't be blank; Booking 0: started_on can't be blank; Booking 0: started_on is not a date; Booking 0: ended_on can't be blank; Booking 0: ended_on is not a date; Booking 0: base service and event can't be blank simultaneously",
      "meta": {},
      "source": {
        "pointer": "data/attributes/bookings"
      }
    }
  ]
}

Resolve a resource request by creating bookings
POST/api/v2/resource_requests/{id}/resolve

URI Parameters
HideShow
id
number (required) Example: 1

resource request id

bookings
array (required) Example: %5B%7Bperson_id%3A+1%2C+started_on%3A+%222026-02-01%22%2C+ended_on%3A+%222026-02-28%22%2C+time%3A+480%2C+booking_method_id%3A+1%2C+service_id%3A+1%7D%5D

array of booking objects to create when resolving the request


Generated by aglio on 28 Feb 2026