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.
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/crowddev-members-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
openapi: 3.2.0
info:
title: CDP Public Members 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: Members
description: Resolve member profiles by identity.
paths:
/members:
post:
operationId: createMember
summary: Create a member profile
description: 'Create a new member profile in CDP with one or more identities.
'
tags:
- Members
security:
- OAuth2Bearer:
- write:members
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- displayName
- identities
properties:
displayName:
type: string
minLength: 1
description: Display name for the member profile.
identities:
type: array
minItems: 1
description: Initial identities for the member.
items:
$ref: '#/components/schemas/MemberIdentityInput'
example:
displayName: Jane Doe
identities:
- value: abc123
platform: lfid
type: username
source: lfxOne
verified: true
verifiedBy: jane@lfx.dev
responses:
'201':
description: Member created successfully.
content:
application/json:
schema:
type: object
required:
- memberId
properties:
memberId:
type: string
format: uuid
example:
memberId: 550e8400-e29b-41d4-a716-446655440000
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'409':
description: Identity already exists on another member.
content:
application/json:
schema:
$ref: '#/components/schemas/HttpError'
example:
error:
code: CONFLICT
message: Identity already exists on another member
/members/resolve:
post:
operationId: resolveMember
summary: Resolve a CDP member profile
description: 'Resolve memberId from identities. LFX One should always make a first request to this API to retrieve the corresponding memberId from CDP. If a member is found, use it. If not, create a member.
'
tags:
- Members
security:
- OAuth2Bearer:
- read:members
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- lfids
properties:
lfids:
type: array
description: LFX IDs to search for.
minItems: 1
items:
type: string
minLength: 1
emails:
type: array
description: Optional email addresses to include in the lookup.
items:
type: string
format: email
example:
lfids:
- abc123
emails:
- user@example.com
responses:
'200':
description: Member resolved successfully.
content:
application/json:
schema:
type: object
required:
- memberId
properties:
memberId:
type: string
format: uuid
example:
memberId: 550e8400-e29b-41d4-a716-446655440000
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
description: Profile not found.
content:
application/json:
schema:
$ref: '#/components/schemas/HttpError'
example:
error:
code: NOT_FOUND
message: Member not found
'409':
description: Multiple member profiles matched.
content:
application/json:
schema:
$ref: '#/components/schemas/HttpError'
example:
error:
code: CONFLICT
message: Multiple member profiles matched
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
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:
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.
MemberIdentityInput:
type: object
required:
- value
- platform
- type
- source
- verified
properties:
value:
type: string
minLength: 1
description: Identity value (e.g. username, email address).
platform:
type: string
minLength: 1
description: Platform name (e.g. github, lfid).
type:
type: string
enum:
- username
- email
description: Identity type.
source:
type: string
minLength: 1
description: Source system that created this identity.
verified:
type: boolean
description: Whether the identity is verified.
verifiedBy:
type: string
description: Required when `verified` is true. Identifier of who verified.
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.
'