I need to find what tables have been changed in the last period is it possible to get the xmin of all tables in a schema to find what has been changed or created in the last period in postgres, I have been trying with little success 

with tnames as (select tablename from pg_catalog.pg_tables
                 where schemaname = 'public' limit 1)
select max (xmin::text::bigint)
      ,tnames.tablename
from (select tablename from tnames)  as foo
You will need dynamic SQL for that. For example a table function, that loops through the table names in the schema, build each query, execute them and return their results.

CREATE 
 OR REPLACE FUNCTION xmins
                     (_schemaname name DEFAULT 'public')
                     RETURNS TABLE (tablename name,
                                    maxxmin xid)
AS
$$
DECLARE
  r RECORD;
BEGIN
  FOR r IN (SELECT t.tablename
                   FROM pg_catalog.pg_tables t
                   WHERE t.schemaname = _schemaname) LOOP
    RETURN QUERY EXECUTE '
SELECT ''' || r.tablename || '''::name,
       max(xmin::text::integer)::text::xid
       FROM ' || r.tablename || ';';
  END LOOP;

  RETURN;
END;
$$
LANGUAGE plpgsql;

SELECT * FROM xmins();