I'm working with the Paylocity API. I understand how to do "in: header" and "in: path" parameters, but how do you do "in: query" parameters?
Here's the documentation:
'/v2/companies/{companyId}/employees/':
get:
description: Get All Employees API will return employee data currently available in Web Pay.
operationId: Get all employees
parameters:
- description: Bearer + JWT
in: header
name: Authorization
required: true
type: string
- description: Company Id
in: path
name: companyId
required: true
type: string
- description: Number of records per page. Default value is 25.
in: query
name: pagesize
required: false
type: integer
- description: 'Page number to retrieve; page numbers are 0-based (so to get the first page of results, pass pagenumber=0). Default value is 0.'
in: query
name: pagenumber
required: false
type: integer
- description: Whether to include the total record count in the header's X-Pcty-Total-Count property. Default value is true.
in: query
name: includetotalcount
required: false
type: boolean
Here's some sample code:
lcScope = "WebLinkAPI"
lcApiVersion = "v2"
lcGrantType = "client_credentials"
lcUserName = "???????"
lcPassword = "?????????"
lcCompanyID = "999999"
lcUrl = "https://api.paylocity.com/IdentityServer/connect/token"
lcEncodedData = "grant_type="+lcGrantType + "&client_id="+lcUserName + "&client_secret="+lcPassword + "&scope=" + lcScope
DO wwHttp
DO wwJsonSerializer
loHTTP=CREATEOBJECT("wwHttp")
loHttp.cContentType = "application/x-www-form-urlencoded"
loHttp.nHttpPostMode = 4
loHttp.AddPostKey(lcEncodedData)
loSer = CREATEOBJECT("wwJsonSerializer")
lcJsonResult = loHTTP.HTTPGet(lcURL)
loSer.FormattedOutput = .T.
loSer.DeserializeJson(lcJsonResult)
lcAccessToken = loResultObject.access_token
lcTokenType = loResultObject.token_type && lcTokenType is "Bearer"
loHTTP.AddHeader("Authorization: "+ lcTokenType + " " + lcAccessToken)
lcEmployeeURL = "https://api.paylocity.com/api/v2/companies/" + lcCompanyID + "/employees"
lcJsonEmpResult = loHTTP.HTTPGet(lcEmployeeURL)
loEmpResultObj = loSer.DeserializeJson(lcJsonEmpResult)
This all works, but is limited to 25 records per page and only the first page. I've tried adding properties, but that doesn't work, so I guess I just don't understand how to do "in: query" parameters and can't find any examples to borrow from.
Any insight on this would be helpful (and hopefully not just for me).
Query usually means query string, which is the key value list following the ?
in the URL. IOW, you add that to the URL.
So to pass in the page:
lcEmployeeURL = "https://api.paylocity.com/api/v2/companies/" + lcCompanyID + "/employees"
*** Add query string
lcEmployeeUrl = lcEmployeeUrl + "?page=3&pageSize=10"
This makes sense based on the API - PageSize/Page number are 'adjustment' parameters to the actual request that modify the response on a higher level and it's common to pass those sorts of thing separately from the payload as it gets attached to lots of different requests in a API usually.
+++ Rick ---
Thanks. That worked like a charm.
That is what I was missing. I initially put it in as a "?" parameter, but then thought that it should be an ampersand instead of a question mark, so I changed it without testing, and obviously that didn't work.
Always appreciate when people are open to helping.