curl --request GET \
--url https://partners.crewpass.co.uk/api/v2/employers/me/crew/{crew_unique_id}/profile \
--header 'Authorization: Bearer <token>'import requests
url = "https://partners.crewpass.co.uk/api/v2/employers/me/crew/{crew_unique_id}/profile"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://partners.crewpass.co.uk/api/v2/employers/me/crew/{crew_unique_id}/profile', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://partners.crewpass.co.uk/api/v2/employers/me/crew/{crew_unique_id}/profile",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://partners.crewpass.co.uk/api/v2/employers/me/crew/{crew_unique_id}/profile"
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(string(body))
}HttpResponse<String> response = Unirest.get("https://partners.crewpass.co.uk/api/v2/employers/me/crew/{crew_unique_id}/profile")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://partners.crewpass.co.uk/api/v2/employers/me/crew/{crew_unique_id}/profile")
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{
"crew_unique_id": "<string>",
"name": "<string>",
"rank": "<string>",
"nationality": "<string>",
"languages": [
{
"language": "<string>",
"proficiency": "<string>"
}
],
"skills": [
"<string>"
],
"years_experience": "<string>",
"bio": "<string>",
"email": "<string>",
"phone": "<string>",
"country_code": "<string>",
"profile_photo_url": "<string>",
"employment_history": [
{
"vessel_name": "<string>",
"role": "<string>",
"started_at": "<string>",
"ended_at": "<string>",
"source": "<string>"
}
],
"full_profile": false,
"date_of_birth": "<string>",
"address": {
"line1": "<string>",
"line2": "<string>",
"city": "<string>",
"state": "<string>",
"country": "<string>",
"postcode": "<string>",
"full_address": "<string>"
},
"passport": {
"nationality": "<string>",
"number": "<string>",
"expiry": "<string>"
},
"visas": [
{
"type": "<string>",
"country": "<string>",
"expiry": "<string>"
}
]
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Get a crew member's profile
A crew member’s profile, with a link to their photo.
The contact block (email, phone, country code) needs crew:contact:read.
The professional block (nationality, languages, skills, bio, years of
experience, the photo link) needs crew:professional:read.
employment_history needs crew:experience:read. The personal block (date
of birth, address, passport, visas) needs crew:personal:read. Each needs
the crew member’s consent too. Returns 404 if the crew member is not on
one of your vessels.
Requires crew:profile:read.
curl --request GET \
--url https://partners.crewpass.co.uk/api/v2/employers/me/crew/{crew_unique_id}/profile \
--header 'Authorization: Bearer <token>'import requests
url = "https://partners.crewpass.co.uk/api/v2/employers/me/crew/{crew_unique_id}/profile"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://partners.crewpass.co.uk/api/v2/employers/me/crew/{crew_unique_id}/profile', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://partners.crewpass.co.uk/api/v2/employers/me/crew/{crew_unique_id}/profile",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://partners.crewpass.co.uk/api/v2/employers/me/crew/{crew_unique_id}/profile"
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(string(body))
}HttpResponse<String> response = Unirest.get("https://partners.crewpass.co.uk/api/v2/employers/me/crew/{crew_unique_id}/profile")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://partners.crewpass.co.uk/api/v2/employers/me/crew/{crew_unique_id}/profile")
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{
"crew_unique_id": "<string>",
"name": "<string>",
"rank": "<string>",
"nationality": "<string>",
"languages": [
{
"language": "<string>",
"proficiency": "<string>"
}
],
"skills": [
"<string>"
],
"years_experience": "<string>",
"bio": "<string>",
"email": "<string>",
"phone": "<string>",
"country_code": "<string>",
"profile_photo_url": "<string>",
"employment_history": [
{
"vessel_name": "<string>",
"role": "<string>",
"started_at": "<string>",
"ended_at": "<string>",
"source": "<string>"
}
],
"full_profile": false,
"date_of_birth": "<string>",
"address": {
"line1": "<string>",
"line2": "<string>",
"city": "<string>",
"state": "<string>",
"country": "<string>",
"postcode": "<string>",
"full_address": "<string>"
},
"passport": {
"nationality": "<string>",
"number": "<string>",
"expiry": "<string>"
},
"visas": [
{
"type": "<string>",
"country": "<string>",
"expiry": "<string>"
}
]
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Authorizations
Partner API key (cpk_live_* / cpk_test_*) as a Bearer token.
Headers
Your API key, as an alternative to the Authorization: Bearer header.
Path Parameters
Response
Successful Response
A crew member's profile.
name and rank need only crew:profile:read. Four further blocks are
each filled only when their own scope is effective for the crew member
(Connect §3): the contact block (email, phone, country_code) needs
crew:contact:read; the professional block (nationality, languages,
skills, years_experience, bio, profile_photo_url) needs
crew:professional:read; employment_history needs crew:experience:read;
the personal block (date_of_birth, address, passport, visas) needs
crew:personal:read. full_profile is true only when both
crew:experience:read and crew:personal:read are effective (the old
crew:profile:full:read bundle). A null field in an ungated block means
it wasn't shared; in a gated block it means CrewPass doesn't hold that
detail.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes