> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://developer.projectmanager.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://developer.projectmanager.com/_mcp/server.

# Retrieve Resource

GET https://api.projectmanager.com/api/data/resources/{resourceId}

Retrieve the Resource matching the specified unique ID.
            
A Resource represents a person, material, or tool that is used within your Projects.
When you attach a Resources to more than one Task, the software will schedule the usage
of your Resource so that it is not allocated to more than one Task at the same time.
The users in your Workspace are also considered Resources.  To invite a new User to your
Workspace, create a new Resource for that user.

Reference: https://developer.projectmanager.com/api-reference/resource/retrieve-resource

## Authentication

- `Authorization` header (bearer token, required) — Bearer authentication of the form `Bearer <token>`, where token is your auth token.

## Request

### Path parameters

- `resourceId` (string, required) — The id of the Resource

### Headers

- `x-integration-name` (string, optional) — The name of the calling system passed along as a header parameter

## Response

### 200

Success

- `error` (AstroError, optional, nullable) — If the API call failed, this will contain information about the error that occurred.
- `success` (boolean, optional) — True if the API call succeeded; false otherwise.
- `hasError` (boolean, optional) — True if the API call failed.
- `statusCode` (enum, optional) — The HTTP code of the response.
  - Allowed values: `Continue`, `SwitchingProtocols`, `Processing`, `EarlyHints`, `OK`, `Created`, `Accepted`, `NonAuthoritativeInformation`, `NoContent`, `ResetContent`, `PartialContent`, `MultiStatus`, `AlreadyReported`, `IMUsed`, `MultipleChoices`, `MovedPermanently`, `Found`, `SeeOther`, `NotModified`, `UseProxy`, `Unused`, `TemporaryRedirect`, `PermanentRedirect`, `BadRequest`, `Unauthorized`, `PaymentRequired`, `Forbidden`, `NotFound`, `MethodNotAllowed`, `NotAcceptable`, `ProxyAuthenticationRequired`, `RequestTimeout`, `Conflict`, `Gone`, `LengthRequired`, `PreconditionFailed`, `RequestEntityTooLarge`, `RequestUriTooLong`, `UnsupportedMediaType`, `RequestedRangeNotSatisfiable`, `ExpectationFailed`, `MisdirectedRequest`, `UnprocessableEntity`, `Locked`, `FailedDependency`, `UpgradeRequired`, `PreconditionRequired`, `TooManyRequests`, `RequestHeaderFieldsTooLarge`, `UnavailableForLegalReasons`, `InternalServerError`, `NotImplemented`, `BadGateway`, `ServiceUnavailable`, `GatewayTimeout`, `HttpVersionNotSupported`, `VariantAlsoNegotiates`, `InsufficientStorage`, `LoopDetected`, `NotExtended`, `NetworkAuthenticationRequired`
- `data` (ResourceDetailsDto, optional) — An extended view of a Resource returned when retrieving a single Resource. Includes everything on Astro.Api.Dto.Resources.ResourceDto plus additional profile details that are only surfaced for an individual Resource, such as the Projects the Resource has access to.

## Types

### AstroError

Information about an error that occurred within the ProjectManager API.

- `technicalError` (string, optional, nullable) — A technical description of the error that occurred. Not suitable for display to end users.
- `additionalErrors` (list of string, optional, nullable) — If additional errors beyond the main error in `Message` occurred, they will be listed here as individual messages.
- `validationErrors` (map from string to list of string, optional, nullable) — This contains a dictionary of validation errors. The key is the name of the field
- `message` (string, optional, nullable) — A description of the error that occurred. If your application has a user interface, show this message to explain what went wrong.

### ResourceDetailsDto

An extended view of a Resource returned when retrieving a single Resource. Includes everything on Astro.Api.Dto.Resources.ResourceDto plus additional profile details that are only surfaced for an individual Resource, such as the Projects the Resource has access to.

