openapi: 3.1.0 info: title: LinkedIn Pages Data Portability API description: >- The LinkedIn Pages Data Portability API provides access to organization data for regulatory compliance with the Digital Markets Act (DMA). This API enables data portability for: - Organization profiles and settings - Organization ACLs and authorization - Page content analytics - Feed posts, reactions, and comments - Lead generation data - Talent attraction data - Events and live video - Creator analytics For comprehensive documentation, visit the [DMA Documentation](https://learn.microsoft.com/en-us/linkedin/dma/). version: 1.0.0 contact: name: LinkedIn API Support url: https://learn.microsoft.com/en-us/linkedin/ servers: - url: https://api.linkedin.com description: LinkedIn Production API Server tags: - name: Organizations description: Organization profile data retrieval - name: Organization Access Control description: Organization ACLs and authorization data - name: Page Analytics description: Organizational page content and edge analytics - name: Feed Content description: Posts, reactions, comments, and social metadata - name: Lead Generation description: Lead generation forms and responses - name: Events description: Events and live video data - name: Taxonomy description: Reference data for industries, skills, and titles - name: Identity description: Member identity and profile data - name: Business Manager description: Business manager account relationships components: securitySchemes: BearerAuth: type: http scheme: bearer description: OAuth 2.0 Bearer Token for API access schemas: OrganizationResponse: type: object description: Organization profile data properties: id: type: integer format: int64 description: Organization ID example: 10002687 name: $ref: '#/components/schemas/LocalizedString' description: $ref: '#/components/schemas/LocalizedString' tagline: $ref: '#/components/schemas/LocalizedString' localizedName: type: string example: "Acme Corporation" localizedDescription: type: string example: "Leading provider of innovative solutions" localizedTagline: type: string example: "Innovation at its best" vanityName: type: string example: "acme-corp" organizationType: type: string enum: - PUBLIC_COMPANY - PRIVATELY_HELD - GOVERNMENT_AGENCY - NON_PROFIT - PARTNERSHIP example: "PRIVATELY_HELD" staffCountRange: type: string enum: - SIZE_1 - SIZE_2_TO_10 - SIZE_11_TO_50 - SIZE_51_TO_200 - SIZE_201_TO_500 - SIZE_501_TO_1000 - SIZE_1001_TO_5000 - SIZE_5001_TO_10000 - SIZE_10001_OR_MORE example: "SIZE_201_TO_500" industriesV2: type: array items: type: string example: - "urn:li:industry:33" logoV2: $ref: '#/components/schemas/ImageReference' coverPhotoV2: $ref: '#/components/schemas/ImageReference' locations: type: array items: $ref: '#/components/schemas/OrganizationLocation' foundedOn: $ref: '#/components/schemas/DateInfo' entityStatus: type: string enum: - ACTIVE - INACTIVE example: "ACTIVE" created: $ref: '#/components/schemas/Timestamp' lastModified: $ref: '#/components/schemas/Timestamp' LocalizedString: type: object properties: localized: type: object additionalProperties: type: string example: en_US: "Acme Corporation" preferredLocale: $ref: '#/components/schemas/Locale' Locale: type: object properties: country: type: string example: "US" language: type: string example: "en" ImageReference: type: object properties: cropped: $ref: '#/components/schemas/ImageAsset' original: $ref: '#/components/schemas/ImageAsset' cropInfo: type: object properties: x: type: integer example: 0 y: type: integer example: 0 width: type: integer example: 400 height: type: integer example: 400 ImageAsset: type: object properties: downloadUrl: type: string format: uri example: "https://media.licdn.com/dms/image/..." downloadUrlExpiresAt: type: integer format: int64 example: 1710979200000 status: type: string enum: - AVAILABLE - PROCESSING - FAILED example: "AVAILABLE" OrganizationLocation: type: object properties: locationType: type: string enum: - HEADQUARTERS - OTHER example: "HEADQUARTERS" address: $ref: '#/components/schemas/Address' geoLocation: type: string example: "urn:li:geo:101308755" staffCountRange: type: string example: "SIZE_1" description: $ref: '#/components/schemas/LocalizedString' Address: type: object properties: line1: type: string example: "123 Main Street" city: type: string example: "San Francisco" geographicArea: type: string example: "California" postalCode: type: string example: "94102" country: type: string example: "US" DateInfo: type: object properties: year: type: integer example: 2001 month: type: integer example: 1 day: type: integer example: 15 Timestamp: type: object properties: time: type: integer format: int64 example: 1702693664000 BatchOrganizationResponse: type: object properties: results: type: object additionalProperties: $ref: '#/components/schemas/OrganizationResponse' statuses: type: object additionalProperties: type: integer errors: type: object additionalProperties: $ref: '#/components/schemas/ErrorDetail' OrganizationAclResponse: type: object properties: elements: type: array items: $ref: '#/components/schemas/OrganizationAcl' paging: $ref: '#/components/schemas/Paging' OrganizationAcl: type: object properties: organization: type: string example: "urn:li:organization:10002687" roleAssignee: type: string example: "urn:li:person:ABC123" role: type: string enum: - ADMINISTRATOR - CONTENT_ADMIN - ANALYST - RECRUITING_POSTER example: "ADMINISTRATOR" state: type: string enum: - APPROVED - PENDING example: "APPROVED" created: $ref: '#/components/schemas/Timestamp' PostResponse: type: object properties: elements: type: array items: $ref: '#/components/schemas/Post' paging: $ref: '#/components/schemas/Paging' Post: type: object properties: id: type: string example: "urn:li:share:7012345678901234567" author: type: string example: "urn:li:organization:10002687" commentary: type: string example: "Exciting news from our team!" visibility: type: string enum: - PUBLIC - CONNECTIONS example: "PUBLIC" lifecycleState: type: string enum: - PUBLISHED - DRAFT example: "PUBLISHED" created: $ref: '#/components/schemas/Timestamp' lastModified: $ref: '#/components/schemas/Timestamp' ReactionResponse: type: object properties: elements: type: array items: $ref: '#/components/schemas/Reaction' paging: $ref: '#/components/schemas/Paging' Reaction: type: object properties: actor: type: string example: "urn:li:person:ABC123" reactionType: type: string enum: - LIKE - CELEBRATE - SUPPORT - LOVE - INSIGHTFUL - FUNNY example: "LIKE" created: $ref: '#/components/schemas/Timestamp' CommentResponse: type: object properties: elements: type: array items: $ref: '#/components/schemas/Comment' paging: $ref: '#/components/schemas/Paging' Comment: type: object properties: id: type: string example: "urn:li:comment:(urn:li:share:123,456)" actor: type: string example: "urn:li:person:ABC123" message: type: string example: "Great post!" created: $ref: '#/components/schemas/Timestamp' lastModified: $ref: '#/components/schemas/Timestamp' AnalyticsResponse: type: object properties: elements: type: array items: $ref: '#/components/schemas/AnalyticsRecord' paging: $ref: '#/components/schemas/Paging' AnalyticsRecord: type: object properties: dateRange: type: object properties: start: $ref: '#/components/schemas/DateInfo' end: $ref: '#/components/schemas/DateInfo' impressionCount: type: integer example: 15000 clickCount: type: integer example: 500 likeCount: type: integer example: 250 commentCount: type: integer example: 45 shareCount: type: integer example: 30 engagementRate: type: number format: double example: 0.055 LeadGenResponse: type: object properties: elements: type: array items: $ref: '#/components/schemas/LeadGenRecord' paging: $ref: '#/components/schemas/Paging' LeadGenRecord: type: object properties: id: type: string example: "urn:li:leadGenResponse:123456" formId: type: string example: "urn:li:leadGenForm:789012" submittedAt: type: integer format: int64 example: 1702693664000 answers: type: array items: $ref: '#/components/schemas/LeadGenAnswer' LeadGenAnswer: type: object properties: questionId: type: string example: "firstName" answerValue: type: string example: "John" EventResponse: type: object properties: elements: type: array items: $ref: '#/components/schemas/Event' paging: $ref: '#/components/schemas/Paging' Event: type: object properties: id: type: string example: "urn:li:event:123456" name: type: string example: "Annual Tech Conference" description: type: string example: "Join us for our annual technology showcase" organizer: type: string example: "urn:li:organization:10002687" eventType: type: string enum: - VIRTUAL - IN_PERSON - HYBRID example: "VIRTUAL" startAt: type: integer format: int64 example: 1702693664000 endAt: type: integer format: int64 example: 1702780064000 created: $ref: '#/components/schemas/Timestamp' Paging: type: object properties: start: type: integer example: 0 count: type: integer example: 25 total: type: integer example: 100 links: type: array items: type: object ErrorDetail: type: object properties: code: type: string example: "FORBIDDEN" message: type: string example: "Viewer doesn't have permission to access this resource" status: type: integer example: 403 ErrorResponse: type: object properties: status: type: integer example: 400 message: type: string example: "Invalid request parameters" serviceErrorCode: type: integer example: 100 examples: OrganizationResponseExample: summary: Organization profile response value: id: 10002687 localizedName: "Acme Corporation" localizedDescription: "Leading provider of innovative solutions" localizedTagline: "Innovation at its best" vanityName: "acme-corp" organizationType: "PRIVATELY_HELD" staffCountRange: "SIZE_201_TO_500" industriesV2: - "urn:li:industry:33" entityStatus: "ACTIVE" locations: - locationType: "HEADQUARTERS" address: line1: "123 Main Street" city: "San Francisco" geographicArea: "California" postalCode: "94102" country: "US" created: time: 1518028624160 lastModified: time: 1702644474447 BatchOrganizationResponseExample: summary: Batch organization response value: results: "10002687": id: 10002687 localizedName: "Acme Corporation" entityStatus: "ACTIVE" statuses: "10002687": 200 errors: {} OrganizationAclResponseExample: summary: Organization ACL response value: elements: - organization: "urn:li:organization:10002687" roleAssignee: "urn:li:person:ABC123" role: "ADMINISTRATOR" state: "APPROVED" paging: start: 0 count: 25 total: 1 PostResponseExample: summary: Post response value: elements: - id: "urn:li:share:7012345678901234567" author: "urn:li:organization:10002687" commentary: "Exciting news from our team!" visibility: "PUBLIC" lifecycleState: "PUBLISHED" paging: start: 0 count: 25 AnalyticsResponseExample: summary: Analytics response value: elements: - dateRange: start: year: 2023 month: 12 day: 1 end: year: 2023 month: 12 day: 31 impressionCount: 15000 clickCount: 500 likeCount: 250 commentCount: 45 shareCount: 30 engagementRate: 0.055 paging: start: 0 count: 25 ErrorResponseExample: summary: Error response value: status: 400 message: "Invalid request parameters" serviceErrorCode: 100 parameters: LinkedInVersionHeader: name: LinkedIn-Version in: header required: true description: LinkedIn API version in YYYYMM format schema: type: string example: "202312" RestliProtocolVersionHeader: name: X-Restli-Protocol-Version in: header required: true description: Rest.li protocol version schema: type: string example: "2.0.0" OrganizationIdPath: name: organizationId in: path required: true description: Organization identifier schema: type: string example: "10002687" IdsQuery: name: ids in: query required: true description: List of entity IDs to retrieve schema: type: string example: "List(10002687,10002688)" QueryTypeParameter: name: q in: query required: true description: Query type for finder operations schema: type: string example: "roleAssignee" RoleParameter: name: role in: query required: false description: Role filter for ACL queries schema: type: string enum: - ADMINISTRATOR - CONTENT_ADMIN - ANALYST example: "ADMINISTRATOR" StartParameter: name: start in: query required: false description: Pagination start index schema: type: integer example: 0 CountParameter: name: count in: query required: false description: Number of results to return schema: type: integer example: 25 security: - BearerAuth: [] paths: /rest/dmaOrganizations: get: operationId: batchGetOrganizations tags: - Organizations summary: LinkedIn Batch Get Organizations description: >- Retrieves multiple organization profiles in a single request for data portability compliance. Returns organization details including name, description, locations, and settings. x-microcks-operation: dispatcher: FALLBACK dispatcherRules: | { "dispatcher": "FALLBACK", "dispatcherRules": "" } delay: 100 parameters: - $ref: '#/components/parameters/LinkedInVersionHeader' - $ref: '#/components/parameters/RestliProtocolVersionHeader' - $ref: '#/components/parameters/IdsQuery' responses: '200': description: Successfully retrieved organizations content: application/json: schema: $ref: '#/components/schemas/BatchOrganizationResponse' examples: SuccessResponse: $ref: '#/components/examples/BatchOrganizationResponseExample' '400': description: Bad request - invalid parameters content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: BadRequestError: $ref: '#/components/examples/ErrorResponseExample' '401': description: Unauthorized - invalid or missing authentication content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /rest/dmaOrganizations/{organizationId}: get: operationId: getOrganization tags: - Organizations summary: LinkedIn Get Organization description: >- Retrieves a single organization profile by ID for data portability compliance. Returns comprehensive organization details including profile, settings, and metadata. x-microcks-operation: dispatcher: FALLBACK dispatcherRules: | { "dispatcher": "FALLBACK", "dispatcherRules": "" } delay: 100 parameters: - $ref: '#/components/parameters/LinkedInVersionHeader' - $ref: '#/components/parameters/RestliProtocolVersionHeader' - $ref: '#/components/parameters/OrganizationIdPath' responses: '200': description: Successfully retrieved organization content: application/json: schema: $ref: '#/components/schemas/OrganizationResponse' examples: SuccessResponse: $ref: '#/components/examples/OrganizationResponseExample' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '403': description: Forbidden - insufficient permissions content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '404': description: Organization not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /rest/dmaOrganizationAcls: get: operationId: getOrganizationAcls tags: - Organization Access Control summary: LinkedIn Get Organization ACLs description: >- Retrieves organization access control list entries showing role assignments for organization administrators and content managers. x-microcks-operation: dispatcher: FALLBACK dispatcherRules: | { "dispatcher": "FALLBACK", "dispatcherRules": "" } delay: 100 parameters: - $ref: '#/components/parameters/LinkedInVersionHeader' - $ref: '#/components/parameters/RestliProtocolVersionHeader' - $ref: '#/components/parameters/QueryTypeParameter' - $ref: '#/components/parameters/RoleParameter' - $ref: '#/components/parameters/StartParameter' - $ref: '#/components/parameters/CountParameter' responses: '200': description: Successfully retrieved organization ACLs content: application/json: schema: $ref: '#/components/schemas/OrganizationAclResponse' examples: SuccessResponse: $ref: '#/components/examples/OrganizationAclResponseExample' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /rest/dmaOrganizationalPageContentAnalytics: get: operationId: getPageContentAnalytics tags: - Page Analytics summary: LinkedIn Get Page Content Analytics description: >- Retrieves content analytics data for organizational pages including impressions, clicks, engagement rates, and social interactions. x-microcks-operation: dispatcher: FALLBACK dispatcherRules: | { "dispatcher": "FALLBACK", "dispatcherRules": "" } delay: 100 parameters: - $ref: '#/components/parameters/LinkedInVersionHeader' - $ref: '#/components/parameters/RestliProtocolVersionHeader' - $ref: '#/components/parameters/QueryTypeParameter' - name: organizationUrn in: query required: true schema: type: string example: "urn:li:organization:10002687" - $ref: '#/components/parameters/StartParameter' - $ref: '#/components/parameters/CountParameter' responses: '200': description: Successfully retrieved page analytics content: application/json: schema: $ref: '#/components/schemas/AnalyticsResponse' examples: SuccessResponse: $ref: '#/components/examples/AnalyticsResponseExample' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /rest/dmaPosts: get: operationId: getPosts tags: - Feed Content summary: LinkedIn Get Posts description: >- Retrieves posts published by an organization for data portability compliance. Returns post content, visibility settings, and engagement metadata. x-microcks-operation: dispatcher: FALLBACK dispatcherRules: | { "dispatcher": "FALLBACK", "dispatcherRules": "" } delay: 100 parameters: - $ref: '#/components/parameters/LinkedInVersionHeader' - $ref: '#/components/parameters/RestliProtocolVersionHeader' - $ref: '#/components/parameters/QueryTypeParameter' - name: author in: query required: true schema: type: string example: "urn:li:organization:10002687" - $ref: '#/components/parameters/StartParameter' - $ref: '#/components/parameters/CountParameter' responses: '200': description: Successfully retrieved posts content: application/json: schema: $ref: '#/components/schemas/PostResponse' examples: SuccessResponse: $ref: '#/components/examples/PostResponseExample' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /rest/dmaReactions: get: operationId: getReactions tags: - Feed Content summary: LinkedIn Get Reactions description: >- Retrieves reactions on content for data portability compliance. Returns reaction types and actor information. x-microcks-operation: dispatcher: FALLBACK dispatcherRules: | { "dispatcher": "FALLBACK", "dispatcherRules": "" } delay: 100 parameters: - $ref: '#/components/parameters/LinkedInVersionHeader' - $ref: '#/components/parameters/RestliProtocolVersionHeader' - $ref: '#/components/parameters/QueryTypeParameter' - name: activityUrn in: query required: true schema: type: string example: "urn:li:share:7012345678901234567" - $ref: '#/components/parameters/StartParameter' - $ref: '#/components/parameters/CountParameter' responses: '200': description: Successfully retrieved reactions content: application/json: schema: $ref: '#/components/schemas/ReactionResponse' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /rest/dmaComments: get: operationId: getComments tags: - Feed Content summary: LinkedIn Get Comments description: >- Retrieves comments on content for data portability compliance. Returns comment text, author information, and timestamps. x-microcks-operation: dispatcher: FALLBACK dispatcherRules: | { "dispatcher": "FALLBACK", "dispatcherRules": "" } delay: 100 parameters: - $ref: '#/components/parameters/LinkedInVersionHeader' - $ref: '#/components/parameters/RestliProtocolVersionHeader' - $ref: '#/components/parameters/QueryTypeParameter' - name: activityUrn in: query required: true schema: type: string example: "urn:li:share:7012345678901234567" - $ref: '#/components/parameters/StartParameter' - $ref: '#/components/parameters/CountParameter' responses: '200': description: Successfully retrieved comments content: application/json: schema: $ref: '#/components/schemas/CommentResponse' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /rest/dmaLeadGenResponses: get: operationId: getLeadGenResponses tags: - Lead Generation summary: LinkedIn Get Lead Generation Responses description: >- Retrieves lead generation form responses for data portability compliance. Returns submitted form data and timestamps. x-microcks-operation: dispatcher: FALLBACK dispatcherRules: | { "dispatcher": "FALLBACK", "dispatcherRules": "" } delay: 100 parameters: - $ref: '#/components/parameters/LinkedInVersionHeader' - $ref: '#/components/parameters/RestliProtocolVersionHeader' - $ref: '#/components/parameters/QueryTypeParameter' - name: owner in: query required: true schema: type: string example: "urn:li:organization:10002687" - $ref: '#/components/parameters/StartParameter' - $ref: '#/components/parameters/CountParameter' responses: '200': description: Successfully retrieved lead gen responses content: application/json: schema: $ref: '#/components/schemas/LeadGenResponse' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /rest/dmaEvents: get: operationId: getEvents tags: - Events summary: LinkedIn Get Events description: >- Retrieves event data for data portability compliance. Returns event details including name, description, schedule, and organizer. x-microcks-operation: dispatcher: FALLBACK dispatcherRules: | { "dispatcher": "FALLBACK", "dispatcherRules": "" } delay: 100 parameters: - $ref: '#/components/parameters/LinkedInVersionHeader' - $ref: '#/components/parameters/RestliProtocolVersionHeader' - $ref: '#/components/parameters/QueryTypeParameter' - name: organizer in: query required: true schema: type: string example: "urn:li:organization:10002687" - $ref: '#/components/parameters/StartParameter' - $ref: '#/components/parameters/CountParameter' responses: '200': description: Successfully retrieved events content: application/json: schema: $ref: '#/components/schemas/EventResponse' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' /rest/dmaBusinessManagerAccountRelationships: get: operationId: getBusinessManagerRelationships tags: - Business Manager summary: LinkedIn Get Business Manager Account Relationships description: >- Retrieves business manager account relationships for data portability compliance. Returns relationship types and status between business manager accounts and organizations. x-microcks-operation: dispatcher: FALLBACK dispatcherRules: | { "dispatcher": "FALLBACK", "dispatcherRules": "" } delay: 100 parameters: - $ref: '#/components/parameters/LinkedInVersionHeader' - $ref: '#/components/parameters/RestliProtocolVersionHeader' - $ref: '#/components/parameters/QueryTypeParameter' - name: businessManagerAccount in: query required: true schema: type: string example: "urn:li:businessManagerAccount:21002" - $ref: '#/components/parameters/StartParameter' - $ref: '#/components/parameters/CountParameter' responses: '200': description: Successfully retrieved relationships content: application/json: schema: type: object properties: elements: type: array items: type: object properties: relationshipType: type: string example: "OWN" status: type: string example: "APPROVED" organization: type: string example: "urn:li:organization:10002687" paging: $ref: '#/components/schemas/Paging' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorResponse'