Salesforce System API (SAPI) v1.3.0
Scroll down for code samples, example requests and responses. Select a language for code samples from the tabs above or the mobile navigation menu.
System API exposing core Salesforce objects for the Portfolio.
Authentication Layers
- System API Authentication: System-to-system authentication using explicit API Key headers (
client_id,client_secret).- Enforcement: Enforced by MuleSoft API Manager policies or Salesforce Apex Custom Metadata validation logic.
- Rationale: See ADR-017 (SAS.md). API Key enforcement was selected over OAuth2 for parity across implementation stacks and simplified zero-budget governance.
- Backend Integration: OAuth2 Client Credentials used for API-to-Salesforce connectivity.
- Management: Managed internally within the runtime engine (MuleSoft/AWS Lambda); credentials are never exposed or stored client-side.
Architecture & Governance
- Read-Only Design: This System API is strictly read-only (GET methods only) by design to minimize attack surface and enforce unidirectional data flow.
- ID Strategy: All
idfields utilize strictly 18-character Salesforce Case-Insensitive IDs. - Traceability: Each API resource maps 1:1 to a corresponding DataWeave Logic (DWL) file.
Non-Functional Requirements (NFRs)
- Observability:
X-Request-Idmandatory in Request/Response for distributed tracing. - Latency: Target < 500ms for internal processing.
- Resilience: Rate Limits defined with
429responses andRetry-Afterheaders. - Caching Strategy:
- Public Data (Skills, Projects, Junctions):
Cache-Control: max-age=300, public. - Private Data (Contact, Config):
Cache-Control: max-age=300, privateorno-store.
- Public Data (Skills, Projects, Junctions):
Design Constraints & Trade-offs
- Pagination: Offset-based pagination implemented for simplicity (<200 records).
- Enterprise Note: For volumes >2,000, this would be refactored to Keyset/Cursor Pagination (
WHERE Id > lastSeenId).
- Enterprise Note: For volumes >2,000, this would be refactored to Keyset/Cursor Pagination (
- Versioning: Header version (
X-API-Version) takes precedence over URL versioning.
Base URLs:
-
https://{domain}/services/apexrest/sapi/v1
-
domain - The Salesforce Experience Cloud domain. Default: rbumstead-dev-ed.develop.my.site.com
- rbumstead-dev-ed.develop.my.site.com
-
Email: Ryan Bumstead License: MIT
Authentication
- API Key (ApiClientId)
- Parameter Name: client_id, in: header. API Client Identifier. Not to be confused with OAuth2 Client ID. Enforced via API Manager policies or Salesforce Custom Metadata.
- API Key (ApiClientSecret)
- Parameter Name: client_secret, in: header. API Client Secret. Used in conjunction with
client_idfor system-to-system authentication.
- Parameter Name: client_secret, in: header. API Client Secret. Used in conjunction with
Monitoring
Health checks and observability endpoints.
getHealth
Code samples
const headers = {
'Accept':'application/json'
};
fetch('https://{domain}/services/apexrest/sapi/v1/health',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
GET /health
Health Check
Current Implementation: Shallow connectivity check (Runtime availability). Future Roadmap: Deep dependency check (Salesforce Connectivity, Cache Availability).
Example responses
200 Response
{
"status": "UP",
"checkType": "SHALLOW",
"timestamp": "2019-08-24T14:15:22Z",
"dependencies": {
"salesforce": "deferred"
}
}
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Service is UP. | HealthStatus |
Response Headers
| Status | Header | Type | Format | Description |
|---|---|---|---|---|
| 200 | X-Request-Id | string | uuid | Echoed correlation ID for distributed tracing and observability. |
| 200 | Cache-Control | string | No-cache for health checks. |
Profile
Core candidate information (Contact, Experience, Education).
getContacts
Code samples
const headers = {
'Accept':'application/json',
'X-API-Version':'v1',
'X-Request-Id':'497f6eca-6276-4993-bfeb-53cbbbba6f08',
'client_id':'API_KEY',
'client_secret':'API_KEY'
};
fetch('https://{domain}/services/apexrest/sapi/v1/contacts',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
GET /contacts
Get Contact records
Retrieves the primary contact details for the portfolio owner.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| X-API-Version | header | string | true | API Contract Version (e.g., v1). |
| X-Request-Id | header | string(uuid) | true | Correlation ID for distributed tracing (Logs/Splunk). Must be UUID. |
| contactName | query | string | false | Filter by Contact Name. |
| limit | query | integer | false | Maximum number of records to return. |
| offset | query | integer | false | Pagination offset. |
Example responses
200 Response
[
{
"id": "0035e00000B2O3DAAV",
"name": "Ryan Bumstead",
"email": "ryan@ryanbumstead.com",
"phone": "+1 555-0199",
"accountId": "0015e00000A1O3DAAV",
"accountName": "Salesforce",
"title": "Platform Architect",
"trailhead": "https://trailblazer.me/id/rbumstead",
"careerObjective": "Driving digital transformation...",
"linkedIn": "https://linkedin.com/in/ryanbumstead",
"portfolio": "https://ryanbumstead.com"
}
]
500 Response
{
"httpStatus": 500,
"errorCode": "INTERNAL_SERVER_ERROR",
"message": "Upstream Salesforce processing failed.",
"correlationId": "123e4567-e89b-12d3-a456-426614174000",
"retryable": true
}
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Successful retrieval of Contact records. | Inline |
| 400 | Bad Request | Invalid request parameters or schema validation failure. | Error |
| 401 | Unauthorized | Invalid or missing API Client Credentials. | Error |
| 403 | Forbidden | Insufficient permissions. | Error |
| 429 | Too Many Requests | API rate limit exceeded. | Error |
| 500 | Internal Server Error | Internal platform error (Apex/MuleSoft Fault). | Error |
Response Schema
Status Code 200
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| anonymous | [Contact] | false | none | [Contact Information Schema.] |
| » id | string | false | read-only | Salesforce Record ID |
| » name | string | false | none | Full Name |
| string(email) | false | none | Email Address | |
| » phone | string | false | none | Phone Number |
| » accountId | string | false | none | Related Account ID |
| » accountName | string | false | none | Related Account Name |
| » title | string | false | none | Job Title |
| » trailhead | string(uri)¦null | false | none | Trailhead Profile URL |
| » careerObjective | string¦null | false | none | Short Professional Summary |
| string(uri)¦null | false | none | LinkedIn Profile URL | |
| » portfolio | string(uri)¦null | false | none | Portfolio Website URL |
Response Headers
| Status | Header | Type | Format | Description |
|---|---|---|---|---|
| 200 | X-Request-Id | string | uuid | Echoed correlation ID for distributed tracing and observability. |
| 200 | X-Total-Count | integer | Total number of records available for this resource (Estimation). | |
| 200 | X-Has-More | boolean | Boolean indicator if more records exist beyond the current offset. | |
| 200 | Cache-Control | string | Directive to prevent caching of sensitive/dynamic data. | |
| 400 | X-Request-Id | string | uuid | Echoed correlation ID for distributed tracing and observability. |
| 401 | X-Request-Id | string | uuid | Echoed correlation ID for distributed tracing and observability. |
| 403 | X-Request-Id | string | uuid | Echoed correlation ID for distributed tracing and observability. |
| 429 | X-Request-Id | string | uuid | Echoed correlation ID for distributed tracing and observability. |
| 429 | Retry-After | integer | Seconds until the rate limit resets. | |
| 500 | X-Request-Id | string | uuid | Echoed correlation ID for distributed tracing and observability. |
getExperience
Code samples
const headers = {
'Accept':'application/json',
'X-API-Version':'v1',
'X-Request-Id':'497f6eca-6276-4993-bfeb-53cbbbba6f08',
'client_id':'API_KEY',
'client_secret':'API_KEY'
};
fetch('https://{domain}/services/apexrest/sapi/v1/experience',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
GET /experience
Get Experience records
Retrieves professional experience history.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| X-API-Version | header | string | true | API Contract Version (e.g., v1). |
| X-Request-Id | header | string(uuid) | true | Correlation ID for distributed tracing (Logs/Splunk). Must be UUID. |
| contactName | query | string | false | Filter by Contact Name. |
| employerName | query | string | false | Filter by Employer Name. |
| currentlyEmployed | query | boolean | false | Filter by active employment status. |
| limit | query | integer | false | Maximum number of records to return. |
| offset | query | integer | false | Pagination offset. |
Example responses
200 Response
[
{
"id": "a025e00000B2O3DAAV",
"employerName": "Salesforce",
"employerId": "0015e00000A1O3DAAV",
"name": "Technical Architect",
"startDate": "2023-01-01",
"endDate": "2025-01-01",
"isCurrentRole": true,
"isRemote": true,
"accomplishments": "<ul><li>Led 5 successful deployments</li></ul>",
"contactId": "0035e00000B2O3DAAV",
"contactName": "Ryan Bumstead",
"sortOrder": 10
}
]
500 Response
{
"httpStatus": 500,
"errorCode": "INTERNAL_SERVER_ERROR",
"message": "Upstream Salesforce processing failed.",
"correlationId": "123e4567-e89b-12d3-a456-426614174000",
"retryable": true
}
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Successful retrieval of Experience records. | Inline |
| 400 | Bad Request | Invalid request parameters or schema validation failure. | Error |
| 401 | Unauthorized | Invalid or missing API Client Credentials. | Error |
| 403 | Forbidden | Insufficient permissions. | Error |
| 429 | Too Many Requests | API rate limit exceeded. | Error |
| 500 | Internal Server Error | Internal platform error (Apex/MuleSoft Fault). | Error |
Response Schema
Status Code 200
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| anonymous | [Experience] | false | none | [Professional Experience Schema.] |
| » id | string | false | read-only | Salesforce Record ID |
| » employerName | string | false | none | Employer Name |
| » employerId | string | false | none | Employer Account ID |
| » name | string | false | none | Role Title |
| » startDate | string(date) | false | none | Start Date |
| » endDate | string(date)¦null | false | none | End Date (null if current) |
| » isCurrentRole | boolean | false | read-only | Is Current Role Flag |
| » isRemote | boolean | false | none | Remote Work Flag |
| » accomplishments | string¦null | false | none | DEPRECATED: Use /experience-highlights endpoint instead. This field will be removed in SAPI v2.0.0. |
| » contactId | string | false | none | Contact ID |
| » contactName | string | false | none | Contact Name |
| » sortOrder | number¦null | false | none | Sort Order |
Response Headers
| Status | Header | Type | Format | Description |
|---|---|---|---|---|
| 200 | X-Request-Id | string | uuid | Echoed correlation ID for distributed tracing and observability. |
| 200 | X-Total-Count | integer | Total number of records available for this resource (Estimation). | |
| 200 | X-Has-More | boolean | Boolean indicator if more records exist beyond the current offset. | |
| 200 | Cache-Control | string | Directive to prevent caching of sensitive/dynamic data. | |
| 400 | X-Request-Id | string | uuid | Echoed correlation ID for distributed tracing and observability. |
| 401 | X-Request-Id | string | uuid | Echoed correlation ID for distributed tracing and observability. |
| 403 | X-Request-Id | string | uuid | Echoed correlation ID for distributed tracing and observability. |
| 429 | X-Request-Id | string | uuid | Echoed correlation ID for distributed tracing and observability. |
| 429 | Retry-After | integer | Seconds until the rate limit resets. | |
| 500 | X-Request-Id | string | uuid | Echoed correlation ID for distributed tracing and observability. |
getExperienceHighlights
Code samples
const headers = {
'Accept':'application/json',
'X-API-Version':'v1',
'X-Request-Id':'497f6eca-6276-4993-bfeb-53cbbbba6f08',
'client_id':'API_KEY',
'client_secret':'API_KEY'
};
fetch('https://{domain}/services/apexrest/sapi/v1/experience-highlights',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
GET /experience-highlights
Get Experience Highlights
Fetches resume bullets. Supports Persona filtering for PAPI optimization.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| X-API-Version | header | string | true | API Contract Version (e.g., v1). |
| X-Request-Id | header | string(uuid) | true | Correlation ID for distributed tracing (Logs/Splunk). Must be UUID. |
| experienceId | query | string | false | Filter by Experience Salesforce ID. |
| persona | query | any | false | Filters records where the target field (Multi-Select Picklist) includes the specified persona(s). |
| limit | query | integer | false | Maximum number of records to return. |
| offset | query | integer | false | Pagination offset. |
Detailed descriptions
persona: Filters records where the target field (Multi-Select Picklist) includes the specified persona(s). Can be a single value or multiple values (comma-separated or repeated parameters).
Examples:
- Single:
?persona=Admin - Multiple (comma):
?persona=Admin,Developer - Multiple (repeated):
?persona=Admin&persona=Developer
Example responses
200 Response
[
{
"id": "a035e00000B2O3DAAV",
"experienceId": "a025e00000B2O3DAAV",
"experienceName": "Technical Architect",
"name": "DevOps Transformation",
"description": "Implemented CI/CD pipelines reducing deployment time by 80%.",
"sortOrder": 1,
"personaTag": "Architect"
}
]
500 Response
{
"httpStatus": 500,
"errorCode": "INTERNAL_SERVER_ERROR",
"message": "Upstream Salesforce processing failed.",
"correlationId": "123e4567-e89b-12d3-a456-426614174000",
"retryable": true
}
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Successful retrieval of Experience Highlights. | Inline |
| 400 | Bad Request | Invalid request parameters or schema validation failure. | Error |
| 401 | Unauthorized | Invalid or missing API Client Credentials. | Error |
| 403 | Forbidden | Insufficient permissions. | Error |
| 429 | Too Many Requests | API rate limit exceeded. | Error |
| 500 | Internal Server Error | Internal platform error (Apex/MuleSoft Fault). | Error |
Response Schema
Status Code 200
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| anonymous | [ExperienceHighlight] | false | none | [Experience Bullet Point Schema.] |
| » id | string | false | read-only | Salesforce Record ID |
| » experienceId | string | false | none | Parent Experience ID |
| » experienceName | string | false | none | Parent Experience Name |
| » name | string | false | none | Highlight Title |
| » description | string | false | none | Detailed Description |
| » sortOrder | number | false | none | Sort Order |
| » personaTag | Persona | false | none | Target audience for content filtering. |
Enumerated Values
| Property | Value |
|---|---|
| personaTag | Admin |
| personaTag | Developer |
| personaTag | Architect |
Response Headers
| Status | Header | Type | Format | Description |
|---|---|---|---|---|
| 200 | X-Request-Id | string | uuid | Echoed correlation ID for distributed tracing and observability. |
| 200 | X-Total-Count | integer | Total number of records available for this resource (Estimation). | |
| 200 | X-Has-More | boolean | Boolean indicator if more records exist beyond the current offset. | |
| 200 | Cache-Control | string | Directive to prevent caching of sensitive/dynamic data. | |
| 400 | X-Request-Id | string | uuid | Echoed correlation ID for distributed tracing and observability. |
| 401 | X-Request-Id | string | uuid | Echoed correlation ID for distributed tracing and observability. |
| 403 | X-Request-Id | string | uuid | Echoed correlation ID for distributed tracing and observability. |
| 429 | X-Request-Id | string | uuid | Echoed correlation ID for distributed tracing and observability. |
| 429 | Retry-After | integer | Seconds until the rate limit resets. | |
| 500 | X-Request-Id | string | uuid | Echoed correlation ID for distributed tracing and observability. |
Objects
Portfolio entities (Projects, Skills, Certifications).
getProjects
Code samples
const headers = {
'Accept':'application/json',
'X-API-Version':'v1',
'X-Request-Id':'497f6eca-6276-4993-bfeb-53cbbbba6f08',
'client_id':'API_KEY',
'client_secret':'API_KEY'
};
fetch('https://{domain}/services/apexrest/sapi/v1/projects',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
GET /projects
Get Project records
Retrieves portfolio projects.
Example Usage: /projects?isFeatured=true
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| X-API-Version | header | string | true | API Contract Version (e.g., v1). |
| X-Request-Id | header | string(uuid) | true | Correlation ID for distributed tracing (Logs/Splunk). Must be UUID. |
| status | query | ProjectStatus | false | Filter by Project Status. |
| limit | query | integer | false | Maximum number of records to return. |
| offset | query | integer | false | Pagination offset. |
| contactName | query | string | false | Filter by Contact Name. |
| projectName | query | string | false | Filter by Project Name. |
| isFeatured | query | boolean | false | Filter only featured projects. |
Enumerated Values
| Parameter | Value |
|---|---|
| status | Live – In Production |
| status | Live – Demo / Reference |
| status | Active Development |
| status | On Hold |
| status | Archived |
Example responses
200 Response
[
{
"id": "a015e00000B2O3DAAV",
"name": "Global CRM Migration",
"challenge": "Legacy system had 5M duplicate records.",
"solution": "Implemented MDM strategy using Data Cloud.",
"businessValue": "Reduced data storage costs by 40%.",
"status": "Active Development",
"dateCompleted": "2025-12-01",
"heroImageUrl": "https://assets.ryanbumstead.com/hero.jpg",
"liveUrl": "https://project-demo.com",
"repositoryUrl": "https://github.com/rdbumstead/project",
"pillar": "A",
"pillarLabel": "Pillar A: Business Architecture",
"isFeatured": true,
"contactName": "Ryan Bumstead",
"contactId": "0035e00000B2O3DAAV",
"sortOrder": 10
}
]
500 Response
{
"httpStatus": 500,
"errorCode": "INTERNAL_SERVER_ERROR",
"message": "Upstream Salesforce processing failed.",
"correlationId": "123e4567-e89b-12d3-a456-426614174000",
"retryable": true
}
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Successful retrieval of Project records. | Inline |
| 400 | Bad Request | Invalid request parameters or schema validation failure. | Error |
| 401 | Unauthorized | Invalid or missing API Client Credentials. | Error |
| 403 | Forbidden | Insufficient permissions. | Error |
| 429 | Too Many Requests | API rate limit exceeded. | Error |
| 500 | Internal Server Error | Internal platform error (Apex/MuleSoft Fault). | Error |
Response Schema
Status Code 200
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| anonymous | [Project] | false | none | [Portfolio Project Schema.] |
| » id | string | false | read-only | Salesforce Record ID |
| » name | string | false | none | Project Name |
| » challenge | string¦null | false | none | STAR Method: Situation/Task |
| » solution | string¦null | false | none | STAR Method: Action |
| » businessValue | string¦null | false | none | STAR Method: Result |
| » status | ProjectStatus | false | none | Project Lifecycle Status |
| » dateCompleted | string(date)¦null | false | none | Completion Date |
| » heroImageUrl | string(uri)¦null | false | none | Banner Image URL |
| » liveUrl | string(uri)¦null | false | none | Live Demo URL |
| » repositoryUrl | string(uri)¦null | false | none | Code Repository URL |
| » pillar | string¦null | false | none | Architectural Pillar |
| » pillarLabel | string¦null | false | none | Architectural Pillar Label |
| » isFeatured | boolean | false | none | Featured Flag for Home Page |
| » contactName | string | false | none | Owner Name |
| » contactId | string | false | none | Owner ID |
| » sortOrder | number¦null | false | none | Display Sort Order |
Enumerated Values
| Property | Value |
|---|---|
| status | Live – In Production |
| status | Live – Demo / Reference |
| status | Active Development |
| status | On Hold |
| status | Archived |
Response Headers
| Status | Header | Type | Format | Description |
|---|---|---|---|---|
| 200 | X-Request-Id | string | uuid | Echoed correlation ID for distributed tracing and observability. |
| 200 | X-Total-Count | integer | Total number of records available for this resource (Estimation). | |
| 200 | X-Has-More | boolean | Boolean indicator if more records exist beyond the current offset. | |
| 200 | Cache-Control | string | Directives for caching mechanisms in both requests and responses. | |
| 400 | X-Request-Id | string | uuid | Echoed correlation ID for distributed tracing and observability. |
| 401 | X-Request-Id | string | uuid | Echoed correlation ID for distributed tracing and observability. |
| 403 | X-Request-Id | string | uuid | Echoed correlation ID for distributed tracing and observability. |
| 429 | X-Request-Id | string | uuid | Echoed correlation ID for distributed tracing and observability. |
| 429 | Retry-After | integer | Seconds until the rate limit resets. | |
| 500 | X-Request-Id | string | uuid | Echoed correlation ID for distributed tracing and observability. |
getProjectAssets
Code samples
const headers = {
'Accept':'application/json',
'X-API-Version':'v1',
'X-Request-Id':'497f6eca-6276-4993-bfeb-53cbbbba6f08',
'client_id':'API_KEY',
'client_secret':'API_KEY'
};
fetch('https://{domain}/services/apexrest/sapi/v1/project-assets',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
GET /project-assets
Get Project Assets
Retrieves assets (images, links) associated with a project.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| X-API-Version | header | string | true | API Contract Version (e.g., v1). |
| X-Request-Id | header | string(uuid) | true | Correlation ID for distributed tracing (Logs/Splunk). Must be UUID. |
| projectId | query | string | false | Filter by Project Salesforce ID. |
| limit | query | integer | false | Maximum number of records to return. |
| offset | query | integer | false | Pagination offset. |
Example responses
200 Response
[
{
"id": "a045e00000B2O3DAAV",
"name": "Architecture Diagram",
"projectId": "a015e00000B2O3DAAV",
"projectName": "Global CRM Migration",
"type": "Image",
"externalUrl": "https://assets.ryanbumstead.com/arch.png",
"altText": "C4 Model System Context Diagram",
"sortOrder": 1
}
]
500 Response
{
"httpStatus": 500,
"errorCode": "INTERNAL_SERVER_ERROR",
"message": "Upstream Salesforce processing failed.",
"correlationId": "123e4567-e89b-12d3-a456-426614174000",
"retryable": true
}
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Successful retrieval of Project Assets. Returns empty array if none found. | Inline |
| 400 | Bad Request | Invalid request parameters or schema validation failure. | Error |
| 401 | Unauthorized | Invalid or missing API Client Credentials. | Error |
| 403 | Forbidden | Insufficient permissions. | Error |
| 429 | Too Many Requests | API rate limit exceeded. | Error |
| 500 | Internal Server Error | Internal platform error (Apex/MuleSoft Fault). | Error |
Response Schema
Status Code 200
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| anonymous | [ProjectAsset] | false | none | [Project Asset (Image/Video) Schema.] |
| » id | string | false | read-only | Salesforce Record ID |
| » name | string | false | none | Asset Name |
| » projectId | string | false | none | Parent Project ID |
| » projectName | string | false | none | Parent Project Name |
| » type | AssetType | false | none | Asset Type |
| » externalUrl | string(uri) | false | none | Asset URL |
| » altText | string¦null | false | none | Accessibility Alt Text |
| » sortOrder | number | false | none | Sort Order |
Enumerated Values
| Property | Value |
|---|---|
| type | Image |
| type | Video |
| type | Document |
| type | Link |
Response Headers
| Status | Header | Type | Format | Description |
|---|---|---|---|---|
| 200 | X-Request-Id | string | uuid | Echoed correlation ID for distributed tracing and observability. |
| 200 | X-Total-Count | integer | Total number of records available for this resource (Estimation). | |
| 200 | X-Has-More | boolean | Boolean indicator if more records exist beyond the current offset. | |
| 200 | Cache-Control | string | Directives for caching mechanisms in both requests and responses. | |
| 400 | X-Request-Id | string | uuid | Echoed correlation ID for distributed tracing and observability. |
| 401 | X-Request-Id | string | uuid | Echoed correlation ID for distributed tracing and observability. |
| 403 | X-Request-Id | string | uuid | Echoed correlation ID for distributed tracing and observability. |
| 429 | X-Request-Id | string | uuid | Echoed correlation ID for distributed tracing and observability. |
| 429 | Retry-After | integer | Seconds until the rate limit resets. | |
| 500 | X-Request-Id | string | uuid | Echoed correlation ID for distributed tracing and observability. |
getTestimonials
Code samples
const headers = {
'Accept':'application/json',
'X-API-Version':'v1',
'X-Request-Id':'497f6eca-6276-4993-bfeb-53cbbbba6f08',
'client_id':'API_KEY',
'client_secret':'API_KEY'
};
fetch('https://{domain}/services/apexrest/sapi/v1/testimonials',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
GET /testimonials
Get Testimonials
Retrieves received testimonials. Returns only records where Approved__c = true.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| X-API-Version | header | string | true | API Contract Version (e.g., v1). |
| X-Request-Id | header | string(uuid) | true | Correlation ID for distributed tracing (Logs/Splunk). Must be UUID. |
| limit | query | integer | false | Maximum number of records to return. |
| offset | query | integer | false | Pagination offset. |
Example responses
200 Response
[
{
"id": "a055e00000B2O3DAAV",
"name": "Testimonial from Jane Doe",
"authorName": "Jane Doe",
"authorTitle": "CTO, Tech Corp",
"avatarUrl": "https://linkedin.com/image/jane.jpg",
"relationshipType": "Manager",
"vibeMode": "Professional",
"context": "Worked together on the Q1 digital transformation."
}
]
500 Response
{
"httpStatus": 500,
"errorCode": "INTERNAL_SERVER_ERROR",
"message": "Upstream Salesforce processing failed.",
"correlationId": "123e4567-e89b-12d3-a456-426614174000",
"retryable": true
}
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Successful retrieval of Testimonials. Returns empty array if none found. | Inline |
| 400 | Bad Request | Invalid request parameters or schema validation failure. | Error |
| 401 | Unauthorized | Invalid or missing API Client Credentials. | Error |
| 403 | Forbidden | Insufficient permissions. | Error |
| 429 | Too Many Requests | API rate limit exceeded. | Error |
| 500 | Internal Server Error | Internal platform error (Apex/MuleSoft Fault). | Error |
Response Schema
Status Code 200
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| anonymous | [Testimonial] | false | none | [Social Proof Schema.] |
| » id | string | false | read-only | Salesforce Record ID |
| » name | string | false | none | Testimonial Name |
| » authorName | string | false | none | Author Name |
| » authorTitle | string¦null | false | none | Author Title |
| » avatarUrl | string(uri)¦null | false | none | Author Avatar URL |
| » relationshipType | RelationshipType | false | none | Professional Relationship |
| » vibeMode | VibeMode | false | none | Tone/Style Category |
| » context | string¦null | false | none | Context of Work |
Enumerated Values
| Property | Value |
|---|---|
| relationshipType | Manager |
| relationshipType | Peer |
| relationshipType | Client |
| relationshipType | Recruiter |
| relationshipType | Fan |
| vibeMode | Professional |
| vibeMode | Casual |
Response Headers
| Status | Header | Type | Format | Description |
|---|---|---|---|---|
| 200 | X-Request-Id | string | uuid | Echoed correlation ID for distributed tracing and observability. |
| 200 | X-Total-Count | integer | Total number of records available for this resource (Estimation). | |
| 200 | X-Has-More | boolean | Boolean indicator if more records exist beyond the current offset. | |
| 200 | Cache-Control | string | Directive to prevent caching of sensitive/dynamic data. | |
| 400 | X-Request-Id | string | uuid | Echoed correlation ID for distributed tracing and observability. |
| 401 | X-Request-Id | string | uuid | Echoed correlation ID for distributed tracing and observability. |
| 403 | X-Request-Id | string | uuid | Echoed correlation ID for distributed tracing and observability. |
| 429 | X-Request-Id | string | uuid | Echoed correlation ID for distributed tracing and observability. |
| 429 | Retry-After | integer | Seconds until the rate limit resets. | |
| 500 | X-Request-Id | string | uuid | Echoed correlation ID for distributed tracing and observability. |
getAccounts
Code samples
const headers = {
'Accept':'application/json',
'X-API-Version':'v1',
'X-Request-Id':'497f6eca-6276-4993-bfeb-53cbbbba6f08',
'client_id':'API_KEY',
'client_secret':'API_KEY'
};
fetch('https://{domain}/services/apexrest/sapi/v1/accounts',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
GET /accounts
Get Account records
Retrieves related account/employer records.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| X-API-Version | header | string | true | API Contract Version (e.g., v1). |
| X-Request-Id | header | string(uuid) | true | Correlation ID for distributed tracing (Logs/Splunk). Must be UUID. |
| accountName | query | string | false | Filter by Account Name. |
| limit | query | integer | false | Maximum number of records to return. |
| offset | query | integer | false | Pagination offset. |
Example responses
200 Response
[
{
"id": "0015e00000A1O3DAAV",
"name": "Salesforce",
"industry": "Technology",
"abbreviation": "SFDC"
}
]
500 Response
{
"httpStatus": 500,
"errorCode": "INTERNAL_SERVER_ERROR",
"message": "Upstream Salesforce processing failed.",
"correlationId": "123e4567-e89b-12d3-a456-426614174000",
"retryable": true
}
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Successful retrieval of Account records. | Inline |
| 400 | Bad Request | Invalid request parameters or schema validation failure. | Error |
| 401 | Unauthorized | Invalid or missing API Client Credentials. | Error |
| 403 | Forbidden | Insufficient permissions. | Error |
| 429 | Too Many Requests | API rate limit exceeded. | Error |
| 500 | Internal Server Error | Internal platform error (Apex/MuleSoft Fault). | Error |
Response Schema
Status Code 200
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| anonymous | [Account] | false | none | [Account/Employer Schema.] |
| » id | string | false | read-only | Salesforce Record ID |
| » name | string | false | none | Account Name |
| » industry | string¦null | false | none | Industry |
| » abbreviation | string¦null | false | none | Abbreviation |
Response Headers
| Status | Header | Type | Format | Description |
|---|---|---|---|---|
| 200 | X-Request-Id | string | uuid | Echoed correlation ID for distributed tracing and observability. |
| 200 | X-Total-Count | integer | Total number of records available for this resource (Estimation). | |
| 200 | X-Has-More | boolean | Boolean indicator if more records exist beyond the current offset. | |
| 200 | Cache-Control | string | Directives for caching mechanisms in both requests and responses. | |
| 400 | X-Request-Id | string | uuid | Echoed correlation ID for distributed tracing and observability. |
| 401 | X-Request-Id | string | uuid | Echoed correlation ID for distributed tracing and observability. |
| 403 | X-Request-Id | string | uuid | Echoed correlation ID for distributed tracing and observability. |
| 429 | X-Request-Id | string | uuid | Echoed correlation ID for distributed tracing and observability. |
| 429 | Retry-After | integer | Seconds until the rate limit resets. | |
| 500 | X-Request-Id | string | uuid | Echoed correlation ID for distributed tracing and observability. |
getSkills
Code samples
const headers = {
'Accept':'application/json',
'X-API-Version':'v1',
'X-Request-Id':'497f6eca-6276-4993-bfeb-53cbbbba6f08',
'client_id':'API_KEY',
'client_secret':'API_KEY'
};
fetch('https://{domain}/services/apexrest/sapi/v1/skills',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
GET /skills
Get Skill records
Retrieves technical skills and proficiency scores.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| X-API-Version | header | string | true | API Contract Version (e.g., v1). |
| X-Request-Id | header | string(uuid) | true | Correlation ID for distributed tracing (Logs/Splunk). Must be UUID. |
| category | query | string | false | Filter skills by Category (e.g., ‘Development’, ‘Architecture’) |
| limit | query | integer | false | Maximum number of records to return. |
| offset | query | integer | false | Pagination offset. |
Example responses
200 Response
[
{
"id": "a075e00000B2O3DAAV",
"name": "Apex",
"displayName": "Salesforce Apex",
"category": "Development",
"proficiencyScore": 5,
"iconName": "utility:code",
"svgPathData": "M10...",
"colorHex": "#0070d2",
"categoryOrder": 10
}
]
500 Response
{
"httpStatus": 500,
"errorCode": "INTERNAL_SERVER_ERROR",
"message": "Upstream Salesforce processing failed.",
"correlationId": "123e4567-e89b-12d3-a456-426614174000",
"retryable": true
}
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Successful retrieval of Skill records. | Inline |
| 400 | Bad Request | Invalid request parameters or schema validation failure. | Error |
| 401 | Unauthorized | Invalid or missing API Client Credentials. | Error |
| 403 | Forbidden | Insufficient permissions. | Error |
| 429 | Too Many Requests | API rate limit exceeded. | Error |
| 500 | Internal Server Error | Internal platform error (Apex/MuleSoft Fault). | Error |
Response Schema
Status Code 200
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| anonymous | [Skill] | false | none | [Skill Schema.] |
| » id | string | false | read-only | Salesforce Record ID |
| » name | string | false | none | Skill Name |
| » displayName | string¦null | false | none | Display Name |
| » category | string | false | none | Skill Category |
| » proficiencyScore | number | false | none | Self-Reported Proficiency |
| » iconName | string¦null | false | none | Icon Name |
| » svgPathData | string¦null | false | none | SVG Path Data |
| » colorHex | string¦null | false | none | Category Color Hex |
| » categoryOrder | number | false | none | Category Order |
Response Headers
| Status | Header | Type | Format | Description |
|---|---|---|---|---|
| 200 | X-Request-Id | string | uuid | Echoed correlation ID for distributed tracing and observability. |
| 200 | X-Total-Count | integer | Total number of records available for this resource (Estimation). | |
| 200 | X-Has-More | boolean | Boolean indicator if more records exist beyond the current offset. | |
| 200 | Cache-Control | string | Directives for caching mechanisms in both requests and responses. | |
| 400 | X-Request-Id | string | uuid | Echoed correlation ID for distributed tracing and observability. |
| 401 | X-Request-Id | string | uuid | Echoed correlation ID for distributed tracing and observability. |
| 403 | X-Request-Id | string | uuid | Echoed correlation ID for distributed tracing and observability. |
| 429 | X-Request-Id | string | uuid | Echoed correlation ID for distributed tracing and observability. |
| 429 | Retry-After | integer | Seconds until the rate limit resets. | |
| 500 | X-Request-Id | string | uuid | Echoed correlation ID for distributed tracing and observability. |
getCertifications
Code samples
const headers = {
'Accept':'application/json',
'X-API-Version':'v1',
'X-Request-Id':'497f6eca-6276-4993-bfeb-53cbbbba6f08',
'client_id':'API_KEY',
'client_secret':'API_KEY'
};
fetch('https://{domain}/services/apexrest/sapi/v1/certifications',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
GET /certifications
Get Certification records
Retrieves professional certifications.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| X-API-Version | header | string | true | API Contract Version (e.g., v1). |
| X-Request-Id | header | string(uuid) | true | Correlation ID for distributed tracing (Logs/Splunk). Must be UUID. |
| contactName | query | string | false | Filter by Contact Name. |
| issuerName | query | string | false | Filter by Issuer Name. |
| certificationName | query | string | false | Filter by Certification Name. |
| limit | query | integer | false | Maximum number of records to return. |
| offset | query | integer | false | Pagination offset. |
Example responses
200 Response
[
{
"id": "a105e00000B2O3DAAV",
"name": "Application Architect",
"contactId": "0035e00000B2O3DAAV",
"contactName": "Ryan Bumstead",
"issuerId": "0015e00000A1O3DAAV",
"issuerName": "Salesforce",
"earnedDate": "2024-05-15"
}
]
500 Response
{
"httpStatus": 500,
"errorCode": "INTERNAL_SERVER_ERROR",
"message": "Upstream Salesforce processing failed.",
"correlationId": "123e4567-e89b-12d3-a456-426614174000",
"retryable": true
}
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Successful retrieval of Certification records. | Inline |
| 400 | Bad Request | Invalid request parameters or schema validation failure. | Error |
| 401 | Unauthorized | Invalid or missing API Client Credentials. | Error |
| 403 | Forbidden | Insufficient permissions. | Error |
| 429 | Too Many Requests | API rate limit exceeded. | Error |
| 500 | Internal Server Error | Internal platform error (Apex/MuleSoft Fault). | Error |
Response Schema
Status Code 200
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| anonymous | [Certification] | false | none | [Certification Schema.] |
| » id | string | false | read-only | Salesforce Record ID |
| » name | string | false | none | Certification Name |
| » contactId | string | false | none | Contact ID |
| » contactName | string | false | none | Contact Name |
| » issuerId | string | false | none | Issuer Account ID |
| » issuerName | string | false | none | Issuer Name |
| » earnedDate | string(date) | false | none | Date Earned |
Response Headers
| Status | Header | Type | Format | Description |
|---|---|---|---|---|
| 200 | X-Request-Id | string | uuid | Echoed correlation ID for distributed tracing and observability. |
| 200 | X-Total-Count | integer | Total number of records available for this resource (Estimation). | |
| 200 | X-Has-More | boolean | Boolean indicator if more records exist beyond the current offset. | |
| 200 | Cache-Control | string | Directives for caching mechanisms in both requests and responses. | |
| 400 | X-Request-Id | string | uuid | Echoed correlation ID for distributed tracing and observability. |
| 401 | X-Request-Id | string | uuid | Echoed correlation ID for distributed tracing and observability. |
| 403 | X-Request-Id | string | uuid | Echoed correlation ID for distributed tracing and observability. |
| 429 | X-Request-Id | string | uuid | Echoed correlation ID for distributed tracing and observability. |
| 429 | Retry-After | integer | Seconds until the rate limit resets. | |
| 500 | X-Request-Id | string | uuid | Echoed correlation ID for distributed tracing and observability. |
getEducation
Code samples
const headers = {
'Accept':'application/json',
'X-API-Version':'v1',
'X-Request-Id':'497f6eca-6276-4993-bfeb-53cbbbba6f08',
'client_id':'API_KEY',
'client_secret':'API_KEY'
};
fetch('https://{domain}/services/apexrest/sapi/v1/education',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
GET /education
Get Education records
Retrieves educational background.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| X-API-Version | header | string | true | API Contract Version (e.g., v1). |
| X-Request-Id | header | string(uuid) | true | Correlation ID for distributed tracing (Logs/Splunk). Must be UUID. |
| contactName | query | string | false | Filter by Contact Name. |
| issuerName | query | string | false | Filter by Issuer Name. |
| limit | query | integer | false | Maximum number of records to return. |
| offset | query | integer | false | Pagination offset. |
Example responses
200 Response
[
{
"id": "a115e00000B2O3DAAV",
"name": "Bachelor of Science",
"contactId": "0035e00000B2O3DAAV",
"contactName": "Ryan Bumstead",
"issuerId": "0015e00000A1O3DAAV",
"issuerName": "University of Technology",
"fieldOfStudy": "Computer Science",
"graduationDate": "2018-05-01",
"gpa": 3.8
}
]
500 Response
{
"httpStatus": 500,
"errorCode": "INTERNAL_SERVER_ERROR",
"message": "Upstream Salesforce processing failed.",
"correlationId": "123e4567-e89b-12d3-a456-426614174000",
"retryable": true
}
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Successful retrieval of Education records. | Inline |
| 400 | Bad Request | Invalid request parameters or schema validation failure. | Error |
| 401 | Unauthorized | Invalid or missing API Client Credentials. | Error |
| 403 | Forbidden | Insufficient permissions. | Error |
| 429 | Too Many Requests | API rate limit exceeded. | Error |
| 500 | Internal Server Error | Internal platform error (Apex/MuleSoft Fault). | Error |
Response Schema
Status Code 200
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| anonymous | [Education] | false | none | [Education Schema.] |
| » id | string | false | read-only | Salesforce Record ID |
| » name | string | false | none | Degree Name |
| » contactId | string | false | none | Contact ID |
| » contactName | string | false | none | Contact Name |
| » issuerId | string | false | none | University Account ID |
| » issuerName | string | false | none | University Name |
| » fieldOfStudy | string | false | none | Field of Study |
| » graduationDate | string(date) | false | none | Graduation Date |
| » gpa | number¦null | false | none | GPA |
Response Headers
| Status | Header | Type | Format | Description |
|---|---|---|---|---|
| 200 | X-Request-Id | string | uuid | Echoed correlation ID for distributed tracing and observability. |
| 200 | X-Total-Count | integer | Total number of records available for this resource (Estimation). | |
| 200 | X-Has-More | boolean | Boolean indicator if more records exist beyond the current offset. | |
| 200 | Cache-Control | string | Directives for caching mechanisms in both requests and responses. | |
| 400 | X-Request-Id | string | uuid | Echoed correlation ID for distributed tracing and observability. |
| 401 | X-Request-Id | string | uuid | Echoed correlation ID for distributed tracing and observability. |
| 403 | X-Request-Id | string | uuid | Echoed correlation ID for distributed tracing and observability. |
| 429 | X-Request-Id | string | uuid | Echoed correlation ID for distributed tracing and observability. |
| 429 | Retry-After | integer | Seconds until the rate limit resets. | |
| 500 | X-Request-Id | string | uuid | Echoed correlation ID for distributed tracing and observability. |
Junctions
Many-to-many relationships (Project-Skills, Experience-Skills).
getProjectSkills
Code samples
const headers = {
'Accept':'application/json',
'X-API-Version':'v1',
'X-Request-Id':'497f6eca-6276-4993-bfeb-53cbbbba6f08',
'client_id':'API_KEY',
'client_secret':'API_KEY'
};
fetch('https://{domain}/services/apexrest/sapi/v1/project-skills',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
GET /project-skills
Get Project-Skill Links
Retrieves junction records linking Projects to Skills.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| X-API-Version | header | string | true | API Contract Version (e.g., v1). |
| X-Request-Id | header | string(uuid) | true | Correlation ID for distributed tracing (Logs/Splunk). Must be UUID. |
| projectId | query | string | false | Filter by Project Salesforce ID. |
| limit | query | integer | false | Maximum number of records to return. |
| offset | query | integer | false | Pagination offset. |
Example responses
200 Response
[
{
"id": "a065e00000B2O3DAAV",
"projectId": "a015e00000B2O3DAAV",
"projectName": "Global CRM Migration",
"skillId": "a075e00000B2O3DAAV",
"skillName": "Apex",
"skillCategory": "Backend Development",
"skillProficiencyScore": 5
}
]
500 Response
{
"httpStatus": 500,
"errorCode": "INTERNAL_SERVER_ERROR",
"message": "Upstream Salesforce processing failed.",
"correlationId": "123e4567-e89b-12d3-a456-426614174000",
"retryable": true
}
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Successful retrieval of Project-Skill junctions. | Inline |
| 400 | Bad Request | Invalid request parameters or schema validation failure. | Error |
| 401 | Unauthorized | Invalid or missing API Client Credentials. | Error |
| 403 | Forbidden | Insufficient permissions. | Error |
| 429 | Too Many Requests | API rate limit exceeded. | Error |
| 500 | Internal Server Error | Internal platform error (Apex/MuleSoft Fault). | Error |
Response Schema
Status Code 200
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| anonymous | [ProjectSkill] | false | none | [Junction Object: Project <-> Skill.] |
| » id | string | false | read-only | Salesforce Record ID |
| » projectId | string | false | none | Project ID |
| » projectName | string | false | none | Project Name |
| » skillId | string | false | none | Skill ID |
| » skillName | string | false | none | Skill Name |
| » skillCategory | string | false | none | Skill Category |
| » skillProficiencyScore | number | false | none | Proficiency Score |
Response Headers
| Status | Header | Type | Format | Description |
|---|---|---|---|---|
| 200 | X-Request-Id | string | uuid | Echoed correlation ID for distributed tracing and observability. |
| 200 | X-Total-Count | integer | Total number of records available for this resource (Estimation). | |
| 200 | X-Has-More | boolean | Boolean indicator if more records exist beyond the current offset. | |
| 200 | Cache-Control | string | Directives for caching mechanisms in both requests and responses. | |
| 400 | X-Request-Id | string | uuid | Echoed correlation ID for distributed tracing and observability. |
| 401 | X-Request-Id | string | uuid | Echoed correlation ID for distributed tracing and observability. |
| 403 | X-Request-Id | string | uuid | Echoed correlation ID for distributed tracing and observability. |
| 429 | X-Request-Id | string | uuid | Echoed correlation ID for distributed tracing and observability. |
| 429 | Retry-After | integer | Seconds until the rate limit resets. | |
| 500 | X-Request-Id | string | uuid | Echoed correlation ID for distributed tracing and observability. |
getExperienceSkills
Code samples
const headers = {
'Accept':'application/json',
'X-API-Version':'v1',
'X-Request-Id':'497f6eca-6276-4993-bfeb-53cbbbba6f08',
'client_id':'API_KEY',
'client_secret':'API_KEY'
};
fetch('https://{domain}/services/apexrest/sapi/v1/experience-skills',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
GET /experience-skills
Get Experience-Skill Links
Retrieves junction records linking Experiences to Skills.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| X-API-Version | header | string | true | API Contract Version (e.g., v1). |
| X-Request-Id | header | string(uuid) | true | Correlation ID for distributed tracing (Logs/Splunk). Must be UUID. |
| experienceId | query | string | false | Filter by Experience Salesforce ID. |
| limit | query | integer | false | Maximum number of records to return. |
| offset | query | integer | false | Pagination offset. |
Example responses
200 Response
[
{
"id": "a085e00000B2O3DAAV",
"experienceId": "a025e00000B2O3DAAV",
"experienceName": "Technical Architect",
"skillId": "a075e00000B2O3DAAV",
"skillName": "LWC",
"skillCategory": "Frontend Development",
"skillProficiencyScore": 4
}
]
500 Response
{
"httpStatus": 500,
"errorCode": "INTERNAL_SERVER_ERROR",
"message": "Upstream Salesforce processing failed.",
"correlationId": "123e4567-e89b-12d3-a456-426614174000",
"retryable": true
}
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Successful retrieval of Experience-Skill junctions. | Inline |
| 400 | Bad Request | Invalid request parameters or schema validation failure. | Error |
| 401 | Unauthorized | Invalid or missing API Client Credentials. | Error |
| 403 | Forbidden | Insufficient permissions. | Error |
| 429 | Too Many Requests | API rate limit exceeded. | Error |
| 500 | Internal Server Error | Internal platform error (Apex/MuleSoft Fault). | Error |
Response Schema
Status Code 200
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| anonymous | [ExperienceSkill] | false | none | [Junction Object: Experience <-> Skill.] |
| » id | string | false | read-only | Salesforce Record ID |
| » experienceId | string | false | none | Experience ID |
| » experienceName | string | false | none | Experience Name |
| » skillId | string | false | none | Skill ID |
| » skillName | string | false | none | Skill Name |
| » skillCategory | string | false | none | Skill Category |
| » skillProficiencyScore | number | false | none | Proficiency Score |
Response Headers
| Status | Header | Type | Format | Description |
|---|---|---|---|---|
| 200 | X-Request-Id | string | uuid | Echoed correlation ID for distributed tracing and observability. |
| 200 | X-Total-Count | integer | Total number of records available for this resource (Estimation). | |
| 200 | X-Has-More | boolean | Boolean indicator if more records exist beyond the current offset. | |
| 200 | Cache-Control | string | Directives for caching mechanisms in both requests and responses. | |
| 400 | X-Request-Id | string | uuid | Echoed correlation ID for distributed tracing and observability. |
| 401 | X-Request-Id | string | uuid | Echoed correlation ID for distributed tracing and observability. |
| 403 | X-Request-Id | string | uuid | Echoed correlation ID for distributed tracing and observability. |
| 429 | X-Request-Id | string | uuid | Echoed correlation ID for distributed tracing and observability. |
| 429 | Retry-After | integer | Seconds until the rate limit resets. | |
| 500 | X-Request-Id | string | uuid | Echoed correlation ID for distributed tracing and observability. |
getCertificationSkills
Code samples
const headers = {
'Accept':'application/json',
'X-API-Version':'v1',
'X-Request-Id':'497f6eca-6276-4993-bfeb-53cbbbba6f08',
'client_id':'API_KEY',
'client_secret':'API_KEY'
};
fetch('https://{domain}/services/apexrest/sapi/v1/certification-skills',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
GET /certification-skills
Get Certification-Skill Links
Retrieves junction records linking Certifications to Skills.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| X-API-Version | header | string | true | API Contract Version (e.g., v1). |
| X-Request-Id | header | string(uuid) | true | Correlation ID for distributed tracing (Logs/Splunk). Must be UUID. |
| certificationId | query | string | false | Filter by Certification Salesforce ID. |
| limit | query | integer | false | Maximum number of records to return. |
| offset | query | integer | false | Pagination offset. |
Example responses
200 Response
[
{
"id": "a095e00000B2O3DAAV",
"certificationId": "a105e00000B2O3DAAV",
"certificationName": "Salesforce Certified Application Architect",
"skillId": "a075e00000B2O3DAAV",
"skillName": "Security",
"skillCategory": "Architecture",
"skillProficiencyScore": 5
}
]
500 Response
{
"httpStatus": 500,
"errorCode": "INTERNAL_SERVER_ERROR",
"message": "Upstream Salesforce processing failed.",
"correlationId": "123e4567-e89b-12d3-a456-426614174000",
"retryable": true
}
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Successful retrieval of Certification-Skill junctions. | Inline |
| 400 | Bad Request | Invalid request parameters or schema validation failure. | Error |
| 401 | Unauthorized | Invalid or missing API Client Credentials. | Error |
| 403 | Forbidden | Insufficient permissions. | Error |
| 429 | Too Many Requests | API rate limit exceeded. | Error |
| 500 | Internal Server Error | Internal platform error (Apex/MuleSoft Fault). | Error |
Response Schema
Status Code 200
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| anonymous | [CertificationSkill] | false | none | [Junction Object: Certification <-> Skill.] |
| » id | string | false | read-only | Salesforce Record ID |
| » certificationId | string | false | none | Certification ID |
| » certificationName | string | false | none | Certification Name |
| » skillId | string | false | none | Skill ID |
| » skillName | string | false | none | Skill Name |
| » skillCategory | string | false | none | Skill Category |
| » skillProficiencyScore | number | false | none | Proficiency Score |
Response Headers
| Status | Header | Type | Format | Description |
|---|---|---|---|---|
| 200 | X-Request-Id | string | uuid | Echoed correlation ID for distributed tracing and observability. |
| 200 | X-Total-Count | integer | Total number of records available for this resource (Estimation). | |
| 200 | X-Has-More | boolean | Boolean indicator if more records exist beyond the current offset. | |
| 200 | Cache-Control | string | Directives for caching mechanisms in both requests and responses. | |
| 400 | X-Request-Id | string | uuid | Echoed correlation ID for distributed tracing and observability. |
| 401 | X-Request-Id | string | uuid | Echoed correlation ID for distributed tracing and observability. |
| 403 | X-Request-Id | string | uuid | Echoed correlation ID for distributed tracing and observability. |
| 429 | X-Request-Id | string | uuid | Echoed correlation ID for distributed tracing and observability. |
| 429 | Retry-After | integer | Seconds until the rate limit resets. | |
| 500 | X-Request-Id | string | uuid | Echoed correlation ID for distributed tracing and observability. |
Configuration
Global portfolio settings.
getPortfolioConfig
Code samples
const headers = {
'Accept':'application/json',
'X-API-Version':'v1',
'X-Request-Id':'497f6eca-6276-4993-bfeb-53cbbbba6f08',
'client_id':'API_KEY',
'client_secret':'API_KEY'
};
fetch('https://{domain}/services/apexrest/sapi/v1/portfolio-config',
{
method: 'GET',
headers: headers
})
.then(function(res) {
return res.json();
}).then(function(body) {
console.log(body);
});
GET /portfolio-config
Get Portfolio Configuration
Returns the singleton Global Configuration object (Metadata-driven). Not pageable.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| X-API-Version | header | string | true | API Contract Version (e.g., v1). |
| X-Request-Id | header | string(uuid) | true | Correlation ID for distributed tracing (Logs/Splunk). Must be UUID. |
Example responses
200 Response
{
"ownerEmail": "ryan@ryanbumstead.com",
"ownerPhone": "+1 555-0199",
"linkedInUrl": "https://linkedin.com/in/ryanbumstead",
"gitHubProfileUrl": "https://github.com/ryanbumstead",
"calendlyUrl": "https://calendly.com/ryanbumstead",
"trailblazerProfileUrl": "https://trailblazer.me/id/rbumstead",
"personalWebsiteUrl": "https://ryanbumstead.com",
"careerObjective": "Looking for Principal Architect roles.",
"jiraProjectKey": "SPAP",
"gitHubRepoPath": "rdbumstead/salesforce-portfolio"
}
500 Response
{
"httpStatus": 500,
"errorCode": "INTERNAL_SERVER_ERROR",
"message": "Upstream Salesforce processing failed.",
"correlationId": "123e4567-e89b-12d3-a456-426614174000",
"retryable": true
}
Responses
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Successful retrieval of Global Configuration. | PortfolioConfig |
| 401 | Unauthorized | Invalid or missing API Client Credentials. | Error |
| 403 | Forbidden | Insufficient permissions. | Error |
| 404 | Not Found | The requested resource ID was not found. | Error |
| 429 | Too Many Requests | API rate limit exceeded. | Error |
| 500 | Internal Server Error | Internal platform error (Apex/MuleSoft Fault). | Error |
Response Headers
| Status | Header | Type | Format | Description |
|---|---|---|---|---|
| 200 | X-Request-Id | string | uuid | Echoed correlation ID for distributed tracing and observability. |
| 200 | Cache-Control | string | Directives for caching mechanisms in both requests and responses. | |
| 401 | X-Request-Id | string | uuid | Echoed correlation ID for distributed tracing and observability. |
| 403 | X-Request-Id | string | uuid | Echoed correlation ID for distributed tracing and observability. |
| 404 | X-Request-Id | string | uuid | Echoed correlation ID for distributed tracing and observability. |
| 429 | X-Request-Id | string | uuid | Echoed correlation ID for distributed tracing and observability. |
| 429 | Retry-After | integer | Seconds until the rate limit resets. | |
| 500 | X-Request-Id | string | uuid | Echoed correlation ID for distributed tracing and observability. |
Schemas
Error
{
"httpStatus": 400,
"errorCode": "BAD_REQUEST",
"message": "Offset cannot be negative.",
"retryable": false,
"correlationId": "123e4567-e89b-12d3-a456-426614174000"
}
Standard Error Response Schema.
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| httpStatus | integer | true | read-only | Standard HTTP Status Code. |
| errorCode | string | true | none | Machine-readable error code constant. |
| message | string | true | none | Human-readable error message. |
| retryable | boolean | false | none | Indicates if the client should retry the request. |
| correlationId | string(uuid) | true | none | Unique ID tracking the request. Matches X-Request-Id. |
Enumerated Values
| Property | Value |
|---|---|
| errorCode | BAD_REQUEST |
| errorCode | UNAUTHORIZED |
| errorCode | FORBIDDEN |
| errorCode | NOT_FOUND |
| errorCode | RATE_LIMIT_EXCEEDED |
| errorCode | INTERNAL_SERVER_ERROR |
| errorCode | SALESFORCE_UNAVAILABLE |
| errorCode | GATEWAY_TIMEOUT |
Persona
"Architect"
Target audience for content filtering.
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| anonymous | string | false | none | Target audience for content filtering. |
Enumerated Values
| Property | Value |
|---|---|
| anonymous | Admin |
| anonymous | Developer |
| anonymous | Architect |
ProjectStatus
"Active Development"
Project Lifecycle Status
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| anonymous | string | false | none | Project Lifecycle Status |
Enumerated Values
| Property | Value |
|---|---|
| anonymous | Live – In Production |
| anonymous | Live – Demo / Reference |
| anonymous | Active Development |
| anonymous | On Hold |
| anonymous | Archived |
AssetType
"Image"
Asset Type
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| anonymous | string | false | none | Asset Type |
Enumerated Values
| Property | Value |
|---|---|
| anonymous | Image |
| anonymous | Video |
| anonymous | Document |
| anonymous | Link |
RelationshipType
"Manager"
Professional Relationship
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| anonymous | string | false | none | Professional Relationship |
Enumerated Values
| Property | Value |
|---|---|
| anonymous | Manager |
| anonymous | Peer |
| anonymous | Client |
| anonymous | Recruiter |
| anonymous | Fan |
VibeMode
"Professional"
Tone/Style Category
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| anonymous | string | false | none | Tone/Style Category |
Enumerated Values
| Property | Value |
|---|---|
| anonymous | Professional |
| anonymous | Casual |
HealthStatus
{
"status": "UP",
"checkType": "SHALLOW",
"timestamp": "2019-08-24T14:15:22Z",
"dependencies": {
"salesforce": "deferred"
}
}
API Health Status Schema.
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| status | string | false | none | Overall API Availability. |
| checkType | string | false | none | SHALLOW = Runtime only. DEEP = Includes downstream dependencies. |
| timestamp | string(date-time) | false | none | ISO 8601 Timestamp of the health check. |
| dependencies | object | false | none | Status of downstream systems. |
| » salesforce | string | false | none | Status of Salesforce Core. |
Enumerated Values
| Property | Value |
|---|---|
| status | UP |
| status | DOWN |
| status | DEGRADED |
| checkType | SHALLOW |
| checkType | DEEP |
Contact
{
"id": "0035e00000B2O3DAAV",
"name": "Ryan Bumstead",
"email": "ryan@ryanbumstead.com",
"phone": "+1 555-0199",
"accountId": "0015e00000A1O3DAAV",
"accountName": "Salesforce",
"title": "Platform Architect",
"trailhead": "https://trailblazer.me/id/rbumstead",
"careerObjective": "Driving digital transformation...",
"linkedIn": "https://linkedin.com/in/ryanbumstead",
"portfolio": "https://ryanbumstead.com"
}
Contact Information Schema.
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| id | string | false | read-only | Salesforce Record ID |
| name | string | false | none | Full Name |
| string(email) | false | none | Email Address | |
| phone | string | false | none | Phone Number |
| accountId | string | false | none | Related Account ID |
| accountName | string | false | none | Related Account Name |
| title | string | false | none | Job Title |
| trailhead | string(uri)¦null | false | none | Trailhead Profile URL |
| careerObjective | string¦null | false | none | Short Professional Summary |
| string(uri)¦null | false | none | LinkedIn Profile URL | |
| portfolio | string(uri)¦null | false | none | Portfolio Website URL |
Project
{
"id": "a015e00000B2O3DAAV",
"name": "Global CRM Migration",
"challenge": "Legacy system had 5M duplicate records.",
"solution": "Implemented MDM strategy using Data Cloud.",
"businessValue": "Reduced data storage costs by 40%.",
"status": "Active Development",
"dateCompleted": "2025-12-01",
"heroImageUrl": "https://assets.ryanbumstead.com/hero.jpg",
"liveUrl": "https://project-demo.com",
"repositoryUrl": "https://github.com/rdbumstead/project",
"pillar": "A",
"pillarLabel": "Pillar A: Business Architecture",
"isFeatured": true,
"contactName": "Ryan Bumstead",
"contactId": "0035e00000B2O3DAAV",
"sortOrder": 10
}
Portfolio Project Schema.
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| id | string | false | read-only | Salesforce Record ID |
| name | string | false | none | Project Name |
| challenge | string¦null | false | none | STAR Method: Situation/Task |
| solution | string¦null | false | none | STAR Method: Action |
| businessValue | string¦null | false | none | STAR Method: Result |
| status | ProjectStatus | false | none | Project Lifecycle Status |
| dateCompleted | string(date)¦null | false | none | Completion Date |
| heroImageUrl | string(uri)¦null | false | none | Banner Image URL |
| liveUrl | string(uri)¦null | false | none | Live Demo URL |
| repositoryUrl | string(uri)¦null | false | none | Code Repository URL |
| pillar | string¦null | false | none | Architectural Pillar |
| pillarLabel | string¦null | false | none | Architectural Pillar Label |
| isFeatured | boolean | false | none | Featured Flag for Home Page |
| contactName | string | false | none | Owner Name |
| contactId | string | false | none | Owner ID |
| sortOrder | number¦null | false | none | Display Sort Order |
Experience
{
"id": "a025e00000B2O3DAAV",
"employerName": "Salesforce",
"employerId": "0015e00000A1O3DAAV",
"name": "Technical Architect",
"startDate": "2023-01-01",
"endDate": "2025-01-01",
"isCurrentRole": true,
"isRemote": true,
"accomplishments": "<ul><li>Led 5 successful deployments</li></ul>",
"contactId": "0035e00000B2O3DAAV",
"contactName": "Ryan Bumstead",
"sortOrder": 10
}
Professional Experience Schema.
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| id | string | false | read-only | Salesforce Record ID |
| employerName | string | false | none | Employer Name |
| employerId | string | false | none | Employer Account ID |
| name | string | false | none | Role Title |
| startDate | string(date) | false | none | Start Date |
| endDate | string(date)¦null | false | none | End Date (null if current) |
| isCurrentRole | boolean | false | read-only | Is Current Role Flag |
| isRemote | boolean | false | none | Remote Work Flag |
| accomplishments | string¦null | false | none | DEPRECATED: Use /experience-highlights endpoint instead. This field will be removed in SAPI v2.0.0. |
| contactId | string | false | none | Contact ID |
| contactName | string | false | none | Contact Name |
| sortOrder | number¦null | false | none | Sort Order |
ExperienceHighlight
{
"id": "a035e00000B2O3DAAV",
"experienceId": "a025e00000B2O3DAAV",
"experienceName": "Technical Architect",
"name": "DevOps Transformation",
"description": "Implemented CI/CD pipelines reducing deployment time by 80%.",
"sortOrder": 1,
"personaTag": "Architect"
}
Experience Bullet Point Schema.
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| id | string | false | read-only | Salesforce Record ID |
| experienceId | string | false | none | Parent Experience ID |
| experienceName | string | false | none | Parent Experience Name |
| name | string | false | none | Highlight Title |
| description | string | false | none | Detailed Description |
| sortOrder | number | false | none | Sort Order |
| personaTag | Persona | false | none | Target audience for content filtering. |
ProjectAsset
{
"id": "a045e00000B2O3DAAV",
"name": "Architecture Diagram",
"projectId": "a015e00000B2O3DAAV",
"projectName": "Global CRM Migration",
"type": "Image",
"externalUrl": "https://assets.ryanbumstead.com/arch.png",
"altText": "C4 Model System Context Diagram",
"sortOrder": 1
}
Project Asset (Image/Video) Schema.
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| id | string | false | read-only | Salesforce Record ID |
| name | string | false | none | Asset Name |
| projectId | string | false | none | Parent Project ID |
| projectName | string | false | none | Parent Project Name |
| type | AssetType | false | none | Asset Type |
| externalUrl | string(uri) | false | none | Asset URL |
| altText | string¦null | false | none | Accessibility Alt Text |
| sortOrder | number | false | none | Sort Order |
Testimonial
{
"id": "a055e00000B2O3DAAV",
"name": "Testimonial from Jane Doe",
"authorName": "Jane Doe",
"authorTitle": "CTO, Tech Corp",
"avatarUrl": "https://linkedin.com/image/jane.jpg",
"relationshipType": "Manager",
"vibeMode": "Professional",
"context": "Worked together on the Q1 digital transformation."
}
Social Proof Schema.
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| id | string | false | read-only | Salesforce Record ID |
| name | string | false | none | Testimonial Name |
| authorName | string | false | none | Author Name |
| authorTitle | string¦null | false | none | Author Title |
| avatarUrl | string(uri)¦null | false | none | Author Avatar URL |
| relationshipType | RelationshipType | false | none | Professional Relationship |
| vibeMode | VibeMode | false | none | Tone/Style Category |
| context | string¦null | false | none | Context of Work |
ProjectSkill
{
"id": "a065e00000B2O3DAAV",
"projectId": "a015e00000B2O3DAAV",
"projectName": "Global CRM Migration",
"skillId": "a075e00000B2O3DAAV",
"skillName": "Apex",
"skillCategory": "Backend Development",
"skillProficiencyScore": 5
}
Junction Object: Project <-> Skill.
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| id | string | false | read-only | Salesforce Record ID |
| projectId | string | false | none | Project ID |
| projectName | string | false | none | Project Name |
| skillId | string | false | none | Skill ID |
| skillName | string | false | none | Skill Name |
| skillCategory | string | false | none | Skill Category |
| skillProficiencyScore | number | false | none | Proficiency Score |
ExperienceSkill
{
"id": "a085e00000B2O3DAAV",
"experienceId": "a025e00000B2O3DAAV",
"experienceName": "Technical Architect",
"skillId": "a075e00000B2O3DAAV",
"skillName": "LWC",
"skillCategory": "Frontend Development",
"skillProficiencyScore": 4
}
Junction Object: Experience <-> Skill.
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| id | string | false | read-only | Salesforce Record ID |
| experienceId | string | false | none | Experience ID |
| experienceName | string | false | none | Experience Name |
| skillId | string | false | none | Skill ID |
| skillName | string | false | none | Skill Name |
| skillCategory | string | false | none | Skill Category |
| skillProficiencyScore | number | false | none | Proficiency Score |
CertificationSkill
{
"id": "a095e00000B2O3DAAV",
"certificationId": "a105e00000B2O3DAAV",
"certificationName": "Salesforce Certified Application Architect",
"skillId": "a075e00000B2O3DAAV",
"skillName": "Security",
"skillCategory": "Architecture",
"skillProficiencyScore": 5
}
Junction Object: Certification <-> Skill.
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| id | string | false | read-only | Salesforce Record ID |
| certificationId | string | false | none | Certification ID |
| certificationName | string | false | none | Certification Name |
| skillId | string | false | none | Skill ID |
| skillName | string | false | none | Skill Name |
| skillCategory | string | false | none | Skill Category |
| skillProficiencyScore | number | false | none | Proficiency Score |
PortfolioConfig
{
"ownerEmail": "ryan@ryanbumstead.com",
"ownerPhone": "+1 555-0199",
"linkedInUrl": "https://linkedin.com/in/ryanbumstead",
"gitHubProfileUrl": "https://github.com/ryanbumstead",
"calendlyUrl": "https://calendly.com/ryanbumstead",
"trailblazerProfileUrl": "https://trailblazer.me/id/rbumstead",
"personalWebsiteUrl": "https://ryanbumstead.com",
"careerObjective": "Looking for Principal Architect roles.",
"jiraProjectKey": "SPAP",
"gitHubRepoPath": "rdbumstead/salesforce-portfolio"
}
Global Config Schema (Custom Metadata).
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| ownerEmail | string(email) | false | none | Owner Email |
| ownerPhone | string¦null | false | none | Owner Phone |
| linkedInUrl | string(uri)¦null | false | none | LinkedIn URL |
| gitHubProfileUrl | string(uri)¦null | false | none | GitHub URL |
| calendlyUrl | string(uri)¦null | false | none | Calendly URL |
| trailblazerProfileUrl | string(uri)¦null | false | none | Trailhead URL |
| personalWebsiteUrl | string(uri)¦null | false | none | Personal Website URL |
| careerObjective | string¦null | false | none | Career Objective Text |
| jiraProjectKey | string | false | none | Jira Key for integration |
| gitHubRepoPath | string | false | none | GitHub Owner/Repo path for API calls |
Account
{
"id": "0015e00000A1O3DAAV",
"name": "Salesforce",
"industry": "Technology",
"abbreviation": "SFDC"
}
Account/Employer Schema.
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| id | string | false | read-only | Salesforce Record ID |
| name | string | false | none | Account Name |
| industry | string¦null | false | none | Industry |
| abbreviation | string¦null | false | none | Abbreviation |
Skill
{
"id": "a075e00000B2O3DAAV",
"name": "Apex",
"displayName": "Salesforce Apex",
"category": "Development",
"proficiencyScore": 5,
"iconName": "utility:code",
"svgPathData": "M10...",
"colorHex": "#0070d2",
"categoryOrder": 10
}
Skill Schema.
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| id | string | false | read-only | Salesforce Record ID |
| name | string | false | none | Skill Name |
| displayName | string¦null | false | none | Display Name |
| category | string | false | none | Skill Category |
| proficiencyScore | number | false | none | Self-Reported Proficiency |
| iconName | string¦null | false | none | Icon Name |
| svgPathData | string¦null | false | none | SVG Path Data |
| colorHex | string¦null | false | none | Category Color Hex |
| categoryOrder | number | false | none | Category Order |
Certification
{
"id": "a105e00000B2O3DAAV",
"name": "Application Architect",
"contactId": "0035e00000B2O3DAAV",
"contactName": "Ryan Bumstead",
"issuerId": "0015e00000A1O3DAAV",
"issuerName": "Salesforce",
"earnedDate": "2024-05-15"
}
Certification Schema.
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| id | string | false | read-only | Salesforce Record ID |
| name | string | false | none | Certification Name |
| contactId | string | false | none | Contact ID |
| contactName | string | false | none | Contact Name |
| issuerId | string | false | none | Issuer Account ID |
| issuerName | string | false | none | Issuer Name |
| earnedDate | string(date) | false | none | Date Earned |
Education
{
"id": "a115e00000B2O3DAAV",
"name": "Bachelor of Science",
"contactId": "0035e00000B2O3DAAV",
"contactName": "Ryan Bumstead",
"issuerId": "0015e00000A1O3DAAV",
"issuerName": "University of Technology",
"fieldOfStudy": "Computer Science",
"graduationDate": "2018-05-01",
"gpa": 3.8
}
Education Schema.
Properties
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| id | string | false | read-only | Salesforce Record ID |
| name | string | false | none | Degree Name |
| contactId | string | false | none | Contact ID |
| contactName | string | false | none | Contact Name |
| issuerId | string | false | none | University Account ID |
| issuerName | string | false | none | University Name |
| fieldOfStudy | string | false | none | Field of Study |
| graduationDate | string(date) | false | none | Graduation Date |
| gpa | number¦null | false | none | GPA |