Crowd.dev Work Experiences API

Manage and verify member work experiences (organization affiliations).

Operations 5

GET /members/{memberId}/work-experiences List work experiences #
POST /members/{memberId}/work-experiences Add a work experience #
PUT /members/{memberId}/work-experiences/{workExperienceId} Update a work experience #
PATCH /members/{memberId}/work-experiences/{workExperienceId} Verify or reject a work experience #
DELETE /members/{memberId}/work-experiences/{workExperienceId} Delete a work experience #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/crowddev-work-experiences-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

crowddev-work-experiences-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: CDP Public Work Experiences API
  version: 1.0.0
  license:
    name: Apache-2.0
    url: https://www.apache.org/licenses/LICENSE-2.0
  description: "Public REST API for the Community Data Platform (CDP). Provides transactional endpoints for identity verification, work experience management, project affiliations, and contributor lookup.\n\nTwo authentication methods are supported depending on the endpoint:\n- **OAuth 2.0 Bearer (Auth0)** — used by LFX One for member, organization,\n  and affiliation management endpoints.\n\n- **Static API Key** — bearer token with scopes managed in the CDP database.\n"
servers:
- url: https://cm.lfx.dev/api/v1
  description: Production
- url: https://lf-staging.crowd.dev/api/v1
  description: Staging
security: []
tags:
- name: Work Experiences
  description: Manage and verify member work experiences (organization affiliations).