- `id` (string, optional) — The unique identifier of this Resource.
- `initials` (string, optional) — The resource initials.
- `name` (string, optional, nullable) — The name of the Resource. Usually this is the same as the FirstName and LastName
- `firstName` (string, optional, nullable) — The first name of the person Resource. Applies to personnel Resources only.
- `lastName` (string, optional, nullable) — The last name of the person Resource. Applies to personnel Resources only.
- `email` (string, optional, nullable) — If this Resource is a person who can log on to ProjectManager.com, this value should be the email address of the person. If this Resource is not a person, but you wish to receive email alerts for usage of this Resource, you can also add an email address here and notifications will be sent when this Resource is used. Otherwise this value should be `null`.
- `hourlyRate` (double, optional, nullable) — The basic hourly rate for this Resource.
- `phone` (string, optional, nullable) — The phone number associated with this Resource.
- `city` (string, optional, nullable) — The city where this Resource is located.
- `state` (string, optional, nullable) — The state or region where this Resource is located. This value is not constrained to a list of known states or regions.
- `country` (string, optional, nullable) — A text field indicating the country in which this Resource is located. This value is not constrained to the list of known ISO 3166 country names or codes.
- `countryName` (string, optional, nullable) — Returns the name of the country
- `notes` (string, optional, nullable) — Free-form text notes about this Resource. You may use this field to store extra information about the Resource.
- `approver` (ResourceApproverDto, optional, nullable) — When managing users, you can choose who will approve a person's Timesheets. This is a ResourceApprover. You can specify this person within the Resource object.
- `teams` (list of ResourceTeamDto, optional) — The list of ResourceTeams to which this Resource belongs.
- `skills` (list of ResourceSkillDto, optional) — The list of ResourceSkills possessed by this Resource.
- `onlineDateTime` (string, optional, nullable) — The last time when this Resource was online. Applies to personnel Resources only.
- `role` (string, optional, nullable) — The Role privileges associated with this Resource. Applies to personnel Resources only.
- `roleId` (string, optional, nullable) — The unique identifier of the Role associated with this Resource. Applies to personnel Resources only.
- `isActive` (boolean, optional) — True if this Resource is currently active and valid. If this value is false, this Resource is considered to be deactivated and not available for further use. For personnel Resources, setting this value to False will make this user unable to access this Workspace.
- `createdDate` (string, optional, nullable) — The date this resource was created
- `createdBy` (string, optional, nullable) — Set to a unique identifier of the user who created this Resource.
- `modifiedDate` (string, optional, nullable) — The date this resource was last modified
- `modifiedBy` (string, optional, nullable) — Set to a unique identifier of the user who last modified this Resource.
- `colorName` (string, optional, nullable) — Collaboration Color for this resource. eg. teal, cyan, lightblue, blurple, purple, pink, orange, gray
- `color` (string, optional, nullable) — Read only Hex code of the ColorName
- `avatarUrl` (string, optional, nullable) — The resources avatar url, if any.
- `language` (string, optional, nullable) — The language preference for this Resource, used for localization and communication.
- `resourceTypeId` (integer, optional) — The type identifier for this Resource. 1 = Resource (standard resource), 2 = Sample (sample resource).
- `defaultPlannedHours` (double, optional, nullable) — Default planned effort for this resource, in hours (stored as whole minutes server-side).
- `workingDays` (ResourceWorkingDaysHours, optional) — Hours available per weekday for scheduling (whole hours per day; matches workspace/resource calendar rows).
- `projectMembership` (list of IdNameDto, optional) — The list of Projects this Resource has access to, each as an id and name. Returns an empty array when the Resource does not have access to any Projects.

### ResourceApproverDto

When managing users, you can choose who will approve a person's Timesheets. This is a ResourceApprover. You can specify this person within the Resource object.

- `id` (string, optional) — The unique identifier of this ResourceApprover
- `name` (string, optional) — The name of this ResourceApprover

### ResourceTeamDto

A ResourceTeam is a group of Resources that can be referred to as a group. You can use a ResourceTeam as a shortcut to quickly assign or allocate multiple Resources quickly.

- `id` (string, optional) — The unique identifier of this ResourceTeam
- `name` (string, optional) — The name of this ResourceTeam

### ResourceSkillDto

A ResourceSkill is a capability possessed by this Resource that can be used to determine appropriate assignments. Some Resources may have ResourceSkills that are in high demand and some Tasks may have a requirement for Resources with particular ResourceSkills.

