prod.neddy-identity-provider.iterate.iterapp.no
Open in
urlscan Pro
35.195.169.101
Public Scan
Submitted URL: https://prod.neddy-identity-provider.iterate.iterapp.no/
Effective URL: https://prod.neddy-identity-provider.iterate.iterapp.no/redoc
Submission: On July 17 via automatic, source certstream-suspicious — Scanned from NO
Effective URL: https://prod.neddy-identity-provider.iterate.iterapp.no/redoc
Submission: On July 17 via automatic, source certstream-suspicious — Scanned from NO
Form analysis
0 forms found in the DOMText Content
ReDoc requires Javascript to function. Please enable it to browse the documentation. * getIndex * getHealth * Auth * postLogin * getGet All Service Tokens * postCreate Service Token * patchUpdate Service Token * postGet Service Token * postRevoke Service Token * getFeide Auth * getLogin Feide Get * postLogout * getGet User Callback * Feide * getFeide Auth * getLogin Feide Get * postLogout * getGet User Callback * Organizations * postGet Organization Groups * postGet Group Members * getGet All Organizations * getGet Organization By Id * postCreate Organization * patchUpdate Organization * delDelete Organization * Groups * postGet Organization Groups * postGet Group Members * getImport Groups * getImport Group Members * postAdd Feide Domain * postRemove Feide Domain * getList Organizations * Users * getGet All Users * postGet Users By Login Provider Ids * getGet User * postCreate User * patchUpdate User * delDelete User API docs by Redocly FASTAPI (0.1.0) Download OpenAPI specification:Download INDEX RESPONSES 200 Successful Response get/ https://prod.neddy-identity-provider.iterate.iterapp.no/ RESPONSE SAMPLES * 200 Content type application/json Copy null HEALTH RESPONSES 200 Successful Response get/health https://prod.neddy-identity-provider.iterate.iterapp.no/health RESPONSE SAMPLES * 200 Content type application/json Copy null AUTH LOGIN AUTHORIZATIONS: HTTPBearer REQUEST BODY SCHEMA: APPLICATION/JSON login_provider_id required string (Login Provider Id) password required string (Password) RESPONSES 200 Successful Response 422 Validation Error post/auth/login https://prod.neddy-identity-provider.iterate.iterapp.no/auth/login REQUEST SAMPLES * Payload Content type application/json Copy { * "login_provider_id": "string", * "password": "string" } RESPONSE SAMPLES * 200 * 422 Content type application/json Copy Expand all Collapse all { * "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", * "login_provider_id": "string", * "login_provider_name": "feide", * "full_name": "string", * "display_name": "string", * "email": "string", * "mobile_number": "string", * "status": "active", * "role": "admin", * "organizations": [ ] } GET ALL SERVICE TOKENS Get all service tokens AUTHORIZATIONS: HTTPBearer QUERY PARAMETERS skip integer (Skip) Default: 0 limit integer (Limit) Default: 10 RESPONSES 200 Successful Response 422 Validation Error get/auth/service-token https://prod.neddy-identity-provider.iterate.iterapp.no/auth/service-token RESPONSE SAMPLES * 200 * 422 Content type application/json Copy Expand all Collapse all [ * { * "token": "string", * "service_name": "string" } ] CREATE SERVICE TOKEN Create a new, random service token and add it to the database AUTHORIZATIONS: HTTPBearer REQUEST BODY SCHEMA: APPLICATION/JSON token Token (string) or Token (null) (Token) If not provided, a random token will be generated service_name required string (Service Name) RESPONSES 200 Successful Response 422 Validation Error post/auth/service-token https://prod.neddy-identity-provider.iterate.iterapp.no/auth/service-token REQUEST SAMPLES * Payload Content type application/json Copy { * "token": "string", * "service_name": "string" } RESPONSE SAMPLES * 200 * 422 Content type application/json Copy { * "token": "string", * "service_name": "string" } UPDATE SERVICE TOKEN Update a service token AUTHORIZATIONS: HTTPBearer REQUEST BODY SCHEMA: APPLICATION/JSON token Token (string) or Token (null) (Token) If not provided, a random token will be generated service_name required string (Service Name) RESPONSES 200 Successful Response 422 Validation Error patch/auth/service-token https://prod.neddy-identity-provider.iterate.iterapp.no/auth/service-token REQUEST SAMPLES * Payload Content type application/json Copy { * "token": "string", * "service_name": "string" } RESPONSE SAMPLES * 200 * 422 Content type application/json Copy { * "token": "string", * "service_name": "string" } GET SERVICE TOKEN Get a service token by token This is a POST request because we want to hide the token from the URL AUTHORIZATIONS: HTTPBearer REQUEST BODY SCHEMA: APPLICATION/JSON token required string (Token) RESPONSES 200 Successful Response 422 Validation Error post/auth/service-token/get-token https://prod.neddy-identity-provider.iterate.iterapp.no/auth/service-token/get-token REQUEST SAMPLES * Payload Content type application/json Copy { * "token": "string" } RESPONSE SAMPLES * 200 * 422 Content type application/json Copy { * "token": "string", * "service_name": "string" } REVOKE SERVICE TOKEN Revokes a token by deleting it from the database AUTHORIZATIONS: HTTPBearer REQUEST BODY SCHEMA: APPLICATION/JSON token Token (string) or Token (null) (Token) Revoke by token service_name Service Name (string) or Service Name (null) (Service Name) Revoke by service name RESPONSES 200 Successful Response 422 Validation Error post/auth/service-token/revoke https://prod.neddy-identity-provider.iterate.iterapp.no/auth/service-token/revoke REQUEST SAMPLES * Payload Content type application/json Copy { * "token": "string", * "service_name": "string" } RESPONSE SAMPLES * 200 * 422 Content type application/json Copy null FEIDE AUTH Callback endpoint for Feide authentication. This endpoint is called by Feide after the user has authenticated. The endpoint stores the Feide Access Token in the session, retrieves the redirect URL and then redirects the user back to the original service. Args: request (Request): The request object. Returns: RedirectResponse: Redirects to the original service. RESPONSES 200 Successful Response get/auth/external/feide/auth https://prod.neddy-identity-provider.iterate.iterapp.no/auth/external/feide/auth RESPONSE SAMPLES * 200 Content type application/json Copy Expand all Collapse all { * "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", * "login_provider_id": "string", * "login_provider_name": "feide", * "full_name": "string", * "display_name": "string", * "email": "string", * "mobile_number": "string", * "status": "active", * "role": "admin", * "organizations": [ ] } LOGIN FEIDE GET 'Proxy' for the Feide login endpoint. Redirects to Feide login page. Other services can use this endpoint to initiate a login flow with Feide. A redirect URL is stored in the session for later use. Args: redirect_url (str): The URL to redirect to after the login flow is completed. request (Request): The request object. Returns: RedirectResponse: Redirects to the Feide login page. QUERY PARAMETERS redirect_url required string (Redirect Url) RESPONSES 200 Successful Response 422 Validation Error get/auth/external/feide/login https://prod.neddy-identity-provider.iterate.iterapp.no/auth/external/feide/login RESPONSE SAMPLES * 200 * 422 Content type application/json Copy null LOGOUT 'Proxy' for the Feide logout endpoint. Redirects to Feide logout page. Other services can use this endpoint to initiate a logout flow with Feide. AUTHORIZATIONS: HTTPBearer REQUEST BODY SCHEMA: APPLICATION/JSON login_provider_id Login Provider Id (string) or Login Provider Id (null) (Login Provider Id) redirect_url required string (Redirect Url) RESPONSES 200 Successful Response 422 Validation Error post/auth/external/feide/logout https://prod.neddy-identity-provider.iterate.iterapp.no/auth/external/feide/logout REQUEST SAMPLES * Payload Content type application/json Copy { * "login_provider_id": "string", * "redirect_url": "string" } RESPONSE SAMPLES * 200 * 422 Content type application/json Copy null GET USER CALLBACK AUTHORIZATIONS: HTTPBearer RESPONSES 200 Successful Response get/auth/external/feide/callback https://prod.neddy-identity-provider.iterate.iterapp.no/auth/external/feide/callback RESPONSE SAMPLES * 200 Content type application/json Copy null FEIDE FEIDE AUTH Callback endpoint for Feide authentication. This endpoint is called by Feide after the user has authenticated. The endpoint stores the Feide Access Token in the session, retrieves the redirect URL and then redirects the user back to the original service. Args: request (Request): The request object. Returns: RedirectResponse: Redirects to the original service. RESPONSES 200 Successful Response get/auth/external/feide/auth https://prod.neddy-identity-provider.iterate.iterapp.no/auth/external/feide/auth RESPONSE SAMPLES * 200 Content type application/json Copy Expand all Collapse all { * "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", * "login_provider_id": "string", * "login_provider_name": "feide", * "full_name": "string", * "display_name": "string", * "email": "string", * "mobile_number": "string", * "status": "active", * "role": "admin", * "organizations": [ ] } LOGIN FEIDE GET 'Proxy' for the Feide login endpoint. Redirects to Feide login page. Other services can use this endpoint to initiate a login flow with Feide. A redirect URL is stored in the session for later use. Args: redirect_url (str): The URL to redirect to after the login flow is completed. request (Request): The request object. Returns: RedirectResponse: Redirects to the Feide login page. QUERY PARAMETERS redirect_url required string (Redirect Url) RESPONSES 200 Successful Response 422 Validation Error get/auth/external/feide/login https://prod.neddy-identity-provider.iterate.iterapp.no/auth/external/feide/login RESPONSE SAMPLES * 200 * 422 Content type application/json Copy null LOGOUT 'Proxy' for the Feide logout endpoint. Redirects to Feide logout page. Other services can use this endpoint to initiate a logout flow with Feide. AUTHORIZATIONS: HTTPBearer REQUEST BODY SCHEMA: APPLICATION/JSON login_provider_id Login Provider Id (string) or Login Provider Id (null) (Login Provider Id) redirect_url required string (Redirect Url) RESPONSES 200 Successful Response 422 Validation Error post/auth/external/feide/logout https://prod.neddy-identity-provider.iterate.iterapp.no/auth/external/feide/logout REQUEST SAMPLES * Payload Content type application/json Copy { * "login_provider_id": "string", * "redirect_url": "string" } RESPONSE SAMPLES * 200 * 422 Content type application/json Copy null GET USER CALLBACK AUTHORIZATIONS: HTTPBearer RESPONSES 200 Successful Response get/auth/external/feide/callback https://prod.neddy-identity-provider.iterate.iterapp.no/auth/external/feide/callback RESPONSE SAMPLES * 200 Content type application/json Copy null ORGANIZATIONS GET ORGANIZATION GROUPS Get groups for an organization AUTHORIZATIONS: HTTPBearer REQUEST BODY SCHEMA: APPLICATION/JSON organization_id required string (Organization Id) RESPONSES 200 Successful Response 422 Validation Error post/organizations/groups/get-groups https://prod.neddy-identity-provider.iterate.iterapp.no/organizations/groups/get-groups REQUEST SAMPLES * Payload Content type application/json Copy { * "organization_id": "string" } RESPONSE SAMPLES * 200 * 422 Content type application/json Copy Expand all Collapse all [ * { * "id": "string", * "display_name": "string", * "go_type": "string", * "type": "string", * "member_count": 0 } ] GET GROUP MEMBERS Get members of a group AUTHORIZATIONS: HTTPBearer REQUEST BODY SCHEMA: APPLICATION/JSON group_id required string (Group Id) RESPONSES 200 Successful Response 422 Validation Error post/organizations/groups/get-group-members https://prod.neddy-identity-provider.iterate.iterapp.no/organizations/groups/get-group-members REQUEST SAMPLES * Payload Content type application/json Copy { * "group_id": "string" } RESPONSE SAMPLES * 200 * 422 Content type application/json Copy Expand all Collapse all [ * { * "membership": { * "basic": "string", * "affiliation": [ * "string" ], * "display_name": { * "property1": "string", * "property2": "string" } }, * "name": "string", * "userid_sec": [ * "string" ] } ] GET ALL ORGANIZATIONS Get all organizations AUTHORIZATIONS: HTTPBearer QUERY PARAMETERS skip integer (Skip) Default: 0 limit integer (Limit) Default: 100 RESPONSES 200 Successful Response 422 Validation Error get/organizations/all https://prod.neddy-identity-provider.iterate.iterapp.no/organizations/all RESPONSE SAMPLES * 200 * 422 Content type application/json Copy Expand all Collapse all [ * { * "id": "string", * "name": "string", * "origin": "neddy" } ] GET ORGANIZATION BY ID Get organization by ID AUTHORIZATIONS: HTTPBearer QUERY PARAMETERS organization_id required string (Organization Id) RESPONSES 200 Successful Response 422 Validation Error get/organizations https://prod.neddy-identity-provider.iterate.iterapp.no/organizations RESPONSE SAMPLES * 200 * 422 Content type application/json Copy { * "id": "string", * "name": "string", * "origin": "neddy" } CREATE ORGANIZATION Create an organization AUTHORIZATIONS: HTTPBearer REQUEST BODY SCHEMA: APPLICATION/JSON id Id (string) or Id (null) (Id) name Name (string) or Name (null) (Name) origin required string (OrganizationOrigin) Enum: "neddy" "feide" RESPONSES 200 Successful Response 422 Validation Error post/organizations https://prod.neddy-identity-provider.iterate.iterapp.no/organizations REQUEST SAMPLES * Payload Content type application/json Copy { * "id": "string", * "name": "string", * "origin": "neddy" } RESPONSE SAMPLES * 200 * 422 Content type application/json Copy Expand all Collapse all { * "id": "string", * "name": "string", * "origin": "neddy", * "users": [ ] } UPDATE ORGANIZATION Update an organization AUTHORIZATIONS: HTTPBearer QUERY PARAMETERS organization_id required string (Organization Id) REQUEST BODY SCHEMA: APPLICATION/JSON name required Name (string) or Name (null) (Name) origin required OrganizationOrigin (string) or null RESPONSES 200 Successful Response 422 Validation Error patch/organizations https://prod.neddy-identity-provider.iterate.iterapp.no/organizations REQUEST SAMPLES * Payload Content type application/json Copy { * "name": "string", * "origin": "neddy" } RESPONSE SAMPLES * 200 * 422 Content type application/json Copy null DELETE ORGANIZATION Delete an organization AUTHORIZATIONS: HTTPBearer QUERY PARAMETERS organization_id required string (Organization Id) RESPONSES 200 Successful Response 422 Validation Error delete/organizations https://prod.neddy-identity-provider.iterate.iterapp.no/organizations RESPONSE SAMPLES * 200 * 422 Content type application/json Copy null GROUPS GET ORGANIZATION GROUPS Get groups for an organization AUTHORIZATIONS: HTTPBearer REQUEST BODY SCHEMA: APPLICATION/JSON organization_id required string (Organization Id) RESPONSES 200 Successful Response 422 Validation Error post/organizations/groups/get-groups https://prod.neddy-identity-provider.iterate.iterapp.no/organizations/groups/get-groups REQUEST SAMPLES * Payload Content type application/json Copy { * "organization_id": "string" } RESPONSE SAMPLES * 200 * 422 Content type application/json Copy Expand all Collapse all [ * { * "id": "string", * "display_name": "string", * "go_type": "string", * "type": "string", * "member_count": 0 } ] GET GROUP MEMBERS Get members of a group AUTHORIZATIONS: HTTPBearer REQUEST BODY SCHEMA: APPLICATION/JSON group_id required string (Group Id) RESPONSES 200 Successful Response 422 Validation Error post/organizations/groups/get-group-members https://prod.neddy-identity-provider.iterate.iterapp.no/organizations/groups/get-group-members REQUEST SAMPLES * Payload Content type application/json Copy { * "group_id": "string" } RESPONSE SAMPLES * 200 * 422 Content type application/json Copy Expand all Collapse all [ * { * "membership": { * "basic": "string", * "affiliation": [ * "string" ], * "display_name": { * "property1": "string", * "property2": "string" } }, * "name": "string", * "userid_sec": [ * "string" ] } ] IMPORT GROUPS Trigger group import in feide-group-sync app NOTE: THIS IS A CONVENIENCE ROUTE AND SHOULD BE REMOVED WHEN WE ARE ABLE TO TRIGGER THE GROUP IMPORT DIRECTLY FROM WITHIN THE NETWORK. AUTHORIZATIONS: HTTPBearer RESPONSES 200 Successful Response get/organizations/groups/import-groups https://prod.neddy-identity-provider.iterate.iterapp.no/organizations/groups/import-groups RESPONSE SAMPLES * 200 Content type application/json Copy null IMPORT GROUP MEMBERS Trigger group member import in feide-group-sync app NOTE: THIS IS A CONVENIENCE ROUTE AND SHOULD BE REMOVED WHEN WE ARE ABLE TO TRIGGER THE GROUP IMPORT DIRECTLY FROM WITHIN THE NETWORK. AUTHORIZATIONS: HTTPBearer RESPONSES 200 Successful Response get/organizations/groups/import-group-members https://prod.neddy-identity-provider.iterate.iterapp.no/organizations/groups/import-group-members RESPONSE SAMPLES * 200 Content type application/json Copy null ADD FEIDE DOMAIN Add Feide organization to feide-group-sync app NOTE: THIS IS A CONVENIENCE ROUTE AND SHOULD BE REMOVED WHEN WE ARE ABLE TO ADD DOMAINS DIRECTLY FROM WITHIN THE NETWORK AUTHORIZATIONS: HTTPBearer REQUEST BODY SCHEMA: APPLICATION/JSON domain required string (Domain) RESPONSES 200 Successful Response 422 Validation Error post/organizations/groups/add-organization https://prod.neddy-identity-provider.iterate.iterapp.no/organizations/groups/add-organization REQUEST SAMPLES * Payload Content type application/json Copy { * "domain": "string" } RESPONSE SAMPLES * 200 * 422 Content type application/json Copy null REMOVE FEIDE DOMAIN Remove Feide organization to feide-group-sync app NOTE: THIS IS A CONVENIENCE ROUTE AND SHOULD BE REMOVED WHEN WE ARE ABLE TO REMOVE DOMAINS DIRECTLY FROM WITHIN THE NETWORK AUTHORIZATIONS: HTTPBearer REQUEST BODY SCHEMA: APPLICATION/JSON domain required string (Domain) RESPONSES 200 Successful Response 422 Validation Error post/organizations/groups/remove-organization https://prod.neddy-identity-provider.iterate.iterapp.no/organizations/groups/remove-organization REQUEST SAMPLES * Payload Content type application/json Copy { * "domain": "string" } RESPONSE SAMPLES * 200 * 422 Content type application/json Copy null LIST ORGANIZATIONS List Feide organizations from feide-group-sync app NOTE: THIS IS A CONVENIENCE ROUTE AND SHOULD BE REMOVED WHEN WE ARE ABLE TO LIST DOMAINS DIRECTLY FROM WITHIN THE NETWORK AUTHORIZATIONS: HTTPBearer RESPONSES 200 Successful Response get/organizations/groups/list-organizations https://prod.neddy-identity-provider.iterate.iterapp.no/organizations/groups/list-organizations RESPONSE SAMPLES * 200 Content type application/json Copy null USERS GET ALL USERS AUTHORIZATIONS: HTTPBearer QUERY PARAMETERS skip integer (Skip) Default: 0 limit integer (Limit) Default: 100 order_key Order Key (string) or Order Key (null) (Order Key) order_direction string (Order Direction) Default: "ascending" Enum: "ascending" "descending" RESPONSES 200 Successful Response 422 Validation Error get/users/all https://prod.neddy-identity-provider.iterate.iterapp.no/users/all RESPONSE SAMPLES * 200 * 422 Content type application/json Copy Expand all Collapse all [ * { * "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", * "login_provider_id": "string", * "login_provider_name": "feide", * "full_name": "string", * "display_name": "string", * "email": "string", * "mobile_number": "string", * "status": "active", * "role": "admin", * "organizations": [ ] } ] GET USERS BY LOGIN PROVIDER IDS Get users from a list of login_provider_ids AUTHORIZATIONS: HTTPBearer QUERY PARAMETERS skip integer (Skip) Default: 0 limit integer (Limit) Default: 100 order_key Order Key (string) or Order Key (null) (Order Key) order_direction string (Order Direction) Default: "ascending" Enum: "ascending" "descending" REQUEST BODY SCHEMA: APPLICATION/JSON login_provider_ids required Array of strings (Login Provider Ids) RESPONSES 200 Successful Response 422 Validation Error post/users/many https://prod.neddy-identity-provider.iterate.iterapp.no/users/many REQUEST SAMPLES * Payload Content type application/json Copy Expand all Collapse all { * "login_provider_ids": [ * "string" ] } RESPONSE SAMPLES * 200 * 422 Content type application/json Copy Expand all Collapse all [ * { * "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", * "login_provider_id": "string", * "login_provider_name": "feide", * "full_name": "string", * "display_name": "string", * "email": "string", * "mobile_number": "string", * "status": "active", * "role": "admin", * "organizations": [ ] } ] GET USER AUTHORIZATIONS: HTTPBearer QUERY PARAMETERS login_provider_id required string (Login Provider Id) RESPONSES 200 Successful Response 422 Validation Error get/users https://prod.neddy-identity-provider.iterate.iterapp.no/users RESPONSE SAMPLES * 200 * 422 Content type application/json Copy Expand all Collapse all { * "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", * "login_provider_id": "string", * "login_provider_name": "feide", * "full_name": "string", * "display_name": "string", * "email": "string", * "mobile_number": "string", * "status": "active", * "role": "admin", * "organizations": [ ] } CREATE USER AUTHORIZATIONS: HTTPBearer REQUEST BODY SCHEMA: APPLICATION/JSON login_provider_id required string (Login Provider Id) login_provider_name string (LoginProvider) Default: "neddy" Enum: "feide" "neddy" full_name required string (Full Name) display_name required string (Display Name) email required Email (string) or Email (null) (Email) mobile_number required Mobile Number (string) or Mobile Number (null) (Mobile Number) password required string (Password) status required string (UserStatus) Enum: "active" "inactive" role required string (UserRole) Enum: "admin" "buyer" "supplier" "user" organizations Array of strings <uuid> (Organizations) Default: [] RESPONSES 200 Successful Response 422 Validation Error post/users https://prod.neddy-identity-provider.iterate.iterapp.no/users REQUEST SAMPLES * Payload Content type application/json Copy Expand all Collapse all { * "login_provider_id": "string", * "login_provider_name": "neddy", * "full_name": "string", * "display_name": "string", * "email": "string", * "mobile_number": "string", * "password": "string", * "status": "active", * "role": "admin", * "organizations": [ ] } RESPONSE SAMPLES * 200 * 422 Content type application/json Copy Expand all Collapse all { * "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", * "login_provider_id": "string", * "login_provider_name": "feide", * "full_name": "string", * "display_name": "string", * "email": "string", * "mobile_number": "string", * "status": "active", * "role": "admin", * "organizations": [ ] } UPDATE USER AUTHORIZATIONS: HTTPBearer QUERY PARAMETERS login_provider_id required string (Login Provider Id) REQUEST BODY SCHEMA: APPLICATION/JSON full_name required string (Full Name) display_name required string (Display Name) email required Email (string) or Email (null) (Email) mobile_number required Mobile Number (string) or Mobile Number (null) (Mobile Number) organizations required Array of strings <uuid> (Organizations) RESPONSES 200 Successful Response 422 Validation Error patch/users https://prod.neddy-identity-provider.iterate.iterapp.no/users REQUEST SAMPLES * Payload Content type application/json Copy Expand all Collapse all { * "full_name": "string", * "display_name": "string", * "email": "string", * "mobile_number": "string", * "organizations": [ * "497f6eca-6276-4993-bfeb-53cbbbba6f08" ] } RESPONSE SAMPLES * 200 * 422 Content type application/json Copy Expand all Collapse all { * "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", * "login_provider_id": "string", * "login_provider_name": "feide", * "full_name": "string", * "display_name": "string", * "email": "string", * "mobile_number": "string", * "status": "active", * "role": "admin", * "organizations": [ ] } DELETE USER AUTHORIZATIONS: HTTPBearer QUERY PARAMETERS login_provider_id required string (Login Provider Id) RESPONSES 200 Successful Response 422 Validation Error delete/users https://prod.neddy-identity-provider.iterate.iterapp.no/users RESPONSE SAMPLES * 200 * 422 Content type application/json Copy null