paths:
  /members/{memberId}/work-experiences:
    get:
      operationId: getMemberWorkExperiences
      summary: List work experiences
      description: Retrieve all work experiences for a member.
      tags:
      - Work Experiences
      security:
      - OAuth2Bearer:
        - read:work-experiences
      parameters:
      - $ref: '#/components/parameters/MemberId'
      responses:
        '200':
          description: Work experiences retrieved successfully.
          content:
            application/json:
              schema:
                type: object
                required:
                - memberId
                - workExperiences
                properties:
                  memberId:
                    type: string
                    format: uuid
                  workExperiences:
                    type: array
                    items:
                      $ref: '#/components/schemas/WorkExperience'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/MemberNotFound'
    post:
      operationId: createMemberWorkExperience
      summary: Add a work experience
      description: 'Add a new work experience to a member profile. Returns 409 if a work experience with the same dates already exists.

        '
      tags:
      - Work Experiences
      security:
      - OAuth2Bearer:
        - write:work-experiences
      parameters:
      - $ref: '#/components/parameters/MemberId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WorkExperienceInput'
            example:
              organizationId: 550e8400-e29b-41d4-a716-446655440000
              jobTitle: Senior Engineer
              verified: true
              verifiedBy: admin@lfx.dev
              source: lfxOne
              startDate: '2020-01-01T00:00:00.000Z'
              endDate: null
      responses:
        '201':
          description: Work experience created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkExperience'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/MemberNotFound'
        '409':
          description: A work experience with the same dates already exists.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HttpError'
              example:
                error:
                  code: CONFLICT
                  message: A work experience with the same dates already exists
  /members/{memberId}/work-experiences/{workExperienceId}:
    put:
      operationId: updateMemberWorkExperience
      summary: Update a work experience
      description: Replace all fields of an existing work experience.
      tags:
      - Work Experiences
      security:
      - OAuth2Bearer:
        - write:work-experiences
      parameters:
      - $ref: '#/components/parameters/MemberId'
      - $ref: '#/components/parameters/WorkExperienceId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WorkExperienceInput'
      responses:
        '200':
          description: Work experience updated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkExperience'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          description: Member or work experience not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HttpError'
    patch:
      operationId: verifyMemberWorkExperience
      summary: Verify or reject a work experience
      description: 'Set a work experience as verified or rejected. When rejected (`verified: false`), the work experience is soft-deleted and affiliations are recalculated.

        '
      tags:
      - Work Experiences
      security:
      - OAuth2Bearer:
        - write:work-experiences
      parameters:
      - $ref: '#/components/parameters/MemberId'
      - $ref: '#/components/parameters/WorkExperienceId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - verified
              - verifiedBy
              properties:
                verified:
                  type: boolean
                  description: '`true` to verify, `false` to reject (soft-delete).

                    '
                verifiedBy:
                  type: string
                  description: Identifier of who performed the verification.
            example:
              verified: true
              verifiedBy: admin@lfx.dev
      responses:
        '200':
          description: Work experience updated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkExperience'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          description: Member or work experience not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HttpError'
    delete:
      operationId: deleteMemberWorkExperience
      summary: Delete a work experience
      description: 'Soft-delete a work experience from a member profile. Affiliations are automatically recalculated.

        '
      tags:
      - Work Experiences
      security:
      - OAuth2Bearer:
        - write:work-experiences
      parameters:
      - $ref: '#/components/parameters/MemberId'
      - $ref: '#/components/parameters/WorkExperienceId'
      responses:
        '204':
          description: Work experience deleted. No response body.
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          description: Member or work experience not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HttpError'
components:
  responses:
    BadRequest:
      description: Invalid request body or query parameters.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/HttpError'
          example:
            error:
              code: BAD_REQUEST
              message: Validation failed
    MemberNotFound:
      description: No member found with the given ID.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/HttpError'
          example:
            error:
              code: NOT_FOUND
              message: Member not found
    Forbidden:
      description: Authentication valid but insufficient scopes.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/HttpError'
          example:
            error:
              code: INSUFFICIENT_SCOPE
              message: Insufficient scope for this operation
    Unauthorized:
      description: Missing or invalid authentication credentials.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/HttpError'
          example:
            error:
              code: UNAUTHORIZED
              message: Invalid or missing authentication
  schemas:
    WorkExperienceInput:
      type: object
      required:
      - organizationId
      - jobTitle
      - verified
      - verifiedBy
      - source
      - startDate
      properties:
        organizationId:
          type: string
          format: uuid
        jobTitle:
          type: string
          description: Job title at the organization.
        verified:
          type: boolean
        verifiedBy:
          type: string
          description: Identifier of who verified this work experience.
        source:
          type: string
          description: Source system (e.g. lfxOne).
        startDate:
          type: string
          format: date-time
          description: Start date of the work experience.
        endDate:
          type:
          - string
          - 'null'
          format: date-time
          description: End date, or null if currently active.
    HttpError:
      type: object
      required:
      - error
      properties:
        error:
          type: object
          required:
          - code
          - message
          properties:
            code:
              type: string
              description: Machine-readable error code.
            message:
              type: string
              description: Human-readable error description.
    WorkExperience:
      type: object
      required:
      - id
      - organizationId
      - organizationName
      - organizationDomains
      - jobTitle
      - verified
      - verifiedBy
      - source
      - startDate
      - endDate
      - createdAt
      - updatedAt
      properties:
        id:
          type: string
          format: uuid
        organizationId:
          type: string
          format: uuid
        organizationName:
          type:
          - string
          - 'null'
          description: Display name of the organization.
        organizationLogo:
          type:
          - string
          - 'null'
          description: URL of the organization logo.
        organizationDomains:
          type: array
          items:
            type: string
          description: Verified primary domains for the organization, in alphabetical order.
        jobTitle:
          type:
          - string
          - 'null'
        verified:
          type: boolean
        verifiedBy:
          type:
          - string
          - 'null'
        source:
          type:
          - string
          - 'null'
          description: Source system that created this work experience.
        startDate:
          type:
          - string
          - 'null'
          format: date-time
        endDate:
          type:
          - string
          - 'null'
          format: date-time
          description: End date, or null if currently active.
        createdAt:
          type:
          - string
          - 'null'
          format: date-time
        updatedAt:
          type:
          - string
          - 'null'
          format: date-time
  parameters:
    WorkExperienceId:
      name: workExperienceId
      in: path
      required: true
      description: UUID of the work experience.
      schema:
        type: string
        format: uuid
    MemberId:
      name: memberId
      in: path
      required: true
      description: UUID of the member.
      schema:
        type: string
        format: uuid
  securitySchemes:
    OAuth2Bearer:
      type: oauth2
      description: 'OAuth 2.0 client credentials flow via Auth0. The consuming service obtains a JWT using its client ID and secret, then passes it as `Authorization: Bearer <token>`

        '
      flows:
        clientCredentials:
          tokenUrl: https://linuxfoundation.auth0.com/oauth/token
          scopes:
            read:members: Read member profiles
            write:members: Create member profiles
            read:member-identities: Read member identities
            write:member-identities: Create and verify member identities
            read:maintainer-roles: Read maintainer roles
            read:work-experiences: Read work experiences
            write:work-experiences: Create, update, verify, and delete work experiences
            read:project-affiliations: Read project affiliations
            write:project-affiliations: Override project affiliations
            read:organizations: Look up organizations
            write:organizations: Create organizations
    StaticApiKey:
      type: http
      scheme: bearer
      description: 'Static API key — pass as `Authorization: Bearer <token>`. Keys are managed in the CDP database with SHA-256 hashing, expiration, and revocation support.

        '