> For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://developer.projectmanager.com/api-reference/hourly-rate/get-hourly-rate/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://developer.projectmanager.com/_mcp/server. # Get Hourly Rate GET https://api.projectmanager.com/api/data/hourly-rates/{rateId} Get Hourly Rate Reference: https://developer.projectmanager.com/api-reference/hourly-rate/get-hourly-rate ## Authentication - `Authorization` header (bearer token, required) — Bearer authentication of the form `Bearer `, where token is your auth token. ## Request ### Path parameters - `rateId` (string, required) — The unique identifier for the rate ### 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` (HourlyRateDetailsDto, optional) — Detailed information about a specific hourly rate, including task and resource counts. ## 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. ### HourlyRateDetailsDto Detailed information about a specific hourly rate, including task and resource counts. - `id` (string, optional) — The unique identifier of the Hourly Rate. This value is set by the system and cannot be set with a CreateHourlyRate or changed with an UpdateHourlyRate call. - `createBy` (string, optional) — Who created the Hourly rate - `createDate` (string, optional) — The timestamp in UTC when the Hourly Rate was created. This field is automatically determined by the system when this Hourly Rate is created and cannot be changed by the user. - `modifyBy` (string, optional) — Who last modified the Hourly rate - `modifyDate` (string, optional) — The timestamp in UTC when the Hourly Rate was most recently modified. This field is automatically determined by the system when this Hourly Rate is modified and cannot be directly changed by the user. - `rateType` (string, optional) — The type of the rate - `projectId` (string, optional, nullable) — The ProjectId the rate is for - `project` (TaskProjectDto, optional, nullable) — The Project the rate is for - `resourceId` (string, optional, nullable) — The ResourceId the rate is for - `resource` (PartialResourceDto, optional, nullable) — The Resource the rate is for - `skillId` (string, optional, nullable) — The SkillId the rate is for - `skill` (ResourceSkillDto, optional, nullable) — The Skill the rate is for - `values` (list of HourlyRateValueDto, optional) — A list of all rates for each rate period - `taskCount` (integer, optional, nullable) — Total number of tasks with at least 1 association to this rate - `resourceCount` (integer, optional, nullable) — Total number of resources using this rate - `hourlyRateTimesheetCount` (integer, optional, nullable) — Total number of timesheets using this rate ### TaskProjectDto A Project is a collection of Tasks that contributes towards a goal. Within a Project, Tasks represent individual items of work that team members must complete. The sum total of Tasks within a Project represents the work to be completed for that Project. - `id` (string, optional) — The unique identifier of this Project. - `shortId` (string, optional) — The ShortId of this Project. - `name` (string, optional) — The common name of this Project. ### PartialResourceDto PartialResourceDto - `id` (string, optional) — The unique identifier of this Resource. - `initials` (string, optional) — The resource initials. - `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`. ### 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 ### HourlyRateValueDto Represents the value of an hourly rate for a specific period, including audit information and references to the rate definition and period. - `id` (string, optional) — Gets or sets the unique identifier for this hourly rate value entry. - `createBy` (string, optional) — Gets or sets the identifier of the user or resource who created this hourly rate value. - `createDate` (string, optional) — Gets or sets the date and time when this hourly rate value was created. - `modifyBy` (string, optional) — Gets or sets the identifier of the user or resource who last modified this hourly rate value. - `modifyDate` (string, optional) — Gets or sets the date and time when this hourly rate value was last modified. - `hourlyRateDefinitionId` (string, optional) — Gets or sets the unique identifier of the hourly rate definition to which this value belongs. - `hourlyRatePeriodId` (string, optional) — Gets or sets the unique identifier of the hourly rate period to which this value applies. - `periodStartDate` (string, optional, nullable) — Gets or sets the start date of the hourly rate period for which this value applies. This value is sourced from the associated HourlyRatePeriod. - `periodFinishDate` (string, optional, nullable) — Gets or sets the finish date of the hourly rate period for which this value applies. This value is sourced from the associated HourlyRatePeriod. - `value` (double, optional) — Gets or sets the value of the hourly rate for the specified period. ## Examples **Response** ```json { "error": { "technicalError": "string", "additionalErrors": [ "string" ], "validationErrors": {}, "message": "string" }, "success": true, "hasError": true, "statusCode": "Continue", "data": { "id": "string", "createBy": "string", "createDate": "2024-01-15T09:30:00Z", "modifyBy": "string", "modifyDate": "2024-01-15T09:30:00Z", "rateType": "string", "projectId": "string", "project": { "id": "string", "shortId": "string", "name": "string" }, "resourceId": "string", "resource": { "id": "string", "initials": "string", "firstName": "string", "lastName": "string", "email": "string" }, "skillId": "string", "skill": { "id": "string", "name": "string", "inUse": true }, "values": [ { "id": "string", "createBy": "string", "createDate": "2024-01-15T09:30:00Z", "modifyBy": "string", "modifyDate": "2024-01-15T09:30:00Z", "hourlyRateDefinitionId": "string", "hourlyRatePeriodId": "string", "periodStartDate": "2024-01-15T09:30:00Z", "periodFinishDate": "2024-01-15T09:30:00Z", "value": 1.1 } ], "taskCount": 1, "resourceCount": 1, "hourlyRateTimesheetCount": 1 } } ``` **SDK Code** ```python import requests url = "https://api.projectmanager.com/api/data/hourly-rates/rateId" headers = {"Authorization": "Bearer "} response = requests.get(url, headers=headers) print(response.json()) ``` ```javascript const url = 'https://api.projectmanager.com/api/data/hourly-rates/rateId'; const options = {method: 'GET', headers: {Authorization: 'Bearer '}}; 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/hourly-rates/rateId" req, _ := http.NewRequest("GET", url, nil) req.Header.Add("Authorization", "Bearer ") 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/hourly-rates/rateId") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true request = Net::HTTP::Get.new(url) request["Authorization"] = 'Bearer ' response = http.request(request) puts response.read_body ``` ```java import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.Unirest; HttpResponse response = Unirest.get("https://api.projectmanager.com/api/data/hourly-rates/rateId") .header("Authorization", "Bearer ") .asString(); ``` ```php request('GET', 'https://api.projectmanager.com/api/data/hourly-rates/rateId', [ 'headers' => [ 'Authorization' => 'Bearer ', ], ]); echo $response->getBody(); ``` ```csharp using RestSharp; var client = new RestClient("https://api.projectmanager.com/api/data/hourly-rates/rateId"); var request = new RestRequest(Method.GET); request.AddHeader("Authorization", "Bearer "); IRestResponse response = client.Execute(request); ``` ```swift import Foundation let headers = ["Authorization": "Bearer "] let request = NSMutableURLRequest(url: NSURL(string: "https://api.projectmanager.com/api/data/hourly-rates/rateId")! 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() ```