openapi: 3.0.0 servers: - url: https://api.enterprise.apigee.com/v1 info: title: Developers API description: >- Developers must register with an organization on Apigee Edge. After they are registered, developers register their apps, choose the APIs they want to use, and receive the unique API credentials (consumer keys and secrets) needed to access your APIs. version: '1.0' security: - Basic: [] - OAuth: [] paths: "/organizations/{org_name}/developers": get: tags: ["Developer"] summary: List developers description: >- Lists all developers in an organization by email address. This call does not list any company developers who are a part of the organization. To get the developers associated with a specific app, specify the name of the app using the `app` query parameter. With Apigee Edge for Public Cloud: * The limit on the number of developers returned is 1000. * Paginate the list of developers returned using the `startKey` and `count` query parameters. operationId: listDevelopers parameters: - $ref: '#/components/parameters/org_name' - $ref: '#/components/parameters/expand' - $ref: '#/components/parameters/count' - $ref: '#/components/parameters/startKey' - $ref: '#/components/parameters/app' responses: '200': description: OK content: application/json: schema: oneOf: - type: array items: type: string - $ref: '#/components/schemas/Developers' example: - developer1 - developer2 '400': description: Bad request post: tags: ["Developer"] summary: Create developer description: >- Creates a profile for a developer in an organization. After the developer is created, they can register an app and receive an API key. The developer is always created with a status of `active`. To set the status explicitly, use the Set developer status API. When creating a developer, you can define one or more monetization attributes as custom attributes. For more information about the monetization attributes, see Configuring monetization attributes. For example: ``` { "email" : "developer_email", "firstName" : "first_name", "lastName" : "last_name", "userName" : "user_name", "attributes" : [{ "name": "MINT_BILLING_TYPE", "value": "one of PREPAID | POSTPAID" }] } ``` operationId: createDeveloper parameters: - $ref: '#/components/parameters/org_name' responses: '201': description: Created content: application/json: schema: $ref: '#/components/schemas/Developer' example: apps: - app1 - app2 companies: [] email: ahamilton@example.com developerId: 4707ceee-1234-abcd firstName: Alex lastName: Hamilton userName: ahamilton@example.com organizationName: myorg status: active attributes: - name: ADMIN_EMAIL value: admin@example.com createdAt: 1486474235912 createdBy: admin@example.com lastModifiedAt: 1486474783590 lastModifiedBy: admin@example.com '400': description: Bad request requestBody: description: Developer details. content: application/json: schema: $ref: '#/components/schemas/DeveloperRequest' example: email: ahamilton@example.com firstName: Alex lastName: Hamilton userName: ahamilton@example.com attributes: - name: ADMIN_EMAIL value: admin@example.com "/organizations/{org_name}/developers/{developer_email}": get: tags: ["Developer"] summary: Get developer description: >- Gets the profile for a developer by email address. With Apigee Edge for Public Cloud, the response includes only the first 100 apps. operationId: getDeveloper parameters: - $ref: '#/components/parameters/org_name' - $ref: '#/components/parameters/developer_email' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Developer' example: apps: - app1 - app2 companies: [] email: ahamilton@example.com developerId: 4707ceee-1234-abcd firstName: Alex lastName: Hamilton userName: ahamilton@example.com organizationName: myorg status: active attributes: - name: ADMIN_EMAIL value: admin@example.com createdAt: 1486474235912 createdBy: admin@example.com lastModifiedAt: 1486474783590 lastModifiedBy: admin@example.com '400': description: Bad request delete: tags: ["Developer"] summary: Delete developer description: >- Deletes a developer from an organization. All apps and API keys associated with the developer are also removed from the organization. **Note**: To avoid permanently deleting developers and their artifacts, consider deactivating developers instead using the Set developer status API. With Apigee Edge for Public Cloud, deletion of the developer and associated artifacts happens asynchronously. The developer is deleted immediately, but the resources associated with that developer, such as apps, may take anywhere from a few seconds to a few minutes to be deleted. operationId: deleteDeveloper parameters: - $ref: '#/components/parameters/org_name' - $ref: '#/components/parameters/developer_email' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Developer' example: apps: - app1 - app2 companies: [] email: ahamilton@example.com developerId: 4707ceee-1234-abcd firstName: Alex lastName: Hamilton userName: ahamilton@example.com organizationName: myorg status: active attributes: - name: ADMIN_EMAIL value: admin@example.com createdAt: 1486474235912 createdBy: admin@example.com lastModifiedAt: 1486474783590 lastModifiedBy: admin@example.com '400': description: Bad request post: tags: ["Developer"] summary: Set developer status description: >- Sets a developer's status to `active` or `inactive` for a specific organization. Run this API for each organization where you want to change the developer's status. By default, the status of a developer is set to `active`. If you set a developer's status to `inactive`, the API keys assigned to the developer's apps are no longer valid even though keys continue to show a status of "Approved". Inactive developers can still sign in to the developer portal and create apps; however, the new keys that get created won't be valid until the developer is set to `active`. The HTTP status code for success is: `204 No Content` operationId: setDeveloperStatus parameters: - $ref: '#/components/parameters/org_name' - $ref: '#/components/parameters/developer_email' - $ref: '#/components/parameters/action' responses: '204': description: No Content '400': description: Bad request put: tags: ["Developer"] summary: Update developer description: >- Update an existing developer profile. To add new values or update existing values, submit the new or updated portion of the developer profile along with the rest of the existing developer profile, even if no values are changing. To delete attributes from a developer profile, submit the entire profile without the attributes that you want to delete. **Apigee Edge for Public Cloud only**: OAuth access tokens and Key Management Service (KMS) entities (apps, developers, and API products) are cached for 180 seconds (current default). Any custom attributes associated with these entities also get cached for at least 180 seconds after the entity is accessed at runtime. Therefore, an ExpiresIn element on the OAuthV2 policy won't be able to expire an access token in less than 180 seconds. operationId: updateDeveloper parameters: - $ref: '#/components/parameters/org_name' - $ref: '#/components/parameters/developer_email' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Developer' example: apps: - app1 - app2 companies: [] email: ahamilton@example.com developerId: 4707ceee-1234-abcd firstName: Alex lastName: Hamilton userName: ahamilton@example.com organizationName: myorg status: active attributes: - name: ADMIN_EMAIL value: admin@example.com createdAt: 1486474235912 createdBy: admin@example.com lastModifiedAt: 1486474783590 lastModifiedBy: admin@example.com '400': description: Bad request requestBody: description: Developer details. content: application/json: schema: $ref: '#/components/schemas/DeveloperRequest' example: email: ahamilton@example.com firstName: Alex lastName: Hamilton userName: ahamilton@example.com attributes: - name: ADMIN_EMAIL value: admin@example.com "/organizations/{org_name}/developers/{developer_email}/attributes": get: tags: ["Developer"] summary: Get developer attributes description: >- Gets developer attributes and their values. operationId: getDeveloperAttributes parameters: - $ref: '#/components/parameters/org_name' - $ref: '#/components/parameters/developer_email' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Attributes' example: attribute: - name: ADMIN_EMAIL value: admin@example.com '400': description: Bad request post: tags: ["Developer"] summary: Update developer attributes description: >- Updates or creates developer attributes. This API replaces the current list of attributes with the attributes specified in the request body. This lets you update existing attributes, add new attributes, or delete existing attributes by omitting them from the request body. **Apigee Edge for Public Cloud only**: OAuth access tokens and Key Management Service (KMS) entities (apps, developers, and API products) are cached for 180 seconds (current default). Any custom attributes associated with these entities also get cached for at least 180 seconds after the entity is accessed at runtime. Therefore, an ExpiresIn element on the OAuthV2 policy won't be able to expire an access token in less than 180 seconds. operationId: updateDeveloperAttributes parameters: - $ref: '#/components/parameters/org_name' - $ref: '#/components/parameters/developer_email' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Attributes' example: attribute: - name: ADMIN_EMAIL value: admin@example.com '400': description: Bad request requestBody: description: Developer attributes. content: application/json: schema: $ref: '#/components/schemas/Attributes' example: attribute: - name: ADMIN_EMAIL value: admin@example.com "/organizations/{org_name}/developers/{developer_email}/attributes/{attribute_name}": get: tags: ["Developer"] summary: Get developer attribute description: >- Gets the value of a developer attribute. operationId: getDeveloperAttribute parameters: - $ref: '#/components/parameters/org_name' - $ref: '#/components/parameters/developer_email' - $ref: '#/components/parameters/attribute_name' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Attribute' example: name: ADMIN_EMAIL value: admin@example.com '400': description: Bad request delete: tags: ["Developer"] summary: Delete developer attribute description: >- Deletes a developer attribute. operationId: deleteDeveloperAttribute parameters: - $ref: '#/components/parameters/org_name' - $ref: '#/components/parameters/developer_email' - $ref: '#/components/parameters/attribute_name' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Attribute' example: name: ADMIN_EMAIL value: admin@example.com '400': description: Bad request post: tags: ["Developer"] summary: Update developer attribute description: >- Update the value of a developer attribute. **Apigee Edge for Public Cloud only**: OAuth access tokens and Key Management Service (KMS) entities (apps, developers, and API products) are cached for 180 seconds (current default). Any custom attributes associated with these entities also get cached for at least 180 seconds after the entity is accessed at runtime. Therefore, an ExpiresIn element on the OAuthV2 policy won't be able to expire an access token in less than 180 seconds. operationId: updateDeveloperAttribute parameters: - $ref: '#/components/parameters/org_name' - $ref: '#/components/parameters/developer_email' - $ref: '#/components/parameters/attribute_name' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Attribute' example: name: ADMIN_EMAIL value: admin@example.com '400': description: Bad request requestBody: description: Developer attribute. content: application/json: schema: type: object properties: value: type: string description: Value of attribute. example: value: admin@example.com components: securitySchemes: Basic: type: http scheme: basic OAuth: type: apiKey name: Authorization in: header parameters: org_name: in: path name: org_name required: true schema: type: string description: Organization name. developer_email: in: path name: developer_email required: true schema: type: string description: Email address for the developer. attribute_name: in: path name: attribute_name required: true schema: type: string description: Name of the attribute. action: in: query name: action required: true schema: type: string description: Status of developer. Set to `active` or `inactive`. app: in: query name: app required: false schema: type: string description: Name of the app for which you want to return associated developers. count: in: query name: count required: false schema: type: integer description: >- **Apigee Edge for Public Cloud only**. Number of developers to return in the API call. The limit is 1000. Use with the `startKey` parameter to provide more targeted filtering. expand: in: query name: expand required: false schema: type: boolean description: >- Flag that specifies whether to view expanded details for each developer. Set to `true` to view expanded details. Defaults to `false`. startKey: in: query name: startKey required: false schema: type: string description: >- **Apigee Edge for Public Cloud only**. Email of a developer from which to start displaying the list of developers. For example, if the an unfiltered list returns: ``` westley@example.com fezzik@example.com buttercup@example.com ``` If your `startKey` is `fezzik@example.com`, the returned list will be: ``` fezzik@example.com buttercup@example.com ``` schemas: Developers: description: List of developer details. type: object properties: developer: type: array items: $ref: '#/components/schemas/Developer' example: developer: - apps: - app1 - app2 companies: [] email: ahamilton@example.com developerId: 4707ceee-1234-abcd firstName: Alex lastName: Hamilton userName: ahamilton@example.com organizationName: myorg status: active attributes: - name: ADMIN_EMAIL value: admin@example.com createdAt: 1486474235912 createdBy: admin@example.com lastModifiedAt: 1486474783590 lastModifiedBy: admin@excample.com Developer: description: Developer details. type: object properties: apps: description: >- Output only. List of apps associated with the developer. type: array items: type: string attributes: description: >- List of attributes that can be used to extend the default developer profile. With Apigee Edge for Public Cloud, the custom attribute limit is 18. type: array items: $ref: '#/components/schemas/Attribute' companies: description: >- Output only. List of companies associated with the developer. type: array items: type: string createdAt: format: int description: Output only. Time the developer was created in milliseconds since epoch. type: integer createdBy: description: Output only. Email address of the developer that created the developer. type: string developerId: description: >- ID of the developer. Generated internally by Apigee and not guaranteed to stay consistent over time. type: string email: description: >- Email address of the developer. This value is used to uniquely identify the developer in Apigee Edge. type: string firstName: description: First name of the developer. type: string lastName: description: Last name of the developer. type: string lastModifiedAt: format: int description: Output only. Last modified time as milliseconds since epoch. type: integer lastModifiedBy: description: Output only. Email of developer that last modified the app. type: string organizationName: description: Output only. Name of the organization associated with the developer. type: string status: description: Status of the developer. Valid values are `active` and `inactive`. userName: description: Username. Not used by Apigee. type: string DeveloperRequest: description: Developer request. type: object required: - email - firstName - lastName - userName properties: attributes: description: >- List of attributes that can be used to extend the default developer profile. With Apigee Edge for Public Cloud, the custom attribute limit is 18. type: array items: $ref: '#/components/schemas/Attribute' email: description: >- Email address of the developer. This value is used to uniquely identify the developer in Apigee Edge. type: string firstName: description: First name of the developer. type: string lastName: description: Last name of the developer. type: string userName: description: Username. Not used by Apigee. type: string Attributes: description: Developer attributes. type: object properties: attribute: type: array items: $ref: '#/components/schemas/Attribute' Attribute: description: Developer attribute name and value. type: object properties: name: description: Name of attribute. type: string value: description: Value of attribute. type: string