|
891 | 891 | "x-opensea-auth-scopes": ["write:profile"] |
892 | 892 | } |
893 | 893 | }, |
| 894 | + "/api/v2/profile/nft-pfp": { |
| 895 | + "post": { |
| 896 | + "tags": ["Account Endpoints"], |
| 897 | + "summary": "Set NFT profile picture", |
| 898 | + "description": "Set an onchain NFT owned by the authenticated wallet as its verified profile picture. The NFT must be from a verified collection and owned by one of the account's wallets.", |
| 899 | + "operationId": "set_profile_nft_pfp", |
| 900 | + "requestBody": { |
| 901 | + "content": { |
| 902 | + "application/json": { |
| 903 | + "schema": { |
| 904 | + "$ref": "#/components/schemas/SetNftPfpRequest" |
| 905 | + } |
| 906 | + } |
| 907 | + }, |
| 908 | + "required": true |
| 909 | + }, |
| 910 | + "responses": { |
| 911 | + "200": { |
| 912 | + "description": "NFT profile picture set successfully", |
| 913 | + "content": { |
| 914 | + "application/json": { |
| 915 | + "schema": { |
| 916 | + "$ref": "#/components/schemas/NftPfpResponse" |
| 917 | + } |
| 918 | + } |
| 919 | + } |
| 920 | + }, |
| 921 | + "400": { |
| 922 | + "$ref": "#/components/responses/BadRequest" |
| 923 | + }, |
| 924 | + "401": { |
| 925 | + "$ref": "#/components/responses/Unauthorized" |
| 926 | + }, |
| 927 | + "403": { |
| 928 | + "$ref": "#/components/responses/Forbidden" |
| 929 | + } |
| 930 | + }, |
| 931 | + "security": [ |
| 932 | + { |
| 933 | + "ApiKeyAuth": [], |
| 934 | + "WalletAuth": ["write:profile"] |
| 935 | + } |
| 936 | + ], |
| 937 | + "x-opensea-auth-required": true, |
| 938 | + "x-opensea-auth-scopes": ["write:profile"] |
| 939 | + }, |
| 940 | + "delete": { |
| 941 | + "tags": ["Account Endpoints"], |
| 942 | + "summary": "Clear NFT profile picture", |
| 943 | + "description": "Clear the authenticated wallet's NFT profile picture. This operation is idempotent: it returns 200 with `success=false` when no NFT profile picture was set, and `success=true` when one was cleared.", |
| 944 | + "operationId": "clear_profile_nft_pfp", |
| 945 | + "responses": { |
| 946 | + "200": { |
| 947 | + "description": "NFT profile picture cleared", |
| 948 | + "content": { |
| 949 | + "application/json": { |
| 950 | + "schema": { |
| 951 | + "$ref": "#/components/schemas/ClearNftPfpResponse" |
| 952 | + } |
| 953 | + } |
| 954 | + } |
| 955 | + }, |
| 956 | + "401": { |
| 957 | + "$ref": "#/components/responses/Unauthorized" |
| 958 | + }, |
| 959 | + "403": { |
| 960 | + "$ref": "#/components/responses/Forbidden" |
| 961 | + } |
| 962 | + }, |
| 963 | + "security": [ |
| 964 | + { |
| 965 | + "ApiKeyAuth": [], |
| 966 | + "WalletAuth": ["write:profile"] |
| 967 | + } |
| 968 | + ], |
| 969 | + "x-opensea-auth-required": true, |
| 970 | + "x-opensea-auth-scopes": ["write:profile"] |
| 971 | + } |
| 972 | + }, |
894 | 973 | "/api/v2/profile/images": { |
895 | 974 | "post": { |
896 | 975 | "tags": ["Account Endpoints"], |
|
9536 | 9615 | }, |
9537 | 9616 | "required": ["chain", "contract_address", "token_id"] |
9538 | 9617 | }, |
| 9618 | + "NftPfpResponse": { |
| 9619 | + "type": "object", |
| 9620 | + "properties": { |
| 9621 | + "contract_address": { |
| 9622 | + "type": "string" |
| 9623 | + }, |
| 9624 | + "token_id": { |
| 9625 | + "type": "string" |
| 9626 | + }, |
| 9627 | + "chain": { |
| 9628 | + "type": "string" |
| 9629 | + }, |
| 9630 | + "collection_slug": { |
| 9631 | + "type": "string" |
| 9632 | + }, |
| 9633 | + "image_url": { |
| 9634 | + "type": "string" |
| 9635 | + }, |
| 9636 | + "is_verified": { |
| 9637 | + "type": "boolean" |
| 9638 | + } |
| 9639 | + }, |
| 9640 | + "required": [ |
| 9641 | + "chain", |
| 9642 | + "contract_address", |
| 9643 | + "image_url", |
| 9644 | + "is_verified", |
| 9645 | + "token_id" |
| 9646 | + ] |
| 9647 | + }, |
| 9648 | + "SetNftPfpRequest": { |
| 9649 | + "type": "object", |
| 9650 | + "description": "Request body for setting an NFT as the profile picture", |
| 9651 | + "properties": { |
| 9652 | + "contractAddress": { |
| 9653 | + "type": "string", |
| 9654 | + "description": "Contract address of the NFT", |
| 9655 | + "example": "0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d", |
| 9656 | + "maxLength": 200, |
| 9657 | + "minLength": 0 |
| 9658 | + }, |
| 9659 | + "tokenId": { |
| 9660 | + "type": "string", |
| 9661 | + "description": "Token ID of the NFT", |
| 9662 | + "example": 1, |
| 9663 | + "maxLength": 200, |
| 9664 | + "minLength": 0 |
| 9665 | + }, |
| 9666 | + "chain": { |
| 9667 | + "type": "string", |
| 9668 | + "description": "Chain the NFT is on", |
| 9669 | + "example": "ethereum", |
| 9670 | + "maxLength": 100, |
| 9671 | + "minLength": 0 |
| 9672 | + }, |
| 9673 | + "collectionSlug": { |
| 9674 | + "type": "string", |
| 9675 | + "description": "Collection slug of the NFT", |
| 9676 | + "maxLength": 200, |
| 9677 | + "minLength": 0 |
| 9678 | + } |
| 9679 | + }, |
| 9680 | + "required": ["chain", "contractAddress", "tokenId"] |
| 9681 | + }, |
9539 | 9682 | "UploadContext": { |
9540 | 9683 | "type": "object", |
9541 | 9684 | "description": "This response starts a three-step upload flow. First, request this context from OpenSea. Second, call the returned method at the returned URL. For POST, add every fields entry unchanged as a multipart text field, then add a file part containing the bytes. The file part must be last. Let the HTTP library generate the multipart boundary; do not set the overall multipart Content-Type header yourself. POST storage uploads normally return 204. For PUT, upload the raw bytes, use only headers explicitly required by the endpoint, and expect 200. Treat any 2xx storage response as success. The URL and fields are short-lived sensitive credentials. Do not log, persist, alter, or put them in tickets. Third, after storage succeeds, pass the returned token to the documented OpenSea API endpoint. Do not use the token before the storage upload succeeds.", |
|
16013 | 16156 | "social_media_accounts" |
16014 | 16157 | ] |
16015 | 16158 | }, |
16016 | | - "NftPfpResponse": { |
16017 | | - "type": "object", |
16018 | | - "properties": { |
16019 | | - "contract_address": { |
16020 | | - "type": "string" |
16021 | | - }, |
16022 | | - "token_id": { |
16023 | | - "type": "string" |
16024 | | - }, |
16025 | | - "chain": { |
16026 | | - "type": "string" |
16027 | | - }, |
16028 | | - "collection_slug": { |
16029 | | - "type": "string" |
16030 | | - }, |
16031 | | - "image_url": { |
16032 | | - "type": "string" |
16033 | | - }, |
16034 | | - "is_verified": { |
16035 | | - "type": "boolean" |
16036 | | - } |
16037 | | - }, |
16038 | | - "required": [ |
16039 | | - "chain", |
16040 | | - "contract_address", |
16041 | | - "image_url", |
16042 | | - "is_verified", |
16043 | | - "token_id" |
16044 | | - ] |
16045 | | - }, |
16046 | 16159 | "SocialMediaAccount": { |
16047 | 16160 | "type": "object", |
16048 | 16161 | "properties": { |
|
17010 | 17123 | }, |
17011 | 17124 | "required": ["removed"] |
17012 | 17125 | }, |
| 17126 | + "ClearNftPfpResponse": { |
| 17127 | + "type": "object", |
| 17128 | + "description": "Response for clearing the NFT profile picture", |
| 17129 | + "properties": { |
| 17130 | + "success": { |
| 17131 | + "type": "boolean", |
| 17132 | + "description": "Whether the NFT profile picture was cleared" |
| 17133 | + } |
| 17134 | + }, |
| 17135 | + "required": ["success"] |
| 17136 | + }, |
17013 | 17137 | "WalletUnlinkResponse": { |
17014 | 17138 | "type": "object", |
17015 | 17139 | "properties": { |
|
17129 | 17253 | "/api/v2/profile", |
17130 | 17254 | "/api/v2/profile/username", |
17131 | 17255 | "/api/v2/profile/images", |
| 17256 | + "/api/v2/profile/nft-pfp", |
17132 | 17257 | "/api/v2/profile/shelves", |
17133 | 17258 | "/api/v2/profile/shelves/{shelf_id}" |
17134 | 17259 | ], |
|
0 commit comments