- `id` (string, optional) — The unique identifier of this ResourceSkill
- `name` (string, optional) — The name of this ResourceSkill
- `inUse` (boolean, optional) — Set to true if this ResourceSkill is in use

### ResourceWorkingDaysHours

Whole hours per weekday for scheduling (matches workspace/resource calendar rows). Property order is Monday through Sunday for documentation and OpenAPI schema clarity. On read, all seven values are set. On create/update, omit a property (or send null) to leave that day unchanged; specified values merge over workspace defaults when building the resource calendar.

- `monday` (double, optional, nullable) — Hours available on Monday.
- `tuesday` (double, optional, nullable) — Hours available on Tuesday.
- `wednesday` (double, optional, nullable) — Hours available on Wednesday.
- `thursday` (double, optional, nullable) — Hours available on Thursday.
- `friday` (double, optional, nullable) — Hours available on Friday.
- `saturday` (double, optional, nullable) — Hours available on Saturday.
- `sunday` (double, optional, nullable) — Hours available on Sunday.

### IdNameDto

A lightweight reference that pairs a unique identifier with a display name. To determine what the identifier and name represent, see the field to which this value is attached in the parent object.

- `id` (string, optional) — A unique identifier. To determine the meaning of this unique identifier, see the field to which this value is attached.
- `name` (string, optional) — A name. To determine the meaning of this name, see the field to which this value is attached in the parent object.

## Examples

**Response**

```json
{
  "error": {
    "technicalError": "string",
    "additionalErrors": [
      "string"
    ],
    "validationErrors": {},
    "message": "string"
  },
  "success": true,
  "hasError": true,
  "statusCode": "Continue",
  "data": {
    "id": "string",
    "initials": "string",
    "name": "string",
    "firstName": "string",
    "lastName": "string",
    "email": "string",
    "hourlyRate": 1.1,
    "phone": "string",
    "city": "string",
    "state": "string",
    "country": "string",
    "countryName": "string",
    "notes": "string",
    "approver": {
      "id": "string",
      "name": "string"
    },
    "teams": [
      {
        "id": "string",
        "name": "string"
      }
    ],
    "skills": [
      {
        "id": "string",
        "name": "string",
        "inUse": true
      }
    ],
    "onlineDateTime": "2024-01-15T09:30:00Z",
    "role": "string",
    "roleId": "string",
    "isActive": true,
    "createdDate": "2024-01-15T09:30:00Z",
    "createdBy": "string",
    "modifiedDate": "2024-01-15T09:30:00Z",
    "modifiedBy": "string",
    "colorName": "string",
    "color": "string",
    "avatarUrl": "string",
    "language": "string",
    "resourceTypeId": 1,
    "defaultPlannedHours": 1.1,
    "workingDays": {
      "monday": 1.1,
      "tuesday": 1.1,
      "wednesday": 1.1,
      "thursday": 1.1,
      "friday": 1.1,
      "saturday": 1.1,
      "sunday": 1.1
    },
    "projectMembership": [
      {
        "id": "string",
        "name": "string"
      }
    ]
  }
}
```

**SDK Code**

```python
import requests

url = "https://api.projectmanager.com/api/data/resources/resourceId"

headers = {"Authorization": "Bearer <token>"}

response = requests.get(url, headers=headers)

print(response.json())
```

```javascript
const url = 'https://api.projectmanager.com/api/data/resources/resourceId';
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://api.projectmanager.com/api/data/resources/resourceId"

	req, _ := http.NewRequest("GET", url, nil)

	req.Header.Add("Authorization", "Bearer <token>")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://api.projectmanager.com/api/data/resources/resourceId")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://api.projectmanager.com/api/data/resources/resourceId")
  .header("Authorization", "Bearer <token>")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://api.projectmanager.com/api/data/resources/resourceId', [
  'headers' => [
    'Authorization' => 'Bearer <token>',
  ],
]);

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("https://api.projectmanager.com/api/data/resources/resourceId");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer <token>");
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = ["Authorization": "Bearer <token>"]

let request = NSMutableURLRequest(url: NSURL(string: "https://api.projectmanager.com/api/data/resources/resourceId")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```